【TASNET】语音分离

留坑

概述

语音分离(Speech Separation),属于盲源分离问题,来自于“鸡尾酒会问题”。目的是从采集的观测信号(包括目标语音和干扰语音/噪声)中分离出目标语音。涉及到信号重构问题。

基于深度学习的方法及相关基础概述,可参考以下内容:

雷锋网分享/搜狗研究员讲解基于深度学习的语音分离
腾讯云/大象声科分享如何利用深度学习实现单通道语音分离?

TasNet

2018年ICASSP文章:TasNet: time-domain audio separation network for real-time, single-channel speech separation
参考CSDN博客|单通道实时语音分离的TasNet结构总结 & 知乎文章|从鸡尾酒会问题入门语音分离

TasNet(Time-domain Audio Separation Network)是时域的方法(直接输入混合语音,不经过STFT等变化得到声音特征),由编码器、分离网络、解码组成,与频域方法相比,编码过程不是固定的而是网络学到的(论文中认为对于语音而言STFT并不一定是最佳编码方式,有两点证实了此观点,论文中对编码器输出增加非负的约束会使模型变差,对编解码器增加互逆的关联约束使模型变差,即同一信号经过编码器再经过解码器得到同一信号),通过分离网络得到两个mask,学到的mask与编码器输出相乘再经过解码器得分离的声音,训练过程使用前文提到的PIT方法,编解码器都是一维卷积(相当于全连接层线性变换),实验结果展示幅度和相位信息都被编码器学习到了特征之中。
编码器Encoder实质上是一个线性变换,将16维输入信号变为512维,这个变换过程相当于做匹配滤波,Encoder的512维的权重就是匹配滤波的权重。而解码器是与编码器相反的过程,将编码器的512维的输出和分离网络输出的mask的点乘结果作为输入,做线性变换后得到分离的语音信号。在训练过程中,编码器和解码器不一定是可逆的,不需要对编码器和解码器做额外要求。
TasNet的分离网络与WaveNet相似,采用多层的CNN网络,每一层都是卷积操作,涉及到的卷积主要包括因果卷积和空洞卷积(可以增大感受野,由于语音往往较长,空洞卷积和残差连接是标配)。最后一层最后一个输出经过sigmoid函数得到mask(0-1)矩阵,论文中认为对于输出的mask不需要softmax来归一化使得输出和为1,模型可以自己学到,另外sigmoid也不是必须的,生成的mask可以为负值,不用加特殊限制。

TasNet核心工作:提出使用时域音频分离网络,即编码器-解码器框架直接在时域对信号建模,并在非负编码器输出上执行声源分离。

STFT缺点 TasNet特点
1. 提出傅里叶分解并不一定是最优的语音分离信号变换 1. N个非负加权基础信号表示混合语音波形
2. STFT将信号转换为复数域,但不能很好的处理相位谱 2. 基础信号的权重来自于编码器输出,基础信号即解码器的滤波器
3. 频谱有效分率需要高频率高分辨率,否则会产生时延 3. 估计权重(非负)可以表示为每个声源对混合权重贡献的掩模,类似于STFT中的T-F掩模
4. 解码器学习后重建声源波形

可以看出,借鉴了非负矩阵分解NMF的思想。

Conv-TasNet

IEEE/ACM Transactions on Audio, Speech and Language Processing [SCI]录用:Conv-TasNet: Surpassing Ideal Time-Frequency Magnitude Masking for Speech Separation

Conv-TasNet是哥大的一名中国博士生Yi Luo提出的一种端到端时域语音分离的深度学习框架。
Conv-TasNet使用线性编码器来生成语音波形的表示形式,该波形针对分离单个音轨进行了优化。音轨的分离则是通过将一组加权函数(mask)用于编码器输出来实现。
然后使用线性解码器将修改后的编码器表示形式反转回波形。由卷积的一维扩张卷积块组成的时间卷积网络(TCN)查找mask,使网络可以对语音信号的长期依赖性进行建模,同时保持较小的模型尺寸。
Conv-TasNet具有显着较小的模型尺寸和较短的延迟,是脱机和实时语音分离应用程序的合适解决方案。

其他资料

1、个人博客/阅读笔记《Dual-path RNN for speech separation》

原文地址:https://www.cnblogs.com/ytxwzqin/p/12673661.html