如何对原始声音数据进行去噪

信息处理 噪音 声音
2022-01-04 05:07:24

我可以使用哪些技术/算法从声音(语音)的原始录音中去除噪音?

目的是获得更平滑的图形(消除“锯齿状”)。我尝试的是通过使用两侧的周围两个值来平均小偏差,但最终会产生失真的声音。有什么更好的方法来“平滑”图表?

3个回答

对于您打算做的事情,低通滤波器是要走的路。您关于过滤频率与过滤幅度的说法不正确。您的信号包含许多频率的分量,其幅度随时间变化,而高频分量是那些导致“锯齿状”的分量,您想摆脱它们。不知道为什么你说你的信号是“恒定频率”——也许你对采样率感到困惑?

您尝试过的(平均)确实是低通滤波的一种特殊情况,但频率响应远非理想。您应该尝试设计合理的 IIR 或 FIR 滤波器。特别是,FIR 滤波器与您尝试的并没有太大不同 - 这只是每个样本相邻的样本的加权组合。但是系数的选择很重要,可以确保只消除不需要的分量。请注意,FFT 不是可行的方法。这个问题经常以不同的形式出现在这里,但简而言之 - FFT,弄乱系数,IFFT -是一个坏主意

根据设计,移动平均滤波器的输出(您实现的)的能量低于输入。因此,移动平均滤波器不可能引起失真。如果输入信号在 [-1, 1] 范围内,则平均滤波器无法产生超出此范围的值。您观察到的“失真声音”可能是由于您这边的实现错误(整数值的溢出/裁剪,有符号值被视为无符号值,或者可能是不正确的就地处理)......

编辑:值得一提的是,在某些情况下,语音信号实际上具有高频分量(出现“锯齿状”,嘈杂) - 例如在 sss 或 shhh 期间;而用低通滤波器去掉那些会影响它的亮度。理想情况下,您希望低通滤波器仅在您检测到语音信号是浊音时激活 - 并在检测到清音、嘈杂的辅音时抑制它。

另一种有趣的音频去噪技术利用了许多录音包含仅包含噪声的无声时间间隔这一事实。可以从记录中切掉这些部分以获得噪声频谱,然后可以应用频谱选通来抑制噪声。查看以下链接,了解有关此技术的详细讨论:

噪声门:http ://en.wikipedia.org/wiki/Noise_gate

Audacity(开源音频编辑工具)中的噪声去除:http ://wiki.audacityteam.org/wiki/Noise_Removal

当然,这种方法建立在“相同的噪声源”在整个音频期间持续存在的假设之上。

您应该对信号应用低通滤波器。寻找这样的算法。希望这会有所帮助......声音是低频,通常噪音是高频。