【问题标题】:FFT noise frequency removeFFT 噪声频率去除
【发布时间】:2019-09-11 15:43:22
【问题描述】:

我使用 audacity 生成 10Hz 的音调,采样率为 48KHz,持续时间为 1 秒。然后用下面的脚本加载它来绘制 FFT 图:

from scipy.io import wavfile
from scipy.fftpack import fft, fftfreq
import matplotlib.pyplot as plt
from pydub import AudioSegment
import numpy as np

wav_filename = "\\test\\10Hz.wav"
samplerate, data = wavfile.read(wav_filename)
total_samples = len(data)
limit = int((total_samples /2)-1)
fft_abs = abs(fft(data))*2/total_samples
fft_db = 20*np.log10(fft_abs/32760)
freqs = fftfreq(total_samples,1/samplerate)
# plot the frequencies
plt.plot(freqs[:limit], fft_db[:limit])
plt.xscale('log',basex=10)
plt.title("Frequency spectrum")
plt.xlabel('Hz')
plt.ylabel('amplitude')
plt.show()

我得到以下嘈杂的图表:

但如果我用大胆的方式来查看频谱图,那就很不错了。

我应该如何改进我的脚本以获得更好的 FFT 绘图?

【问题讨论】:

  • @harold :该模式是由 Audacity 的噪声形抖动引起的,添加以减轻量化引起的失真。好的,我承认我必须进行调查,因为我也不熟悉这种模式。

标签: python fft


【解决方案1】:

WAV 文件的特定频谱模式由 Audacity 应用的噪声形抖动生成,以减轻量化造成的失真。

信号以带符号的 16 位整数形式存储在 WAV 文件中。这个quantization 使信号非常不准确:2^15 是 32768:0.5/32768 的相对误差很可能,计算 DFT 可能会增加它。这大约是 1e-5 或 -96dB。因此,如果不小心将信号值转换为最接近的整数,则任何低于 96dB 的频率都可能被视为量化噪声。

尽管如此,导出的 WAV 文件的频谱看起来非常漂亮,因为所有频率的幅度都低于 -100dB,唯一的例外是正弦波的频率,其幅度接近 0dB。 问题需要重新表述:Audacity 如何为 WAV 文件实现如此准确的频谱?

优化导出的值以提高光谱的准确性。 事实上,单个导出值的准确性不如将浮点值转换为整数。我大胆地生成了一个幅度为 0.8 的正弦波,并将其导出为 WAV 签名的 16 位 PCM。量化误差可以计算为:

x=np.linspace(0,1,len(data),endpoint=False)
data2=np.sin(10*2*np.pi*x)

data=data.astype(np.double)
plt.plot(x, data-0.8*32768*data2, label="data-sin(x)")
#plt.xscale('log',basex=10)
plt.title("signal")
plt.xlabel('time, s')
plt.ylabel('amplitude')
plt.show()

量化误差的生成图:

如果将信号值简单地转换为最接近的整数并倒入 WAV 文件中,则生成的错误将低于 0.5。实际的逐点误差约为 5。

Audacidy 中考虑使用noise-shaped dither 通过添加人类几乎听不见的高频噪声来改善量化信号的动态范围。 theretherethere

您可以choose the dither in Audacity 甚至禁用它。进入首选项=> 质量!如果不考虑抖动,则真实空间中的逐点误差更小:

但频谱上的量化误差较高:

矩形抖动可用于检索看起来像白噪声的东西: 它可能是您使用的最佳选择,因为频谱上的误差约为-125dB,逐点误差为+-1。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2018-07-18
    • 2017-07-07
    • 2019-11-28
    相关资源
    最近更新 更多