使用与语音带宽匹配的通带滤波器会有所帮助。
如果您有多个麦克风(就像现在的手机一样),则有很多类似ICA的方法可以利用它-但是您的问题提示我只有一个输入。
您想要做的是“单麦克风源分离”(名称来自Roweis的开创性论文),也称为“单传感器”。警告:这远不是一个解决的问题,并且该领域的所有研究都是最近的,没有任何算法或方法是“明显的赢家”(与高斯混合模型+ FST不同的是用于语音识别)。
一个好的框架是通过维纳过滤。参见Benaroya等。“基于维纳滤波和多窗口STFT的单传感器源分离”(请阅读第1和2节,除非您确实需要多分辨率,否则请不要理会)。简而言之,您可以计算信号的STFT,并针对每个STFT帧尝试获取语音频谱和噪声频谱的估计,然后使用维纳滤波从中恢复语音频谱的最佳估计(这是类似于“软掩盖”频谱)。
现在,您的问题如下:给定STFT帧,从中估计语音和噪声分量。Benaroya在论文中描述的最简单的方法是通过矢量量化-让许多说话者花费几个小时的语音,计算STFT,对其运行LBG来找到512或1024个典型语音帧的密码本;为噪音做同样的事情。现在,在给定输入信号帧的情况下,将其非负投影(本文描述了乘法梯度更新过程)到语音和噪声基数上,就可以得到语音和噪声估计值。如果您不想处理非负投影,只需使用最近的邻居即可。这实际上是在“单传感器源分离”部门中可能适用的最简单的方法。
注意,语音识别系统确实可以为分离系统提供一些输入。使用您的语音识别系统进行解码的第一遍。对于每一帧,取得分最高的高斯平均MFCC向量。将其转换回频谱。动臂,您有一个遮罩,可为您提供类似语音的位的最可能频谱位置,您可以将其用作维纳滤波的输入。这听起来有点像在挥手,但精神上,要分离一个信号源,您需要一个好的模型,而向后采用的语音识别系统则是语音信号生成模型的地狱。