浅谈 MATLAB 语音与声学应用 附振动力学基础与MATLAB应用下载

    ◆  

Part 2





混乱中的秩序——浅谈声源分离

首先,有很多初步尝试过语音指令识别的童鞋,觉得看似黑科技的智能音箱也不过如此云云。

其实关键词唤醒或者指令识别,仅是智能音箱设计工作的一小部分。一个粗略的构成图如下所示。

浅谈 MATLAB 语音与声学应用 附振动力学基础与MATLAB应用下载的图1

    ◆  

声源分离
实际使用场景中,往往会有多个声源,比如客厅里的电视、空调、聊天的家人、吵闹的小朋友,还有声音在墙壁和玻璃发生反射的回波。
如果希望在这样典型的使用环境中,正常使用语音唤醒和指令识别,那么就需要从这一些列采集到的声音中提取出,我们需要的那路声音。
这里介绍两种方法: 波束成形和基于掩模的深度学习音频分离。

    ◆  

1. 波束成形
从麦克风阵列得到的多通道音频信号,需要依次完成回声抵消,将音箱自己扬声器播放出去的声音抵消掉。
而后进行波束成形,估计说话人的空间方向,再针对说话人的方向进行波束成形,这样就只有特定方向的语音进入系统;
接下来还要进行去混响、降噪、自动增益控制(AGC), 然后才是您觉得简单的关键词唤醒等等。
您可以看到关键词识别、语音识别的深度学习仅仅是一小部分。
我们首先来聊聊这个麦克风阵列的波束成形。

浅谈 MATLAB 语音与声学应用 附振动力学基础与MATLAB应用下载的图2

因为,我们知道实际使用场景中,往往会有多个声源。
比如客厅里的电视、空调、聊天的家人、吵闹的小朋友,还有声音在墙壁和玻璃发生反射的回波。
如果希望在这样典型的使用环境中,正常使用语音唤醒和指令识别,就需要借助麦克风阵列进行声源定位,也就是 DoA 估计(Direction of Arrival Estimate)。
而后对从麦克风阵列得到的多通道音频,进行特定方向的波束成形,以尽量只对说话人方向的声音进行拾音,而抑制其他方向声音的干扰。
这里的麦克风阵列的设计和构成对声源的分离至关重要。
MATLAB 的相控阵工具箱可以对麦克风阵列进行设计与仿真。
比如下图,你可以方便的设计和仿真,这些常见的线阵、面阵,甚至于共形阵的麦克风阵列排布,也可以尝试采用不同的麦克风阵元带来的影响。

浅谈 MATLAB 语音与声学应用 附振动力学基础与MATLAB应用下载的图3

那么设计好麦克风阵列的基本设计后,我们还要涉及与之相对应的声源定位和波束成形算法,并进行硬件在环的验证…… 是不是有点麻烦?
MATLAB 提供了一系列 DoA 估计和波束成形的算法模块,如下视频所示您可以快速在 MATLAB 内,设计和尝试不同的 DoA 估计和波束成形的算法。
视频中演示了有三路声源, 男声、女声以及一群人大笑,混在一起难舍难分。
而后演示了,可以方便的通过波束成形,提取出需要的目标声源。


还可以直接实时连接麦克风阵列硬件,方便的在 MATLAB 内,直接进行声源定位和波束成形算法调试与硬件原型测试。


    ◆  

2. 采用深度学习的方式进行语音提取
以上介绍的方法是,采用传统的波束成形的方式,利用麦克风阵列的空间方向选择性,只选择性的接受特定方向上的语音指令。
然而在实际应用场景中,经常有多个说话人相距很近的情况,而麦克风阵列又由于尺寸、成本等多方面原因,只能提供比较有限的空间选择性(为获得高的方向选择性,就要尽量降低麦克风阵列的主瓣宽度,而这通常需要更多阵元,更大更复杂的麦克风阵列)。
于是,就有人想到了深度学习。
那有没有可能借助深度学习让算法自主从声音中提取出想要的那路语音信号呢?
因为,我们自身都有过这样的经历,就是即使在很嘈杂的环境中,人是可以轻松做到,只听一个人交谈的声音的。
而人类的双耳,根本无法执行波束成形对吧?
这里,为大家介绍一种 基于掩模(mask)的深度学习声源提取方式 【1】
这里使用的方法,其实就是将每一路的声音信号转化为对应的声谱图(spectrogram),而后基于深度学习对每一路声音去估计出其对应的掩模(mask)。
这个掩模其实就是某个人语音的特定音色属性,而后用这个掩模从混合以后的信号中提取出对用的目标音频信号。篇幅关系就不展开了,详细方法,大家可以去看对应的参考论文。
那么在实际应用中的多声源竞争问题,其实还会更难解决, 尤其是远场拾音,目标音频位于远场,声音很容易被近处的说话人遮蔽,而这是恰是一个行业内公认的难点
令人兴奋的是,一家位于波士顿的音频初创公司 Yobe,基于 MATLAB 所提供的平台以及快速原型验证的方式,对这个问题给出了很不错的解决方法。

浅谈 MATLAB 语音与声学应用 附振动力学基础与MATLAB应用下载的图4

请看下面的视频,前半段视频中,是麦克风接收到的远近两路声音来源,声音很大的来自近处的干扰源,而声音很小的,才是位于远处的目标声源。
后半段视频,则演示的是经过深度学习的音频特征提取,从接收到的音频中提取出,远处那个目标声源的效果,明显把之前被近处干扰掩盖的声音,提取得非常清晰完整。


这里 Yobe 综合采用了三种方法:

浅谈 MATLAB 语音与声学应用 附振动力学基础与MATLAB应用下载的图5

Yobe 对于 MATLAB 有下面这样的评价:
“在我们将其商业化之前,MATLAB 就为我们刚起步的概念,提供了绝佳的演示环境。MATLAB 使我们能够在研发的每个阶段进行演示,从而帮助我们分享我们的进步,并为正在创造的东西增添激情。这对于我们持续获得风险投资至关重要。”
Ken Sutton,Yobe 总裁、CEO 兼联合创始人

    ◆  

简要总结
对于拓展智能语音应用,很重要的一方面就是声源竞争的问题。
多个方向、多种来源、高噪声环境下的场景,如何提取目标信号,是进行可靠语音识别的前提。

我们介绍了,基于麦克风阵列波束成形的方法和基于深度学习的掩模估计的方法,下期我们会谈谈深度学习的语音识别

下载地址:振动力学基础与MATLAB应用

(1条)
默认 最新
1
评论 点赞
点赞 1 评论 1 收藏 1
关注