当前位置: 首页 > 科技观察

令人兴奋的语音UI背后是什么

时间:2023-03-14 15:54:23 科技观察

Amazon的Echo和EchoDot智能音箱的成功使得语音命令(通常称为VoiceUI或VoiceUI)出现在新技术产品中。它出现在每部智能手机和平板电脑上,出现在大多数新车中,出现在数量迅速增加的音频产品中。最终,大多数家用电器、音频和视频产品,甚至健身追踪器等可穿戴设备最终都将具备语音命令功能。“所需信号(用户的声音)与噪声(任何其他声音)的比率越好,语音UI系统的工作就越可靠。”现在,数以百万计的语音UI产品已经出现,消费者开始看到这些设备的期望——以及满足这些期望的挑战。有限的成功和更原始的语音命令产品表明,消费者不愿意适应这些产品可能对他们提出的要求,例如按下按钮唤醒设备,或直接访问远程控制。至少在家里,消费者希望语音UI产品能够响应来自整个房间的命令,如果可能的话,甚至可以响应来自不同房间的命令。无论房间的声学效果如何,也无论产品放置在房间的哪个位置,都需要可靠的语音识别,并希望语音UI即使在适度嘈杂的环境噪音中也能正常工作。虽然高级语音识别系统依赖于基于Internet的计算能力,但语音UI系统的大部分性能取决于系统接收到的语音信号的质量。“垃圾进,垃圾出”同样适用于这些系统,就像它适用于任何其他技术一样。所需信号(用户的声音)与噪声(任何其他声音)的比率越好,语音UI系统就越可靠。语音UI系统使用多个麦克风来接收指令,语音识别系统的准确性在很大程度上取决于这些阵列如何聚焦用户的声音并拒绝不需要的刺激,例如环境噪音或设备本身发出的声音。大多数优化这些阵列和控制算法的研究都受到开发这些产品的公司的密切关注,因此产品开发人员较少。使事情复杂化的是对麦克风阵列设计的不熟悉。尽管无数工程师拥有扬声器设计和应用方面的专业知识,但在麦克风方面的经验却少之又少——虽然大多数工程师的耳朵通常能够大致了解扬声器的问题,但很难对麦克风进行评估。性能要困难得多。当阵列中的麦克风数量成倍增加时,挑战变得更加复杂。现在,工程师必须确定哪种类型的麦克风最适合阵列使用、要使用的麦克风数量以及放置它们的物理配置。然后需要一种处理算法,使麦克风阵列能够识别用户语音的方向并专注于此,同时拒绝其他语音。许多此类算法都可用,但所有算法都必须进行优化以适应麦克风的性能、阵列的大小和配置以及安装外壳的声学效果。VoiceUI中使用的麦克风几乎都是VoiceUI产品中使用的单声道麦克风。MEMS(MicroElectricalMechanicalSystems)在为语音UI产品设计麦克风阵列方面有很多优势:体积小:MEMS通常每边不超过5mm,所以一个小产品最多可以安装7个麦克风。表面贴装设计进一步减少了它们的占地面积。低成本:随着产品中麦克风数量的增加,成本成为一个重要的考虑因素。MEMSIC往往很便宜,而且它们还可以直接与具有PDM(脉冲数字调制)端口的处理器连接,而无需昂贵的A/D转换器。一致性:麦克风阵列的可预测功能要求阵列中的多个指示器能够很好地匹配。由于MEMS麦克风是使用完全自动化的工艺制造的,就像用于制造IC的工艺一样,因此单元之间的一致性通常很好。大多数用于语音UI产品的麦克风都是全向的,可以拾取来自各个方向的声音。由于麦克风阵列的方向性是由算法而不是麦克风的固有方向性构成的,因此使用全向麦克风可以让算法在处理各种麦克风信号时完全灵活地选择波束。全向麦克风的另一个好处是它们具有比定向麦克风更好的频率响应。此功能减少了算法的处理负载,因此产品装配中的方向不再是问题。在可用的MEMS麦克风选项中,麦克风阵列设计人员可以从一系列功能和特性中进行选择,例如灵敏度、噪声、频率响应匹配以及数字和模拟输出。VoiceUI算法的组件VoiceUI产品中的算法实际上是几种算法的集合,每种算法都有特定的功能,可以帮助麦克风阵列专注于用户的声音并忽略不需要的声音。下面简单介绍一下语音UI中常用的算法。触发/唤醒词VoiceUI系统使用指定的唤醒词,例如“Alexa”或“OKGoogle”——用户用来激活VoiceUI设备的词。这个唤醒词将具有挑战性,因为必须使用自己的算法立即在设备上识别设备,并且使用互联网资源会导致太多延迟。该设备必须在某种程度上保持活动状态,因为它必须不断地监听唤醒词。选择合适的唤醒词对于操作语音UI设备至关重要。唤醒词必须足够复杂,才能在麦克风输出端产生独特的波形,算法可以轻松将其与正常语音区分开来,否则成功识别的百分比可能低得令人无法接受。唤醒词不能是常用的词或短语,否则错误唤醒的频率可能高得令人无法接受。它也不应该太长,因为短语越长,用户就越有可能认为设备很糟糕。通常,三到五个音节的唤醒词是最好的选择。在评估唤醒词算法的性能时,需要考虑两个主要因素。首先,当没有唤醒时,算法多久指示一次唤醒?这是按每小时的错误唤醒来衡量的。其次,该算法能否在存在背景噪声的情况下正确检测到唤醒词?这是通过识别率来衡量的。大多数唤醒算法都有不同的大小。较小的算法使用较少的内存和CPU处理,但更容易出错;更大的算法需要更多的资源,但错误更少。模型也是可调整的,允许产品设计人员将它们变得更严格(更少的错误唤醒但更难唤醒)或更宽松(更多的错误唤醒但更容易唤醒)。大多数产品设计人员选择更严格的调整,因为用户在发出命令时往往会接受自己偶尔重复,但他们对错误唤醒的容忍度较低。“选择合适的唤醒词并入算法是识别唤醒词以操作语音UI设备的关键。”通过播放几个小时的口语内容并计算错误唤醒的频率来测量错误唤醒。在此测试中,不同模型尺寸的性能差异变得明显。图1比较了小型、中型和大型唤醒词模型在不同调优下的性能。在这种情况下,每小时不超过一次误触发是一个合理的目标。这个小模型只能通过图表左侧的两个最严格的调整来做到这一点。中型和大型型号在更广泛的操作范围内实现了这一点。图1:使用小型、中型和大型算法模型测试的每小时误唤醒次数,左侧更严格,右侧更宽松在测量噪声唤醒算法的性能时,研究表明,决定唤醒的主要因素存在环境噪声时的识别率是在麦克风上测得的信噪比(SNR)。“信号”表示进入麦克风的人声有多大,而“噪音”是背景噪音的大小。在测试中,使用“babble”噪声来模拟在家中发现的典型噪声和波形。图2显示了三种型号尺寸的图表,所有型号都已调整为每小时少于两次误唤醒。X轴代表SNR,右边的SNR越高。Y轴是识别概率。在大多数情况下,算法在1或2dB内具有等效性能。我们应该注意到,对于大多数音频播放设备而言,相对于80到120dB的SNR,大约10dB的信噪比似乎是不可接受的。然而,在语音UI应用中,用户的声音通常只比周围的噪音大几分贝,如下图所示,10到20分贝的SNR可以在语音UI应用中提供结果。因此,SNR增加2dB可以显着改善语音UI的性能,尽管同样的增加在音频播放系统中主观上感觉不到。“...SNR增加2dB可以显着提高语音UI性能,即使同样的增加在音频播放系统中主观上并不明显。”图2:作为SNR函数的触发字检测性能。测试了三种不同的模型,模型越大,性能越好。DOA到达方向一旦识别出唤醒词,下一步就是确定用户语音的到达方向。一旦确定了方向,DOA算法就会告诉波束形成器算法关注哪个方向。DOA算法的核心功能是检查阵列中不同麦克风发出的信号的相位或延迟关系,并根据此信息确定哪个麦克风先接收到声音。然而,这项任务比看起来要复杂得多。由于墙壁、地板、天花板和房间内其他物体的反射,用户的声音也可能来自其他方向,而不仅仅是直接来自用户的嘴巴。确定DOA只需要初始声音,之后的反射必须滤除。为此,DOA算法包含优先级逻辑,可将最初到达的响亮声音与较安静的反射声分开。该功能以电子方式消除房间内的声音反射,如果仔细调整,该算法甚至可以拒绝附近表面的反射,例如智能扬声器后面的墙壁。通过对环境噪声水平的自动调整,增强了DOA算法的运行效果。该算法测量房间内的平均噪音水平,只有在输入信号超过环境噪音至少一定分贝时才会重新计算用户的声音位置。这样,系统就可以锁定特定方向,而不会被相对较低的噪音分散注意力。衡量DOA算法的精度需要通过在一个半径为1米的圆上将8个扬声器均匀分布在麦克风阵列周围来衡量DOA算法的精度。所有八个扬声器都播放扩散场背景噪音,而一个扬声器除了噪音之外还有一个唤醒词。声级固定为60dBa,测得的麦克风和扩散场噪声级不同,如图3所示。图3:显示到达方向测试结果的矩阵。行索引对应于声音来自的实际方向;列索引表示DOA算法返回的方向。将矩阵压缩成单个数字,代表算法在特定噪声水平下的整体精度。在DOA算法中,误差根据它们与正确值的距离进行加权,因此使用的奇异结果是某种SNR的误差度数。图4显示DOA算法运行良好,平均误差非常小。图4:DOA合成结果。X轴代表唤醒词的信噪比,Y轴是偏置误差。DOA算法在SNR大于0dB时开始提供有效性能,SNR准确性能在5dB以上。AEC回声消除在带有集成扬声器或汽车音响系统的语音UI设备中,可能干扰语音命令的噪声源之一是扬声器本身,它播放音频反馈、音乐、收音机等。语音UI设备必须在麦克风录音时减去扬声器的声音。这看起来就像将来自扬声器的异相信号与来自麦克风的信号混合一样简单,稍微延迟以补偿声音从扬声器传播到麦克风所需的时间。然而,这个过程只是AEC算法的起点;它不足以处理现实世界应用程序带来的许多复杂性。第一个复杂因素是扬声器、用于平衡扬声器的DSP以及阵列中使用的麦克风的波形可能会因特定材料而改变。幸运的是,可以将来自麦克风的输入信号与原始(dsp)输入信号进行比较并计算校正曲线。但是,它也会受到声波反射的影响。这些反射声数以千计,在大客厅中,它们可能会在扬声器直达声音的一秒内到达麦克风。根据房间模式和房间家具的吸收效果,反射的光谱内容将不同于说话者直接语音的内容。这些影响在每个环境中都会有所不同,并且会随着人和宠物在房间内四处走动或车内乘员人数的变化而变化。为了从麦克风信号中减去足够的声学回声以获得可接受的信噪比,AEC算法必须在一定的误差范围内找到与材料匹配的声音(以补偿声学引起的波形变化),并且在a定义的时间窗口对应于预期的混响时间。由于阵列中麦克风之间的距离,每个麦克风从扬声器接收到一组略有不同的回声和不同的直接声音,因此要实现最佳信噪比,需要对每个麦克风进行单独的AEC处理。回声消除器的性能通常由其“回声回波损耗增强”或ERLE定义。这是增益的降低,回声消除器降低麦克风扬声器信号的能力。性能好的回声消除器一般至少可以消除25分贝,最好的可以消除30分贝以上。AEC找到反射所花费的时间称为“回声尾长度”。回声尾长度越长,可以消除的反射越多,算法的性能越好。然而,更长的波尾需要更多的内存和CPU。图5显示了作为尾长函数的回波回波损耗。该测量在半消声室中进行。可以看出,这大部分是通过200毫秒的尾长和更长的波尾实现的。图5:作为尾长函数的回声消除器性能。测量是在半回声声室中进行的,200毫秒后几乎没有改善。半回声房间相当容易处理,但不能代表现实世界的使用。图6显示了回声消除器在混响增加的腔室中的性能。现在显然需要更长的尾巴,最大的反射空间可以受益于更长的回声尾巴。图5:4个房间的回声消除测试当扬声器以线性方式运行时,AEC算法的性能更好。如果扬声器出现严重失真,则会产生失真的谐波,而AEC不会将这些识别为原始反射,因此无法消除它们。扬声器的总谐波失真(或THD)是衡量其线性度的指标。THD占信号电平的百分比越低,扬声器的行为就越灵活。由于无法取消AEC,因此扬声器的失真会出现在AEC的输出中。例如,如果扬声器的THD为1%,则失真分量将比信号电平低40分贝。如果回声消除器的ERLE为30dB,则THD为1%是可以接受的。现在考虑10%THD。在这种情况下,失真分量比信号电平低20dB,这将淹没AEC。3%THD将产生小于30dB的失真,这仍然会影响AEC。测量整个系统很重要,包括扬声器和麦克风。测量扬声器的声音输出是不够的,因为许多语音UI产品中使用的外壳可以直接从扬声器传递到麦克风。考虑下一页图7中所示的图表。此图显示了使用外部参考麦克风测量的扬声器的THD。每行代表不同的播放级别。对于每个播放级别,记录了音频频谱中多个频率的测量SPL和THD。图中的圆形气泡表示测得的THD仅发生在高于3%THD的水平。扬声器的行为是线性的,只是在很大程度上失真。图7:使用外部麦克风测量扬声器失真。扬声器是线性的,只有在高声压级时才会失真。这种测量现在可以通过位于带有语音UI的典型“智能扬声器”外壳顶部的板载语音接收麦克风来重复使用。在这种情况下,结合500到800Hz范围内的500到800Hz麦克风,如图8所示,这是不可接受的;必须重新设计以增加刚度和更好的隔音效果。图8:同款音箱用产品自带麦克风测得的失真,声音会在500~800Hz之间失真。波束形成多麦克风阵列通常用于语音UI系统,因为多个麦克风允许阵列变得定向——专注于来自特定方向的声音。这个过程称为成型过程。它有助于隔离用户的声音,同时拒绝来自其他方向的声音,从而提高SNR。例如,如果用户在麦克风阵列的一侧,空调在另一侧,则空调的声音首先到达用户对面的麦克风,然后到达离用户最近的麦克风。算法使用这些时间差来抵消空调的声音,同时保留用户的声音。阵列中的麦克风越多,有效的波束成形就越好。具有两个麦克风的阵列消除声音的能力有限,但具有多个麦克风的阵列可以消除来自更多方向的声音。使用较少的麦克风,性能会随视角(用户语音与语音UI产品之间的角度)而变化。可以通过动态调整波束成形算法的性能来优化SNR。可以收紧波束宽度以更好地聚焦于用户的声音并更有效地拒绝来自其他方向的声音,但语音UI系统将需要评估和调整并确保波束聚焦于用户。这种努力增加了对系统的要求,因此大多数波束保持相当宽的波束。例如,典型的七麦克风阵列的波束宽度相对于DOA大约为60度。图9显示了波束成形消除背景噪声的能力。一个麦克风的频谱如上所示。底部数字是7麦克风输出。水平条纹是与语音信号相关的谐波,背景中的橙色/红色是响亮的噪音。理想的结果是条纹被暗区包围。在前束测量中,语音得以保留,背景噪音降低了6至7分贝。这在语音识别方面提供了显着的改进。图9:实施波束形成器以降低背景噪声,暗段对应于较低的信号水平。降噪尽管麦克风阵列系统使用定向拾音模式来滤除不需要的声音(例如噪音),但一些不需要的声音也可以通过一种将它们识别为信号分离功能的算法来减少或消除,然后去除不需要的声音。降噪算法可以在单个麦克风或阵列上运行,有助于识别唤醒词并提高语音UI性能。因此,降噪可用于语音UI信号处理链的多个阶段。语音命令是瞬态事件,而不是稳定状态。可以从麦克风阵列的信号中检测并消除任何现有或重复的声音。示例包括来自汽车的道路噪音,以及来自家中洗碗机和HVAC系统的噪音。也可以过滤高于或低于人类语音频谱的声音。降噪算法已被广泛使用多年,但其中大部分是针对移动应用而非语音UI进行优化的。他们倾向于强调对人类理解最重要的频谱,而不是最关键的声音分离和理解电子频谱中口头命令的系统。手机中使用的大多数降噪算法实际上会降低语音UI的性能。简而言之,人类听到的声音与语音UI系统不同。衡量降噪算法效果如何的一种方法是查看它在回声消除器的输出端提供了多少额外的信号dB。图10显示了DSP降噪算法在频域中的性能,将残余回声降低了高达12dB。图10:降噪算法对ERL的影响。曲线越高,衰减越大,效果越好。声音质量的主观改善立即得到认可,但它能提高语音识别算法的性能吗?这需要额外的测量来量化。图11再现了图2中的那些曲线,与原始内容相比,降噪使曲线向左移动2dB。实验结果表明,该算法提高了语音识别的整体性能。图11:降噪算法对ERL的影响。曲线越高,衰减越大,效果越好。这是对语音UI系统基本原理的理解。此外,可以研究不同麦克风阵列配置和不同麦克风选择的影响。检查这些效果后,工程师和产品设计团队可以为产品实现更可靠的性能。【本文来自专栏作家“老曹”原创文章,作者微信公众号:哦家ArchiSelf,id:wrieless-com】点此阅读更多本作者好文