语音分离
传统方法
基于信号处理
谱减法
https://zhuanlan.zhihu.com/p/419736027
https://blog.csdn.net/KeepingMatlab/article/details/135010894
https://www.jianshu.com/p/db50b1cc2f65
假设: 1、带噪语音中的噪声是加性的,且噪音是平稳或慢变的。带噪语音谱减去估计出的噪声谱便可以得到干净语音谱 2、人耳相位不敏感,可以用带噪语音的相位代替纯净语音的相位。在实践上,特别是实时处理方向,很难满足这两大假设。
带噪语音 = 干净语音 + 噪声
估计噪声的幅度谱,并减去,来获得干净语音。
但是由于反变换时使用带噪语音的相位,其与干净语音的相位是有差异的,因此存在误差。
纯净语音与带噪信号的相位差,与信噪比相关。
缺点: 1、该类算法假定语音服从一定的分布,而噪音是平稳或慢变的。但是真实环境中的语音很难满足这些假设条件,此时这类算法就会失效。 2、低信噪比环境下,带噪语音相位和干净语音相位之间的差异可能很大
基于分解
非负矩阵分解NMF
https://www.bilibili.com/video/BV1Ra411u7Fc
https://www.bilibili.com/video/BV1Jb4y1N7TR
https://www.zhihu.com/question/264340213
假设:声音的频谱具有低秩结构, 因此可以用一个数量比较小的基来进行表示
\[ X = WH \]
其中,频谱 \(X \in \mathbb{R}^{F \times T}\) 被分解为基矩阵 \(W \in \mathbb{R}^{F \times K}\) 和激活矩阵 \(H \in \mathbb{R}^{T \times T}\)。
基矩阵可以理解为“特征”,频谱是由这些特征组合而成的。而纯净语音也能由这些特征组成,只要找到组合它们的方式,就可以重建纯净语音。
缺陷: 1、基于分解的方法属于浅层模型,假定频谱可以表示成基的线性组合,而声音本身却是高度非线性的,因此这种假设过于简单,不能对声音的长时依赖等建模。 2、基于分解的方法计算代价昂贵,学习到的表示所需要的参数会随着数据变化的增长而呈现线性增长。一般采用迭代算法求解, 计算复杂度高, 难以满足实时应用要求
基于规则的算法
计算听觉场景分析CASA
https://zhuanlan.zhihu.com/p/34014047
根据听觉场景分析研究中发现的一些规则或机制进行建模。
深度学习方法
https://zhuanlan.zhihu.com/p/137771442
https://www.bilibili.com/video/BV1Cf4y1y7FN
https://www.bilibili.com/video/BV1Vp4y1v77t
理想二值掩蔽IBM
一个0/1的模板,与原信号相乘,得到纯净语音的信号。
对带噪信号的时频成分进行筛选,保留目标成分,压制噪声。
目标:让神经网络学习,并得到一个mask
理想比值掩蔽IRM
RNN
深度聚类
训练目标:让混合语音信号时频谱中,属于不同音源的单元,对应向量的差距拉开。属于同一音源的,对应向量差距减小。对输出结果,依据向量做聚类,来得到二值掩蔽模板
缺陷: 非端到端
方法
传统
基于统计
高斯混合模型、隐马尔可夫模型
假定干扰语音信号与目标语音信号在统计上无关, 采用诸如复高斯或独立成分分析等概率分布模型对目标语音信号进行建模
基于聚类
计算听觉分析(Computational Auditory Sense Analysis, CASA)和频谱聚类
基于听觉分析的原理,通过对目标语音信号的基音和连续性等特性进行估计,从而将目标 语音与干扰语音区分开来,实现类似于人类听觉系统的分离
基于分解
利用非负矩阵分解(Nonnegative Matrix Factorization, NMF)的原理,将语音分离问题描述成矩阵分解问题,将混合语音信号的时频(Time-Frequency, T-F)表示分解成基本信号与激励信号的结合,然后将每个基本信号学习到的激励信号用于重构目标语音信号。
深度学习
DNN
第一个使用深度学习技术解决 说话人分离问题的方法
DNN 可以通过连接语音信号的相邻特征提取出有用的信息,比如上下文信息、幅 度谱、梅尔频率倒谱系数(Mel-Frequency Cepstral Coefficient, MFCC)以及其他特征参数。
RNN
由于增加连接窗口大小的限制,连接相邻特征数量的增加,会增加神经网络模型的复杂性。因此,有研究人员使用循环神经网络(Recurrent Neural Network, RNN)代替 DNN,以提取语音信号的时间信息。
DPRNN
双路径循环神经网络(Dual-Path Recurrent Neural Network, DPRNN)
有效地处理超长时间序列,对较长的连续输入进行分解, 并对其进行块内(局部)运算和块间(全局)运算,使得在每一个运算中的输入量都与原来 的序列长度的平方根成比例,实现次线性处理,缓解了优化的难题。
DPTNet
双路径 Transformer 网络(Dual-Path Transformer Network)
引入了一种改进的 Transformer,在原始的 Transformer 模型中添 加了 RNN,可以在不使用位置编码的情况下,提取出语音序列中的次序信息,使得网络可以用更直观的上下文信息对语音序列进行刻画,因此可以得到较好的分离效果。
SepFormer
Transformer 的无 RNN 的网络模型。
与性能相当的语音分离系统相比,它的速度要快得多,对电脑内存的要求也更低。
Conv-TasNet
全卷时域语音分离网络( Convolution Time-Domain Audio Separation Net)
GAN
source
2017
https://zhuanlan.zhihu.com/p/348957520
2020
如何分离不同说话人的语音信号?深度学习单通道语音分离方法最新综述 https://zhuanlan.zhihu.com/p/194329601
从鸡尾酒会问题入门语音分离 https://zhuanlan.zhihu.com/p/142143151
2022
语音分离综述 https://zhuanlan.zhihu.com/p/453975913
2023
TDANet: 一种具有自上而下注意力的用于语音分离的高效自编码器架构 (ICLR 2023) https://zhuanlan.zhihu.com/p/605100121
MossFormer: https://zhuanlan.zhihu.com/p/609728122
paper
https://github.com/JusperLee/Speech-Separation-Paper-Tutorial
https://github.com/gemengtju/Tutorial_Separation
语音分离的文章分享 https://zhuanlan.zhihu.com/p/359514812
model
https://zhuanlan.zhihu.com/p/596605101
SpeechBrain了解一下?12月或者1月beta-release哦
频域:
时域:TasNet、DPRNN、TDANet、Sepformer
https://github.com/JusperLee?tab=repositories
conf
icassp、interspeech
TASLP
NeurIPS/ICLR/TPAMI/ICASSP/Interspeech
题主首先要明确自己先从声源分离入手,还是语音识别入手,还是多说话人语音识别入手。这三者在github上都有比较好的开源,且相对较新,很能跟上学术界的步伐。会议可以关注ICASSP和INTERSPEECH,期刊可以关注The_IEEE_/ACM Transactions on Audio, Speech, and Language Processing,speech communication,signal processing letter。
因为不像其他机器学习的领域,大家积极开放数据库和代码,统一衡量标准,语音界很多团队还在自娱自乐,同一个团队同样的数据发表在上述顶会上的文章的metric的数据量级都会不一致,更不用说在github上要找个好的语音模型的代码有多难(除了那几家大厂还良心发布代码和数据)。 CV和NLP的顶会文章下限至少比语音的高不少,上限大家都很高。而且,50%的命中率真的是代表难度不大,大家可以看看台大李宏毅的本科生上完他的课把课堂作业拿去投这两会能中的也挺多。至于顶刊TASLP,评委的友好程度高过其他方向太多,当然,也导致很多不怎么靠谱的文章最终被接收了。
语音领域没有cv,nlp做的那么大,语音顶会只有icassp和interspeech,做的人少,而且没有其他领域有一套属于自己的网络或者架构,现在所用的结构基本都是从nlp和cv搬过来的
mass
关于语音分离/语音前端处理社群建立 https://zhuanlan.zhihu.com/p/134797981