Dual-Path Filter Network Speaker-Aware Modeling for Speech Separation
2021 5.14 InterSpeech2021
链接:https://arxiv.org/pdf/2106.07579
Abstract
此前有一些方法尝试生成speaker vectors来支持声源分离。
DPFN,着重于语音分离的后处理,以调高语音分离的性能。
由Speaker module和Separation module组成
- 首先,Speaker module推断出说话者的身份,
- 然后,Separation module利用说话人的信息从混合语音中提取出单个说话人的声音
基于DPRNN-TasNet,但优于DPRNN-TasNet,且避免了PIT问题
Introduction
[数十年来,研究人员一直在研究鸡尾酒会问题[1],该问题指的是在嘈杂的社会环境中感知语言的问题。人类的听觉系统具有从复杂的混合物中提取目标源的出色能力。这就是自动系统想要学习的。对于语音处理的许多下游任务,如说话人的缩放[2]和自动语音识别[3],语音分离是一个必要的预处理。][背景介绍]
时域的方法:
- TasNet
- ConvTasNet
- DPRNN
- Gated DPRNN
- DPTNet
- SepFormer
利用说话者信息支持语音分离:
[21] M. Delcroix, K. Zmolikova, K. Kinoshita, A. Ogawa, and T. Nakatani, “Single channel target speaker extraction and recog-nition with speaker beam,” in Proc. ICASSP, 2018.
[22] C. Xu, W. Rao, E. S. Chng, and H. Li, “SpEx: Multi-scale time domain speaker extraction network,” IEEE/ACM Transactions on Audio Speech and Language Processing, vol. 28, pp. 1370–1384,2020.
[23] J. Xu, J. Shi, G. Liu, X. Chen, and B. Xu, “Modeling attention and memory for auditory selection in a cocktail party environment,” in Proc. AAAI, 2018.
[24] Q. Wang, H. Muckenhirn, K. Wilson, P . Sridhar, J. Hershey, R. A. Saurous, R. J. Weiss, Y . Jia, and I. Lopez, “V oiceFilter : Targeted voice separation by speaker-conditioned spectrogram masking,” in Proc. Interspeech, 2019.
每一次只提取一个目标说话人,这样分离模型就不受固定的说话人数量的限制
Speaker模块将混合或最初分离的波形最为输入,并将speaker身份标识提供给分离模块
将speaker身份信息合并到分离模块的方法:
- wavesplit的分离模块对说话人向量进行仿射变换,与说话人条件链模型中混合的帧级特征向量相连
- 简单地用于计算TasTas中的说话人分类损失
贡献:
- 建立了第一个基于滤波器的模型,重点是语音分离的后处理。
- 提供了一个标志性的新的Speaker module来创建代表性的speaker filter
- 在相同的基础结构下,优于DPRNN
- 不需要使用PIT
Related work
DPRNN
首先解码器将混合作为输入,并将其转换为相应的表示。
然后该表示被输入到分离器(包括1个LayerNorm、1个1×1conv、6个BiLSTM层、PReLU
、1个1×1conv和sigmoid)以估计各个源的掩码
最后解码器TransposeConv1D从屏蔽的掩码器特征重构波形
DPRNN-TasNet主要特点是BiLSTM模块中的本地和全局数据块公式。
- 首先将编码器的输出分成有或没有重叠的块,并将它们连接起来形成三维张量。
- 双路BiLSTM将三维张量映射到单个说话者的三维张量掩码。
- 然后每个掩码和原始三维张量的乘积通过叠加(Over-lap)操作转换回顺序输出
BiLSTM经历了两个不同维度:块大小(块内RNN)和块数量(块间RNN)。因此,RNN可以看到时间范围内外的信息。
SCCM
说话人条件链Speaker-condition chain model
说话人模块旨在预测可能的说话人身份和相应的嵌入向量。使用基于自关注的转换器,并将混合频谱图(STFT)作为输入。
然后语音提取模块基于每个说话者的嵌入从输入记录中提取相应的源音频。(说话人嵌入与逐帧频谱特征相连接)。一个类似ConvTasNet的结构被用于语音提取模块。
受此启发,本文模型也由说话人推断和语音提取组成。
DPFN
DPFN是一种基于滤波器的模型,着重于语音分离的后处理,以说话人滤波器为条件提取目标语音。
将DPFN级联到预先训练的分离模型中,以过滤更清晰的源波形
两种情况:说话人身份已知,由干净语音来了提取说话人嵌入;说话人未知,只有混合语音。
说话人已知Speaker Module
使用speaker module来获得speaker filters。
作者认为最具代表性和文本无关的说话人过滤器是x-vector
使用kalid预先训练SRE16 x-vector model。是哟个WSJ0中的记录来获得数据集中每个说话者的x-vector
x-vector可以通过一个可训练的全连接层来增加灵活性。
然后用于分离模块当作说话人条件
说话人未知Speaker Module
当只给出混合波形咩有说话人信息时,
- 首先通过预训练的分离模型分离混合波形,并将分离的波形输入说话人模块,以获得说话人滤波器。(说话人模型不受说话者数量的限制)
- 每次把一个说话人的分离语音输入到说话人模块,就会产生相应的说爱忽然滤波器,
- 通过说话人滤波器获得正确的发言数量
受convTasNet启发,说话人模块结构主要由一个Residual Net和一个pooling layer组成
1.首先,输入波形x被转化成其频谱图,包括T帧和F frequency bins
2. 然后,频谱图被发送到Residual Net
3. 最后,输出通过pooling层获得的说话人滤波器,该滤波器被分离模块使用
Residual 有S个stack,每个stack包括1个1Dconv layer,B个residual blocks和一个非线性激活层
在没饿过残差块中,通过非线性激活函数、一维卷积和归一化操作来处理输入Yi,j,以获得输出Yi,j+1
每两个块的末尾都会添加一个剩余路径
在S stack之后,对输出Xs进行线性运算得到Z。然后使用pooling层来计算Z的最后维度(即时间帧)的平均值
最后,应用非线性激活函数和线性运算来产生speaker滤波器V,其中D是speaker的嵌入维度(embedding)
受DPRNN_TasNet启发,分离模块由编码器、分离器、解码器组成。
分离器由分段、块处理、重叠相加三个阶段组成。
将说话人条件添加到块处理中
L DPRNN分为块内和块间,区别在于,从输入中分割和堆叠的块在两个不同的方向上被切片:块大小C,块数量N。
块R经历LSTM和FC层
FC层可以使处理后的块R'保持和R一样的维度,其中权重为G,偏差为m。
然后再这里加入说话人滤波器V作为条件。本文认为说话人滤波器是嵌入空间的质心。所以用FiLM加入条件,可以吸引嵌入向量更接近说话人的质心。这里的方法是通过线性运算将说话人滤波器V转换成权重c1和偏置c2。然后组块乘以权重,加上特定说话人的偏向,再经过一个非线性激活函数。最后,对chunk和进行规范化,同时在块的末端使用residual path,就像DPRNN一样
训练目标
模型中,有两个训练标准:一个是知道说话者的身份,另一个是不知道说话者的身份。对于前者,训练分离模块和全连接层,后者连接到固定的预先训练的说话人模型。在这种情况下,只考虑尺度不变的信噪比下的源重构损失。如果用x表示网络的输出,理想情况下,x应该等于目标源,信噪比可以计算如下
目标是最大化信噪比或最小化负信噪比。不需要PIT
在没有说话人信息的情况下,联合训练了说话人模块和分离模块。
除了重源重构损失,还尝试使用一种交叉熵损失,即说话人身份损失。然而不管损失权重如何设置,结构都是过拟合的。
因此,本文报道的实验结构都是仅使用源重构损失的结果。
此外,本文首先用干净的语音对说话人模块进行预先训练,然后用从哪个DPRNN_TasNet’中分离出来的模型进行微调。
没有使用PIT,因为作者详细从DPRNN-TasNet分离出的语音和干净语音是对其的,也就是,当将目标说话人的分离语音放入speaker模块,并将speaker滤波器放入分离模块时,分离模块应该产生目标说话人的语音。
**不适用PIT减少了损失计算的复杂性,使训练更快;且由于计算过程简化,就可以在训练目标中增加各种损失,**如语音损失或内容感知损失,以帮助提高语音分离的性能。
Experiment
Datasets
WSJ0:30h训练数据,10h验证数据
0~5db均匀混合
使用16个未见的说话者的话语,生成5h测试集
语音分离域,重采样到8kHz
使用STFT计算出的频谱图(160ms窗口长度、80ms跳数)和hann窗作为输入
Result
Good
Conclusion
未来希望能更多地研究说话人信息如何摆脱语音分离模型,
探索更多方式摆脱PIT,考虑更多类型的损失