我使用numpy库计算freq=np.fft.rfftfreq(len_数据,1.0/速率),如果我没有错,那么这个频率没有单位如何将其转换为赫兹。我正在使用以下代码:
import numpy as np
import scipy.io.wavfile
from scipy import signal
def read_wav_file(file_name):
sample_rate, Data_audio = scipy.io.wavfile.read(file_name)
return sample_rate, Data_audio
def getFFT(Data_audio, sample_rate):
len_data = len(Data_audio)
Data_audio = Data_audio * np.hamming(len_data)
fft = np.fft.rfft(Data_audio)
fft = np.abs(fft)
ret_len_FFT = len(fft)
freq = np.fft.rfftfreq(len_data, 1.0 / sample_rate)
return ( freq[:int(len(freq))], fft[:int(ret_len_FFT)], ret_len_FFT )
sample_rate_rec, Data_audio_rec = read_wav_file('2020rec.wav')
frequency_rec, fft_rec, ret_lenFFT_rec = getFFT(Data_audio_rec, sample_rate_rec)
print("frequency_rec: " + str(frequency_rec) )
**Output**
frequency_rec: [0.00000000e+00 8.33481508e-03 1.66696302e-02 ... 2.39999833e+04
2.39999917e+04 2.40000000e+04]
# To convert frequencies into float format
np.set_printoptions(formatter={'float':'{:f}'.format})
print("frequency_rec: " + str(frequency_rec) )
**Output**
frequency_rec: [0.000000 0.008307 0.016614 ... 23999.983386 23999.991693 24000.000000]
numpy FFT软件包有一个内置函数,用于计算与FFT输出一起使用的频率向量。请注意,
scipy
输出采样速率wilenumpy
想要采样间隔,因此必须先将其反转由于
scipy.io.wavfile.read
的输出声称以采样数/秒为单位,因此np.fft.fftfreq
的输出将以循环数/秒(也称为赫兹)为单位相关问题 更多 >
编程相关推荐