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_signal = 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, half_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()
