留坑
概述
语音分离(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具有显着较小的模型尺寸和较短的延迟,是脱机和实时语音分离应用程序的合适解决方案。