Python将音频信号转换为频域
1、创建一个python文件,并导入库文件: import numpy as np from scipy.io import wavfile import matplotlib.pyplot as plt
2、读取音频文件: sampling_freq, audio = wavfile.read('data/input_freq.wav')
3、对信号进行标准化: audio = audio / (2. ** 15) # 提取数组长度 len_audio = len(audio)
4、接下来旅邯佤践进行傅里叶变化,我们的最终目标是提取功率信号,因此需要先将信 号的值平方: transformed_si爿讥旌护gnal = np.fft.fft(audio) half_length = np.ceil((len_audio + 1) / 2.0) transformed_signal = abs(transformed_signal[0:int(half_length)]) transformed_signal /= float(len_audio) transformed_signal **= 2 # 提取转化信号的长度 len_ts = len(transformed_signal)
5、根据信号的长度将信号乘以2: if len_audio % 2: transformed_signal[1:len_ts] *= 2 else: transformed_signal[1:len_ts - 1] *= 2
6、计算功率信摒蛲照燔号,并创建X轴: power = -10 * np.log10(transformed_signal) x_values = np.arange(0, hal熠硒勘唏f_length, 1) * (sampling_freq / len_audio) / 1000.0
7、绘制频率信号: plt.figure() plt.plot(x_values, power, color='black') plt.xlabel('Freq (in kHz)') plt.ylabel('Power (in dB)') plt.show()