Python将音频信号转换为频域

2026-04-16 05:47:39

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')

Python将音频信号转换为频域

3、对信号进行标准化:

     audio = audio / (2. ** 15)

     # 提取数组长度

     len_audio = len(audio)

Python将音频信号转换为频域

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)

Python将音频信号转换为频域

5、根据信号的长度将信号乘以2:

     if len_audio % 2:

        transformed_signal[1:len_ts] *= 2

     else:

        transformed_signal[1:len_ts - 1] *= 2

Python将音频信号转换为频域

6、计算功率信号,并创建X轴:

     power = -10 * np.log10(transformed_signal)

     x_values = np.arange(0, half_length, 1) * (sampling_freq / len_audio) /                                                                                                       1000.0

     

Python将音频信号转换为频域

7、绘制频率信号:

     plt.figure()     plt.plot(x_values, power, color='black')

     plt.xlabel('Freq (in kHz)')

     plt.ylabel('Power (in dB)')

     plt.show()

Python将音频信号转换为频域

猜你喜欢