远场麦克风(麦克风阵列)-智能列中不起眼的英雄

在本文中,我想谈一谈我长期以来的热情-研究和使用远场麦克风(麦克风阵列)-麦克风阵列。


对于那些喜欢构建语音助手的人来说,这篇文章会很有趣,它将向那些认为工程学是一门艺术,并且想尝试自己扮演Q角色的人回答一些问题( 这来自Bond )。 我的谦虚故事,希望它可以帮助您理解为什么严格按照本教程制作的智能助手专栏仅在完全没有噪音的情况下才能很好地工作。 如此糟糕的是,例如在厨房里。


许多年前,我对编程产生了兴趣,我开始编写代码只是因为明智的老师只允许我玩自己编写的游戏。 那是87年​​,是Yamaha MSX。 在这个问题上,还有一家初创公司。 一切都严格按照智慧来进行:“按自己的喜好选择一份工作,一生中就不必工作一天”(孔子)。


这么多年过去了,我仍在编写代码。 即使是有代码的业余爱好-轮滑之外,它都可以使大脑变暖,并且“我不会忘记matan”,这与Far Fields麦克风(麦克风阵列)配合使用。 老师没有花时间陪我。


它是什么以及在哪里应用


听您的语音助手通常配有一系列麦克风。 我们在视频会议系统中找到它们。 在集体交流中,大部分注意力都集中在语音上,当然,在交流时,我们不会经常看着说话者,而是用麦克风或头戴式耳机准确地讲话是很不方便的。


几乎每个人,受人尊敬的客户,移动电话制造商都在其作品中使用2个或更多麦克风(是的,是的,在这些孔的后面,上方,下方,后面都有麦克风)。 例如,在iPhone 3G / 3GS中,他是唯一的一个,在第四代iPhone中有两个,在第五代中已经有三个麦克风。 通常,这也是麦克风阵列。 所有这些都可以提高声音的可听性。


但是回到我们的语音助手


如何增加听力范围?


“需要大耳朵”


一个简单的想法:如果要听到附近的声音,只用一个麦克风就足够了,那么为了远距离聆听,您需要使用价格昂贵的带有反射器的麦克风,类似于狐狸的耳朵:



(维基百科)




实际上,这不是毛茸茸套件的一部分,而是猎人和侦察兵的重要装备。



一样,只在谐振管上



在栖息地。


(摘自https://forum.guns.ru



镜子直径从200mm到1.5m


(有关更多信息,请参见http://elektronicspy.narod.ru/next.html


“需要更多的麦克风”


或者,也许如果您放了很多便宜的麦克风,那么数量就会变成质量,一切都会变好吗? Zerghrash仅适用于麦克风。


奇怪,但它在现实生活中起作用。 确实有很多Matan,但确实有效。 我们将在下一节中讨论这一点。


以及如何在没有优美的号角的情况下进一步聆听?



喇叭系统的问题之一是您可以清楚地听到重点。 但是,如果您需要从其他方向听到一些声音,则需要“用耳朵听”,然后将系统实际重定向到另一个方向。


关于带有麦克风矩阵的系统中的信噪比,与传统麦克风相比,它要好一些。


在麦克风阵列中,以及在它们最接近的近亲中-PAR(相控阵天线)中,您都不需要转动任何东西。 在“波束成形”部分中了解更多信息。 容易看到:



未聚焦的麦克风(左图)会记录来自各个方向的所有声音,而不仅仅是您需要的声音。


大范围来自哪里? 在右图中,麦克风仅专注于聆听一个音源。 仿佛聚焦一样,它仅从选定的源接收信号,而不从可能的噪声源接收信号,并且无需使用复杂的降噪技术即可简单地放大(使声音变大)纯信号。 有点像烟嘴,但磨砂牵引力。


降噪有什么问题?


当应用复杂的降噪功能时,很多缺陷意味着信号的一部分将消失,信号的一部分将消失,声音将发生变化,并且在耳朵上看起来像是经过降噪和难以辨认的声音的特征性着色。 想要从对话者那里听到这些嘶嘶声的俄语使用者可以看到这种难以辨认的声音。 嗯,此外,由于降低了噪音,听者没有听到任何将其与对话者连接的识别信号(呼吸,嗅探和其他伴随现场语音的噪音)。 这就产生了一些问题,因为在口语中,所有这些都被听到了,并且仅有助于评估对话者对您的状态和态度。 当我们听到声音时,它们的缺失(噪音)会引起不愉快的感觉,并降低感知,理解和识别的水平。 好吧,如果语音助手在听您的话,那么降噪功能将很难同时识别关键短语和语音。 没错,这是一个骗局-您需要在记录的样本上训练识别器,同时考虑到所使用的降噪带来的失真。


那些熟悉鸡尾酒会问题这个词的人仍然可以去喝咖啡或鸡尾酒,并进行田野实验,那些有阅读​​意愿的人则可以继续学习。



简要介绍它的工作原理:


DOA估计(确定声源的方向)和波束成形


DOA(方向确定,以及在可能的情况下定位到源):
我会很简短,因为主题非常广泛,这是借助白色,灰色或深色魔术(取决于IDE中的首选主题)和Matan来完成的。 主要 播放DOA的一种常用方法是分析成对的麦克风之间(通常直径相反)之间的相关性和其他因素。
hack:为了研究,最好选择一个圆形排列的麦克风阵列。 这样做的好处是,如果您将成对的和弦与指向源的方位角(方向)不同,则可以很容易地从麦克风之间距离不同的对中收集统计信息-直径最大,麦克风之间的距离最小。


波束形成-最简单,最容易理解的方法是-延迟与求和(DAS和FDAS)-基于延迟和求和的波束成形。


视觉效果:



(摘自http://www.labbookpages.co.uk/audio/beamforming/delaySum.html


生活技巧:不要忘记不同的波长,对于每个频率,我们都会计算出相位差tn


大致的辐射图将看起来像这样



详细信息和公式


那些没有忘记如何吸烟的人可以参加JIO-RLS(联合迭代子空间自适应降秩最小二乘)。 您知道,它与梯度下降的味道非常相似。



因此,我们总结:使用常规方法很难获得与矩阵麦克风相当的质量。 将方向的定义应用于源之后,因此,我们只听到了需要的源,就消除了介质的噪声和混响,即使是听不到的介质(哈斯效应)。


语音助手-内部外观


因此,经验丰富的语音助手的声音处理方案是什么样的:



来自麦克风阵列的信号被馈送到设备,在设备中我们将波束形成到声源(波束成形),从而消除了干扰。 然后,我们开始识别该射线的声音,通常这不足以对设备的资源进行高质量的识别,并且大多数情况下,信号会传递到云中进行识别(Microsoft,Google,Amazon会选择它)。


细心的读者会注意到:在带有说明的图片中,有一个单词“不是”的正方形,为什么不像承诺的那样立即识别?



为什么在图中可能会画出额外的正方形?


而且因为您不断从所有噪声源向Internet广播信号, 倾听 仅仅识别资源是不够的。 因此,只有当他们意识到自己确实想要我们的帮助时,我们才开始意识到-为此,他们说了一个特殊的咒语-好的Google,Siri或Alex,或者他们称我为a藤。 通告程序单词分类器通常是一个神经元,直接在设备上工作。 在分类器的构造中,还有很多有趣的事情,但是今天已经不那么重要了。


实际上,该图如下所示:



(我的涂鸦)


可以在不同的信号源上形成几条射线,我们正在每个中寻找一个特殊的词。 但是,我们将进一步处理说出正确单词的人。


下一步是在云中进行识别,并在Internet上反复进行讨论,上面有很多教程。


你怎么能参加这个假期matana


购买开发板的最简单方法。 现有开发板概述:最为完整( 通过参考)之一


最适合初学者:


https://www.seeedstudio.com/ReSpeaker-4-Mic-Array-for-Raspberry-Pi-p-2941.html


https://www.seeedstudio.com/ReSpeaker-Mic-Array-v2-0-p-3053.html


基于XMOS XVF-3000。


我自己申请


如我所愿-具有开放接口的FPGA控制矩阵的麦克风,并通过SDA与之通信。


我跨越Android Things和Mic Array的壮举:


此板(语音)上肯定有很多示例,但是对我而言,在Things下使用它很方便。


事物的论点:


您可以构建一个灵活而强大的工具:


  • 您可以方便地将屏幕用作单独的设备
  • 可用作无头设备,即通过网络进行传输(创建用于传输到其他设备的api)
  • 调试方便
  • 许多库,包括通过网络传输的库;
  • 分析工具-很多。
  • 如果看起来有点,则可以连接Sishnoy库

例如,我使用:


  • 声音文件分析
  • HRTF,
  • 训练\建立分类器。

然后,如果您必须移植/重写某种形式的代码,则使用Java代码更容易做到这一点。


不幸的是,事物委员会作者的例子有点不起作用,所以我做了我的演示项目 (自然可以)。


简而言之,这就是Java的全部功能-快速轮询麦克风的所有黑魔法,我们使用C ++进行FFT,并进行可视化,分析和网络交互。


未来发展计划


计划和灵感的来源: ODAS



因此,我只想对事物进行处理,而不会出现故障。


  • 因为ODAS使用起来有点不方便。
  • 我需要一个正常的工具才能工作
  • 因为我可以并且我喜欢这个话题
  • 二手硬件工具可以满足任务的复杂性。

我的计划基于这个(我自己的)存储库


并提醒


“如果您有什么要补充或批评的地方,请在评论中毫不犹豫地写出来,因为一个头比两个头差,两个比三个头差,而n-1比n差”

Source: https://habr.com/ru/post/zh-CN431144/


All Articles