Audio 测量音频噪声级

Audio 测量音频噪声级,audio,signal-processing,Audio,Signal Processing,我试图对音频流中存在的静态或噪声量进行定性处理。流的正常内容是声音或音乐 我一直在对样本进行stddev测试,这确实给了我一些关于语音与空通道噪声(即,高stddev通常表示语音或音乐)的处理方法 我想知道是否有其他人对此有一些建议。峰值没有给你答案吗?如果您看到的是来自良好ADC的信号,则环境电平应为1或10个计数,而语音或音乐将达到数千个计数。是否有某种自动增益控制使该策略不起作用 如果您需要更复杂的东西,那么峰值与RMS之比可能比简单的RMS级别(RMS=stddev)更可靠。纯噪声的比率

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

我一直在对样本进行stddev测试,这确实给了我一些关于语音与空通道噪声(即,高stddev通常表示语音或音乐)的处理方法


我想知道是否有其他人对此有一些建议。

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

如果您需要更复杂的东西,那么峰值与RMS之比可能比简单的RMS级别(RMS=stddev)更可靠。纯噪声的比率约为3-5,而正弦波的峰值与均方根值之比为1.4。但是,通过查看信号的颜色,可以获得更多的辨别力。静电通常是频谱平滑甚至平坦的,而声音和音乐则是频谱结构。所以傅里叶变换可能就是你想要的。假设信号x包含,比如0.5秒的数据,下面是一些Matlab代码:

Sx = fft(x .* hann(length(x), 'periodic'))
该函数应用Hann窗口以减少光谱泄漏,同时该函数快速计算傅里叶变换。现在你有两个选择。如果要确定信号x是由静态信号还是语音/音乐组成,请获取频谱的峰值与均方根值之比:

pk2rms = max(abs(Sx))/sqrt(sum(abs(Sx).^2)/length(Sx))
我希望纯静态的峰值与均方根值之比在3-5左右(再次),而语音/音乐的峰值与均方根值之比至少要高一个数量级。这充分利用了纯白噪声在时域和频域具有相同的“结构”这一事实

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

Gxx = ((k-1)*Gxx + Sx.*conj(Sx))/k
随着时间的推移,Gxx中的峰值应该会来来去去去,但您应该看到一个与噪声地板相对应的恒定最小值。一般来说,音频频谱更容易在dB(对数垂直)范围内查看

一些注释:
1.我选择了0.5秒作为x的长度,但我不确定这里的最佳值是多少。如果选择的值太短,x将不会有太多结构。在这种情况下,信号的直流分量将具有大量能量。不过,如果您首先在Sx中抛出对应于DC的bin,我希望您仍然可以使用峰值到RMS鉴别器。

2.我不确定k的值是多少,但这个方程对应于。您可能可以尝试使用k来找出最佳值。这可能对短x最有效。

有不同种类的噪声。白色,粉色,棕色。噪音可能来自很多地方。60赫兹的嗡嗡声是噪音还是信号

对于白噪声,我会看fft,找到最低值,看看你的噪声底是多少