gpt4 book ai didi

audio - 测量音频噪声电平

转载 作者:行者123 更新时间:2023-12-01 07:41:45 25 4
gpt4 key购买 nike

我正在尝试对音频流中存在的静电或噪声量进行定性处理。流的正常内容是语音或音乐。

我一直在尝试获取样本的 stddev,这确实让我能够处理语音与空信道噪声的存在(即,高 stddev 通常表示语音或音乐)

想知道是否还有其他人对此有一些指示。

最佳答案

峰值不给你答案吗?如果您正在查看来自一个好的 ADC 的信号,环境电平应该在 1 或 10 的计数范围内,而语音或音乐将达到数千个计数。是否有某种自动增益控制使该策略不起作用?

如果您需要更复杂的东西,峰值与 RMS 的比率可能比简单的 RMS 电平 (RMS = stddev) 更可靠。纯噪声的比率约为 3-5,而正弦波的峰值与 RMS 比率为 1.4。但是,您可以通过查看 spectrum 来获得更多区分度。的信号。静态通常在频谱上是平滑的甚至平坦的,而语音和音乐在频谱上是结构化的。所以傅里叶变换可能就是你要找的。假设信号 x 包含 0.5 秒的数据,下面是一些 Matlab 代码:

Sx = fft(x .* hann(length(x), 'periodic'))

HANN函数应用 Hann 窗口来减少光谱泄漏,而 FFT函数快速计算傅立叶变换。现在你有几个选择。如果要确定信号 x 是否由静态或语音/音乐组成,取频谱的峰值与 RMS 比:

pk2rms = max(abs(Sx))/sqrt(sum(abs(Sx).^2)/length(Sx))

我希望纯静态的峰值与 RMS 比率(再次)在 3-5 左右,而语音/音乐至少高出一个数量级。这利用了纯白噪声在时域和频域中具有相同“结构”这一事实。

如果您想获得噪声水平的数值估计值,您可以使用平均值计算 Sx 随时间变化的功率:

Gxx = ((k-1)*Gxx + Sx.*conj(Sx))/k

随着时间的推移,Gxx 中的峰值应该来来去去,但您应该看到与本底噪声相对应的恒定最小值。一般来说,音频频谱在 dB(对数垂直)刻度上更容易查看。

一些注意事项:
1. 我为 x 的长度选择了 0.5 秒,但我不确定这里的最佳值是多少。如果您选择的值太短,x 将没有太多结构。在那种情况下,信号的直流分量将具有很大的能量。不过,我希望您仍然可以使用峰值到 RMS 鉴别器,如果您先扔掉 Sx 中对应于 DC 的 bin。
2. 我不确定 k 的合适值是多少,但该等式对应于 exponential averaging .您可能可以尝试使用 k 来找出最佳值。这可能最适合短 x。

关于audio - 测量音频噪声电平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com