【发布时间】:2021-10-19 18:55:20
【问题描述】:
对于找到 here 的 wav 文件,我想匹配 Adobe Audition 中显示的频谱:
目前,使用我使用的代码:
import scipy.io.wavfile as wavfile
import scipy
import scipy.fftpack
import numpy as np
from matplotlib import pyplot as plt
file1 = (r'G:/file1.wav')
fs_rate, signal = wavfile.read(file1)
print ("Frequency sampling", fs_rate)
l_audio = len(signal.shape)
print ("Channels", l_audio)
if l_audio == 2:
signal = signal.sum(axis=1) / 2
N = signal.shape[0]
print ("Complete Samplings N", N)
secs = N / float(fs_rate)
print ("secs", secs)
Ts = 1.0/fs_rate # sampling interval in time
print ("Timestep between samples Ts", Ts)
t = np.arange(0, secs, Ts) # time vector as scipy arange field / numpy.ndarray
FFT = scipy.fftpack.fft(signal)
FFT_side = FFT[range(N//2)] # one side FFT range
freqs = scipy.fftpack.fftfreq(signal.size, t[1]-t[0])
fft_freqs = np.array(freqs)
freqs_side = freqs[range(N//2)] # one side frequency range
fft_freqs_side = np.array(freqs_side)
plt.plot(freqs_side/1000, 2.0/N * abs(FFT_side))
plt.xlabel('Frequency (kHz)')
plt.ylabel('Count single-sided')
plt.show()
我明白了这个情节:
您能帮我得到与 Adobe Audition 频率分析窗口中显示的图一样的图吗?
任何帮助将不胜感激!
【问题讨论】:
-
首先将绘图上的 x 轴更改为像 Audition 中的对数轴
-
@Woodford,谢谢,我添加了
plt.semilogx(freqs_side/1000, 2.0/N * abs(FFT_side))这一行。情节有点变化......那么如何将其改为一条线?
标签: python fft frequency-analysis