语音分离Sepformer

链接:​​​​​​https://arxiv.org/pdf/2010.13154.pdf

github:https://speechbrain.github.io/

摘要

RNN在seq2seq上有很好的表现,但是不能够并行计算,使得计算的代价比较大;而Transformers的出现解决了RNN的这个问题,而Transformers由于attention的缘故,会有比较高的复杂性。后续出现了Transformers的各种变体,后续专门来写。

这篇文章提出了SepFormer,,一种利用Transformers来实现语音分离的方法,在WSJ0-2/3mix数据上实现了SOTA;而且由于Transformers的并行性,SepFormer是更快并且占内存比较小的。

背景

DPRNN是将较长的序列切割成较小的块,在块内和块间进行操作。但是RNN的局限,使得DPRNN也遇到了之前的问题;之后DPTNet整合了Transformers,但是DPTNet仍然嵌入了RNN。

本文的SepFormer,主要有多头attention和前向层组成,并采纳了DPRNN的双路径的框架,将其中的RNN用多尺度Transformers替换,用来学习长短依赖性。

模型框架

语音分离Sepformer_第1张图片

 其中,encoder学习输入信号的表示,mask用来估计最优的masks来分离语音信号,decoder重构source.

1. masking network

语音分离Sepformer_第2张图片

masking network(图1上)得到encoder的输出h  ,估计混合语言中N个讲话者的mask \left \{m_{1},...,m_{N_{s}}\right \}.

encoder的输出 h 会经过层正则和线性层,然后对此进行切块得到 h^{'} ,其中会有参数每一个块的大小  C以及块的个数 N_{c} ,  被feed到SepFormer block中得到输出 h^{''} ,然后经过PReLU的线性层得到输出 h^{'''} ,然后使用overlap-add得到 h^{''''} ,最后经过FFW和ReLU得到每一个讲话者的掩码  m_{k}

SepFormer block

图1的中部是详细的信息,SepFormer block利用DPRNNs去构建长短依赖,IntraTransformer(IntraT)构建了短依赖,InterTransformer(InterT)构建了长依赖;IntraT独立处理 h^{'} 的每一个块,从而构建了短依赖,InterT对IntraT的输出进行维度变换,并构建块之间的转移,从而构建了块之间的长依赖,整个过程的变换方式:

Intra and Inter Transformers

图1的底部是IntraT和InterT的transformers的结构。

Decoder

主要使用装置卷积层,和encoder的步长和核尺寸一致。source的 m_{k} 和encoder的h进行元素对应相乘:

Experiment

 WSJ0-2mix的结果

语音分离Sepformer_第3张图片

WSJ0-3mix的结果 

语音分离Sepformer_第4张图片 

Speed and Memory Comparison

语音分离Sepformer_第5张图片

Conclusion

文章提出了一种新的语音分离神经模型SepFormer,是一种无RNN的架构,使用masking network来学习长短依赖。

 

你可能感兴趣的:(语音分离,语音识别,rnn,深度学习)