问题描述
我需要为具有 2 秒数据的 .wav 文件获取以 dB 为单位的 FFT 谱和功率谱。我需要获得整个时间段内的“平均功率(以 dB 为单位)”。我使用以下代码:
# Read 2s of data from wav file
y,sr = librosa.load('Noise Recorder.wav',sr=None,duration=2)
# Short FFT,no overlap,nfft=8192,Hanning window
S = librosa.stft(y=y,n_fft=8192,window='hann')
# Power in dB
power = librosa.power_to_db(np.abs(S)**2)
# Frequency components
freqs = librosa.fft_frequencies(sr=sr,n_fft=n_fft)
在这里我看到了其他计算功率的公式。例如:D = librosa.amplitude_to_db(np.abs(S),ref=np.max) # Convert to DB
和在某些情况下 energy = np.mean(mag**2,axis=1)/(n_fft/2)**2
我应该使用哪个公式来获得整个 2 秒内平均窗口的功率谱?
此外,我想 1) 可视化频率与 dB(图中整个 2 秒的平均值)和 2)整个 2 秒内功率谱(RMS/Leq)的平均值。请让我知道如何进一步操作。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)