语音信号处理|ch9-语音信号处理的一些Topics
Ch9:Topic介绍
VAD(端点检测)
1. 问题定义
从语音信号中将语音(speech)和非语音(Nonspeech)的部分区分开,确定语音信号的端点(前端点和后端点)
2. 问题意义
在实际应用中端点检测的灵敏度会很大程度地影响用户使用智能语音产品的体验和准确度。
E.g.智能音箱的后端点检测——
①若太迟钝,则等待用户发完指令后会经过很大的延迟才进行相应处理;
②若太灵敏,则用户在一句指令中的微小停顿都有可能造成音箱抢占结束会话,导致命令不准确和不完整。
VAD技术的合理部署,成为语音交互的关键点。
3. 问题研究
- 能量VAD(基于特征的方法)
①往往会采取一些能够对语音和非语音(噪声)具有区分能力的特征进行判断;
②常用特征:能量、过零率、基频等
- 基于HMM的VAD
4. 改进与展望
目标说话人分离
1. 鸡尾酒会问题
【定义】
在一个有多说话人同时说话的场景中,只希望听取其中一个说话人说话的内容——这样的问题也被定义为盲源分离。
【解决方法】
①多通道;
②单通道
【面临挑战】
①输入声源个数未知;
②多输出的排列匹配;
③计算代价,e.g. PIT
“但在很多现实应用场景中,我们往往是基于知道[Whom to listen to]来研究问题的”,因此可以引入先验的说话人信息来辅助解决问题。
2. 目标说话人分离
【网络架构】
【向量表示】
①d-vector
②x-vector
【系统构建】
①Voice-Filter
②Atss-Net
【应用场景】
①嘈杂场景语音交互应用;
②替代AEC——本质上希望通过信号处理算法剥离出设备所播放出的本身的声音,这个任务与目标说话人分离的任务是互逆的,或者说是互补的。因此可以考虑设计一个神经网络,将AEC的目标声音作为embedding传入给网络,那么网络就可以得到除去设备播放的声音以外的目标说话人音频。
Ch10:答疑
解混响
1. 传统信号处理方法示例
2. 深度学习方法架构
Topics
1. 传统v.s.深度学习
①【哲学层面】
传统的信号处理是基于一个“还原论”,因此其每一步推导都有严谨的理论依据可循;但是深度学习方法是基于“整体论”,我们更加关注端到端的东西,中间过程的步骤有可能是无法解释的黑盒子;
②【原理区别】
传统信号处理是基于物理性质或者数学推导,对于多种应用场景是通用的,具有系统性和鲁棒性;而深度学习的训练更加依赖于数据集的构造,对于不匹配的应用场景性能会骤降;
③【信息使用】
传统信号处理主要是使用当前的输入信号,而深度学习为了充分发掘历史信息对于网络的贡献,所以我们会引入这些历史信息甚至是其他模态的信息,利用网络进行融合;
④【假设】
传统的信号处理技术为了解决问题引入了很多先验假设,但其不一定在各种应用场景下都满足;深度学习则不依赖于这些统计假设,因此只要神经网络架构合理加上有一个合理并且强大的数据集,深度学习的方法通常都会比传统信号处理技术得到的性能表现更优秀;
⑤【环境与性能】
传统的信号处理方法需要有关键可靠的统计量才能有好的性能表现,但其只依赖于信号的知识对这些统计量进行计算与估计是很难的;因为深度学习方法不依赖于假设,因此其依赖于强大的深度神经网络计算得到的这些量更加稳定和可用;
⑥【复杂度】
深度学习相较于信号处理方法其计算资源消耗多,模型部署需要的空间资源也更多。
2. 一个具体应用场景的分析
【问题描述】
在有两个说话人自由对话且间距1m的场景中,语音采集设备在一个人胸前进行佩戴,此时应该怎样处理?
【解决方案】
①说话人分割聚类(Speaker Diarization)
- 所谓的说话人分割聚类,就是在当前的语音信号中有多个人的音频存在,因此在进行说话人识别之前首先要先找到对应于每一个说话人各自说话的语音;
- 通过一些方法找到不同说话人音频之间的转换点,将转换点分割得到的不同说话片段依据说话人的身份特征进行聚类;
- 纵观其思想,整体步骤就是先分割再聚类
②使用前端信号处理的手段辅助分类
- 若可以使用多麦或者双麦,则可以使用阵列设计辅助后面的波束形成相关算法来进行;
- 若只有单麦,则要用到说话人不同的声纹信息,基于特定说话人进行语音分离。