令人激动的语音UI背后

喔家archiself
关注

亚马逊Echo和Echo Dot智能音箱获得了成功,它已经使语音命令(通常称为语音UI或语音UI)出现在了新技术产品中。在每一部智能手机和平板电脑上,大多数新型汽车上,以及快速增长的音频产品中,都有这个功能。最终,大多数家用电器,音频和视频产品,甚至像健身跟踪器这样的可穿戴设备,最终也都会有语音命令功能。

“所需信号(用户的声音)与噪声(任何其他声音)的比率越好,语音UI系统越更可靠地工作。“

现在,数以百万计的语音UI产品已经出现,开始看到消费者对这些设备的预期——以及满足这些期望的挑战性。有限的成功以及更原始的语音命令产品表明,除了了解唤醒词,比如"Alexa"或者"OK Google",消费者不愿意适应这些产品可能对他们的其他要求,比如按下按钮叫醒设备,或直接进入远程控制。至少在家里,消费者期望一个语音UI产品来响应来自房间的指令,如果可能的话,甚至是来自不同房间的指令。无论房间的声学特性如何,不管产品放在房间的哪个位置,都期望可靠的声音识别,希望语音UI即使在中等噪音的环境噪声下也能工作。

虽然先进的语音识别系统依赖于基于互联网的计算能力,但语音UI系统的大部分性能取决于系统接收的语音信号质量。"garbage in, garbage out",同样适用于这些系统,就像它适用于任何其他技术一样。对噪音(任何其他声音)所需信号(用户的声音)的比例越好,语音UI系统就越可靠。

语音UI系统使用多个麦克风接收指令,声音识别系统的准确性很大程度上取决于这些阵列是否能够专注于用户的声音,以及拒绝不必要的刺激,如环境噪声或设备本身发出的声音。对于优化这些阵列和控制算法的大多数研究都是开发这些产品的公司密切关注的,这使得产品开发者较少。

让事情变得复杂的是对麦克风阵列设计的不熟悉。 虽然无数的工程师拥有扩音器设计和应用方面的专业知识,但在麦克风上经验要少得多——尽管大多数工程师的耳朵通常能够对扬声器的问题有一个粗略的概念,但是要评估麦克风的性能则要困难得多。 当一个阵列的麦克风数量成倍增加时,挑战就变得越来越复杂。 现在,工程师必须确定哪些类型的麦克风最适合阵列使用,使用的麦克风数量,以及放置的物理配置。

然后需要一个处理算法,使麦克阵列能够识别用户声音的方向,并在拒绝其他声音的同时专注于这个声音。许多这样的算法都是可用的,但所有的算法都必须优化,以适应麦克风的性能,阵列的大小和配置,以及安装外壳的声学效果。

语音UI中使用的麦克风

在语音UI产品中使用的几乎都是单音麦克风。MEMS(Micro Electrical Mechanical Systems)在设计语音UI产品的麦克风阵列中有许多优势:

小尺寸: MEMS通常每边不超过5毫米,因此可以在一个小的产品中安装多达7个麦克风。表面安装设计进一步减少了他们的痕迹。

低成本: 随着产品中麦克风数量的增加,成本成为一个重要的考虑因素。 MEMS集成电路往往是廉价的,它们也可以与具有PDM (脉冲数字调制)端口的处理器直接接口,而不需要昂贵的A/D转换器。

一致性: 麦克风阵列的可预测功能要求阵列中的多个指标匹配良好。由于 MEMS麦克风的制造采用了一个完全自动化的过程,就像用来制造IC一样,所以单元间的一致性通常是好的。

在语音UI产品中使用的大多数麦克风都是全向的,可以从各个方向接收声音。 由于麦克风阵列的方向性是通过一种算法而不是通过麦克固有的方向性来构建的,所以使用全向麦克可以让算法在处理各种麦克风信号时在拾取波束的方式上具有完全的灵活性。

全向麦克的另一个好处是,它们比定向麦克风更能满足频率响应。这种特性降低了算法的处理负载,因此,在产品组装中的方向不再是问题。在可用的MEMS 麦克风选择中,麦克风阵列设计师可以从敏感性、噪声、频率响应匹配以及数字和模拟输出等一系列功能和特性中进行选择。

语音UI算法的组件

语音UI产品中的算法实际上是几种算法的集合,每个算法都有一个特定的功能,可以帮助麦克风阵列专注于用户的声音,忽略不需要的声音。下面是语音UI中通常算法的简要描述。

触发/唤醒词

语音UI系统使用一个指定的唤醒词,如"Alexa"或者"OK Google"——用户使用这个单词来激活语音UI设备。这个唤醒词会有挑战的,因为设备必须立即在设备上使用自己的算法进行识别,而使用互联网资源会造成太多的延迟。设备必须在某种程度上保持活跃,因为它必须不断地监听唤醒词。

选择一个合适的唤醒词,对操作语音UI设备至关重要。唤醒词必须足够复杂,以便在麦克风输出处产生一个独特的波形,该算法可以很容易地区分出正常的语音,否则成功识别的百分比可能低得令人无法接受。唤醒词不能是通常使用的单词或短语,否则误唤醒的频率可能高得令人无法接受。它也不应该太长,因为越长的短语,用户就越有可能认为这个设备很糟糕。通常,用三到五个音节的唤醒词是最好的选择。

在评估唤醒词算法的性能时,需要考虑两个主要因素。首先,当没有唤醒时,算法多久会指示一个唤醒? 这被测量为每小时误唤醒。其次,算法在背景噪声的存在下能否正确地检测到唤醒词?这是以识别率来衡量的。

大多数唤醒算法都有不同的尺寸。 小型的算法可以减少内存和CPU处理,但会有多一些的错误; 大型算法需要更多的资源,但是犯错更少。模型也是可调整的,允许产品设计师使他们更严格(更少的误唤醒但较难唤醒)或者更宽松(更多的误唤醒但更容易唤醒)。大多数产品设计师选择更加严格的调整,因为当用户在发布命令时往往会接受偶尔重复自己的话,但他们对误唤醒却不那么宽容。

"选择一个合适的唤醒词以纳入算法,是唤醒词识别的关键,从而操作语音UI设备。"

假唤醒是通过播放数小时的口语内容并计算误唤醒的频率来衡量的。在这个测试中,不同的模型大小在性能上的差异变得很明显。图1比较了用于不同调优的小型、中型和大型唤醒词模型的性能。 在这种情况下,每小时不超过一次的错误触发是一个合理的目标。 这个小模型只能通过图左边两个最严格的调整来实现这一点。 中型和大型模型在更广泛的操作范围内实现这一目标。

图1: 用小型、中型和大型算法模型测试每小时误唤醒,左边更严格,右边更宽松

在测量噪声唤醒算法的性能时,研究表明,在环境噪音的存在下,决定唤醒识别率的主要因素是在麦克风上测量的信噪比(SNR)。"信号"表示人的声音对着麦克风的声音有多大,而"噪音"是背景噪音的水平。 在测试中,使用"babble"噪音来模拟家庭中典型的噪音和波形。 图2显示了三个模型大小的图形,所有模型已经调整到每小时不到两个错误的误唤醒。X轴代表 SNR,其较高的信噪比向右。 Y轴是识别的概率。 在大多数情况下,算法在1或2分贝内有相同的性能。

我们应该注意到,相对于大多数音频播放设备的SNR为80至120分贝,10分贝左右的信噪比似乎是不可接受的。 然而,在语音UI应用程序中,用户的声音通常只比周围噪音大几分贝,如下图所示,10到20分贝的 SNR 可以在语音UI应用程序中提供的结果。 因此,尽管在音频播放系统中同样的增长在主观上是不易察觉的,但SNR增加2分贝可以显著提高语音UI的性能,。

"... SNR 增加2分贝可以显著提高语音UI的性能,即使同样的增长在主观上在音频播放系统中是不明显的。"

图2: 触发单词检测作为 SNR 函数的性能。 三种不同模式测试,模型越大,性能越好。

DOA 波达方向

一旦唤醒词被识别,下一步就是确定用户声音的到达方向。 一旦确定了方向,DOA算法就会告诉beamformer算法把注意力集中在哪个方向。

DOA算法的核心功能是检查阵列中不同的麦克风发出信号的相位或时延关系,并利用这些信息确定哪一个麦克风首先接收声音。 然而,这个任务比看起来要复杂得多。 由于房间里的墙壁、地板、天花板和其他物体的反射,用户的声音也会从其他方向传来,而不仅仅是直接从用户的嘴里传来。 最初的声音是所有的 DOA确定所需要的,后来的反射必须被过滤掉。 为此,DOA 算法包括优先逻辑,它将较大声音的初始到达和较为安静的反射分开。这个功能通过电子方式消除了房间内的声音反射,如果仔细调整,这个算法甚至能够拒绝附近表面的反射,比如在一个智能音箱的后面有一堵墙。

通过对环境噪声水平的自动调整,增强了 DOA 算法的运算效果。该算法测量房间内的平均噪音水平,并且只有当输入的信号至少超过环境噪声一定的分贝时,才会重新计算用户的发声位置。 这样,系统就可以锁定一个特定的方向,而不会被相对较低的噪音分散注意力。

测量 DOA 算法的准确性,需要通过将麦克风阵列周围的8个扬声器均匀地分布在半径1米的圆上,以此来测量 DOA 算法的准确性。 所有8个扬声器都播放漫反射场背景噪音,而一个扬声器除了发出噪音之外还有唤醒词。声音水平固定在60 dBa, 测量的麦克风和漫反射场噪音的水平是不同的,如图3所示。

图3: 矩阵显示波达方向测试的结果。

行索引对应声音来自的实际方向; 列索引表示 DOA 算法返回的方向。

将矩阵压缩成一个数字,代表算法在特定噪音水平上的整体精确性。 在 DOA 算法中,根据它们与正确值的距离来权衡错误,因此使用的单数结果是某个 SNR 的度数误差。图4显示DOA算法在一个非常小的平均误差下运行良好。

图4: DOA 综合结果。

X轴代表了唤醒词的信噪比,Y轴是偏差误差。

DOA算法在大于0 dB的SNR上开始提供有效性能,SNR的精确性能在5dB以上。

AEC 回声消除

在一个集成了扬声器或汽车音响系统的语音UI设备中,干扰语音指令的一种噪音来源是扬声器本身,它可以播放声音反馈、音乐、收音机等等。 语音UI设备必须在麦克录音时减去扬声器发出的声音。

这看起来可能很简单,就像将扬声器的反相信号与来自麦克风的信号混合,稍加延迟,以弥补声音从扬声器传到麦克风所需的时间。 然而,这个过程仅仅是一个 AEC 算法的起点; 它不足以处理现实世界应用程序所带来的许多复杂问题。

第一个复杂因素是,扬声器、用于平衡扬声器的 DSP 和阵列中使用的麦克风可能被具体材料改变了波形。 幸运的是,可以将麦克的输入信号与原(dsp)输入信号进行比较,并计算出修正曲线。

然而,也受到声波反射的影响。 这些反射可能数以千计,在一个大的起居室里,他们可能在发言者发出直接声音后一秒钟内后到达麦克风。根据房间模式和房间家具的吸收效果,反射谱含量将不同于说话者直接声音的内容。 这些影响在每个环境中都会有所不同,而且随着人们和宠物在房间里走动,或者随着车内乘客数量的变化而改变。

为了从麦克风信号中减去足够多的声学回波以达到可接受的信噪比,AEC 算法必须在一定误差范围内寻找与材料相匹配的声音(以弥补声学引起的波形变化) ,并且在一个定义的时间窗口上对应于预期的混响时间。 由于阵列中的麦克风之间的距离,每个麦克风接收到一组略微不同的回声和来自扬声器的不同直接声音,所以实现最大的信噪比需要对每个麦克风进行单独的 AEC 处理。

回波消除器的性能通常由其"回波返回损耗增强"或 ERLE 来定义。 这是增益的减少,回波消除器能够减少在麦克风上的扬声器信号。 回波消除器一般可以取消至少25分贝,具有良好的性能,最好的可以取消超过30分贝。

AEC寻找反射的时间被称为"回声尾长" 回波尾长度越长,可以取消的反射越多,算法的性能就越好。 然而,更长的波尾需要更多的内存和CPU。图5显示了回波返回损失作为尾长的函数。 这种测量是在一个半消声室中进行的。可以看到,大部分都是通过200毫秒的尾长和较长的波尾来实现的。

图5: 回波消除器的性能作为尾长的函数。

测量是在一个半回声的声音室进行,表明200毫秒之后几乎没有改善。

半回声的房间是相当容易处理,但不代表真实世界的使用。 图6显示了回波消除器在逐渐增加的混响室中的性能。 现在对于更长声尾的需求是显而易见的,最大的反射空间可以从更长的回声尾中受益。

图5: 4个房间中的回声消除测试

当扬声器以线性方式执行时,AEC 算法的性能更好。 如果扬声器在很大的程度上表现出失真,那么将产生失真谐波,而 AEC 将不会认识到这些是原反射,因此不能取消它们。 扬声器的总谐波失真(或 THD)是其线性程度的度量。 THD 占信号水平的百分比越低,说话人的行为就越灵活。 由于 AEC 无法取消,扬声器的失真将出现在 AEC 的输出中。

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存