Python是一種流行的編程語言,常用于數據分析、人工智能等領域。在音頻處理方面,Python也有很強大的工具來處理音頻文件。其中,Python的matplotlib庫就提供了繪制頻譜圖的功能。
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
# 讀取音頻文件
rate, data = wavfile.read('audio.wav')
# 計算FFT
fft = np.fft.fft(data)
# 取絕對值
abs_fft = np.abs(fft)
# 取一半(由于FFT是對稱的,取一半即可得到頻率譜)
half_fft = abs_fft[: len(abs_fft)//2]
# 計算頻率軸
freq_axis = np.arange(0, len(half_fft), 1) * (rate / len(abs_fft))
# 繪制頻譜圖
plt.plot(freq_axis, half_fft)
plt.title("Freq Spectrum")
plt.xlabel("Frequency (Hz)")
plt.ylabel("Magnitude")
plt.show()
首先,我們從音頻文件中讀取音頻數據,使用wavfile模塊讀取音頻文件,獲取采樣率和音頻數據。 接下來,我們將數據進行快速傅里葉變換(FFT),得到頻率域數據。 我們取FFT的絕對值,因為FFT的結果是復數。然后,我們只需要取一半的數據,因為FFT是對稱的,另外一半與之相同,只是反相。接著,我們計算出頻率軸,通過取樣率將FFT結果的索引轉換為頻率值。最后,使用matplotlib繪制頻譜圖。
上一篇python 模塊分發包
下一篇python 模塊哪里找