1. 提纲
- 多阵列麦克风面临的问题
- 基于深度学习解决方案分类
- 具体的解决方案
2. 多阵列面麦克风面临的问题
- 同一方向多个阵列怎么高效合并?(集成在一起的麦克风阵列)
- 多个麦克风怎么来加强信号?(多个孤立的麦克风)
d
=
v
v
o
i
c
e
∗
t
f
r
a
m
e
=
340
m
/
s
∗
10
m
s
=
3.4
m
.
d= v_{voice}*t_{frame}=340m/s*10ms=3.4m\,.
d=vvoice∗tframe=340m/s∗10ms=3.4m.
1)当多个麦克风之间距离说话人间隔大于3.4m,就产生了跨帧现象;而说话人与麦克风之间的距离位置是未知的,怎么补偿该跨帧现象。
2)即使没跨帧,影响也不低,很好类比。 - 说话人背向麦克风时:我们最好舍弃该信号,选用朝向说话人的麦克风来做语音识别,怎么选?(多个孤立的麦克风)
3. 基于深度学习的解决办法分类
- beamformer:基于front-end fusion算法
- multi-encoder:基于back-end fusion算法
4. 具体方案
4.1 基于front-end fusion信号融合算法
-
网络架构:多阵列信号之间做融合
(1)Input Embedding:convolution-based (换用fbank应该也ok,只是做一个投影)
(2)Self/Cross attention: 2D Conv-Attention Module(Attention全局视野,CNN局部视野) -
结果:绝对提升3.8%
3. 缺点
(1)看起来只支持双麦克风,多麦克风会造成前端网络过于复杂,模型大多参数都浪费在前端特征提取上。
4.2 基于front-end fusion选最优的某单一麦克风算法
- 网络架构:开关网络
1)BF:factored complex linear projection(idea from google),因为信号包含相位的,直接采用fbank等保留了幅值信息,丢弃了相位,而多通路保留信号的相位理论上有利于降噪(参考信号处理中的相干叠加与非相干叠加)(但我感觉其实没啥用)
2)Spectral feature extraction:complex linear projection,求复信号的幅值(带虚数没法计算)
3) LSMT-Attention最后一层是sigmoid的非线性函数,类似于LSTM这种开关思想(0-1之间选通某一个麦克风上的信号量) - 结果(绝对提升3%)
4.2 基于back-end fusion multi-encoder(思想也是选通)
-
网络架构:开关网络
-
原理
-
结果(绝对提升7%)
-
缺点:(1)不够SOTA,现在都是Attention,他还是VGGBLSTM;(2)只支持双麦克风,多麦克风也过于复杂(不过已经发表了第二篇论文解决了该文听)
5. 代码
(1)等写完了,会在github上开源