【发布时间】: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 的噪声形抖动引起的,添加以减轻量化引起的失真。好的,我承认我必须进行调查,因为我也不熟悉这种模式。