音频信号噪声滤波器问题

信息处理 过滤器 声音的 噪音 去噪 反卷积
2022-02-21 14:39:36

我目前正在处理音频信号并遇到问题:

C = A*B + N,其中

C = 来自麦克风的记录信号,包括:

A = 在麦克风旁边的扬声器上播放的已知音乐文件数据

B = 由于扬声器->麦克风往返对录制的 A 声音进行了一些卷积
(我的意思是,在将文件播放到扬声器并由麦克风录制之前,录制的信号不会与文件中的音频数据 100% 相同。 (这是脉冲响应吗?))

N = 麦克风记录的一些额外噪音

我的目标:关于是否有信号 N 以及它的响度的近似估计。

我不需要准确的数据!

附加信息:
我正在使用 Apple 的 vDSP API。我已经交叉关联了信号 A 和 C,所以我有信号重叠的时间窗口。

在重叠窗口中,我在时域和频域中都有信号。

目前我很无助,例如,如果维纳滤波器是正确的方法,并且我能够应用我已知的参数(是否需要已知的噪声?或环境的脉冲响应?)。我试图通过在频域中划分 C/A 来应用维纳反卷积,但没有成功。

再一次:我不需要准确的数据,只需粗略猜测信号 C 中有多少 N。实际上,类似 SNR 的测量就足够了。

1个回答

维纳滤波是一种方法。它甚至可能是最好的方法。维纳滤波器旨在最小化噪声(在最小二乘意义上)并反转脉冲响应的影响,给定一个已知信号和一个已知被噪声和脉冲响应污染的信号。一旦有了维纳滤波器,您就可以将滤波信号的幅度与直接信号的幅度进行比较,以估计噪声(我认为)。

现在我自己从未实现过维纳滤波器,所以我将参考一本教科书,其中有专门讨论该主题的章节:Glenn Zelniker 和 Fred J. Taylor 的高级数字信号处理(电气和计算机工程)。它已经绝版了,但我相信你可以在某个地方以便宜的价格买到二手副本。我推荐它是因为它的方法比工程更数学,这可能会吸引你。许多其他教科书都有关于该主题的信息。

如果更特别的方法适合您,这里有一个建议。我从未尝试过,但它可能会起作用:

创建一个滤波器组 F(一个适当窗口化的 FFT 将起作用)来分析已知音乐文件A和输入C您还需要一些测量功能,M。我建议, 而不是,但两者都可以工作,并且您可能还希望随着时间的推移进行一些平滑处理。通过比较噪声低时的结果,应该可以确定B的效果。当然,你可能不知道噪声低, 在这种情况下, 你必须变得更聪明一点, 根据一些统计数据创建一些估计。然而, 目标是达到一个可以预测M(x)=|x|M(x)=x2M(F(C))(M(F(A))(M(F(C))到一定范围内。边界越低,您检测噪声的能力就越好。(M(F(A)))

要估计噪声,您将比较信号实际超出这些界限的程度。这对于带限噪声很有效,但对于更安静的宽带噪声,它可能效果不佳。在这种情况下,您可能希望创建一个聚合统计信息,该统计信息不仅基于信号超出界限的程度,还基于跨越了多少界限,或者直接将测量函数应用于未过滤的信号:M(C)(M(A))