我有一些WAV文件。我想用SciPy FFT來繪製這些wav文件的頻譜。我會如何去做這件事?Python Scipy FFT WAV文件
回答
Python
提供了幾個API來做到這一點很快。我從this link下載羊咩咩wav文件。您可以將其保存在桌面上,並在終端內保存在cd
。在python
提示這些線應該足夠:(省略>>>
)
import matplotlib.pyplot as plt
from scipy.fftpack import fft
from scipy.io import wavfile # get the api
fs, data = wavfile.read('test.wav') # load the data
a = data.T[0] # this is a two channel soundtrack, I get the first track
b=[(ele/2**8.)*2-1 for ele in a] # this is 8-bit track, b is now normalized on [-1,1)
c = fft(b) # calculate fourier transform (complex numbers list)
d = len(c)/2 # you only need half of the fft list (real signal symmetry)
plt.plot(abs(c[:(d-1)]),'r')
plt.show()
下面是輸入信號的曲線圖:
這裏是光譜
對於正確輸出,您必須將xlabel
轉換爲頻譜圖的頻率。
k = arange(len(data))
T = len(data)/fs # where fs is the sampling frequency
frqLabel = k/T
如果你要處理一堆文件,就可以實現這個作爲一個功能: 把這些線路中的test2.py
:
import matplotlib.pyplot as plt
from scipy.io import wavfile # get the api
from scipy.fftpack import fft
from pylab import *
def f(filename):
fs, data = wavfile.read(filename) # load the data
a = data.T[0] # this is a two channel soundtrack, I get the first track
b=[(ele/2**8.)*2-1 for ele in a] # this is 8-bit track, b is now normalized on [-1,1)
c = fft(b) # create a list of complex number
d = len(c)/2 # you only need half of the fft list
plt.plot(abs(c[:(d-1)]),'r')
savefig(filename+'.png',bbox_inches='tight')
說,我test.wav
和test2.wav
在當前工作目錄,在python
提示界面下面的命令就足夠了: import test2 map(test2.f,['test.wav','test2.wav'])
假設你有100個這樣的文件,你不想單獨輸入他們的名字,你需要glob
包:
import glob
import test2
files = glob.glob('./*.wav')
for ele in files:
f(ele)
quit()
您將需要添加getparams
在test2.f如果你的.wav文件不一樣的。
很好的答案!您可能想要刪除'>>>',以便OP和其他人可以複製和粘貼。另外我發現如果你的代碼創建了一個情節,如果你添加了一張圖片,它會幫助你回答問題。 – Hooked
謝謝。我已經更新線程,提示刪除和新圖片。 – Shenghui
你將如何連接多個wav文件?我有很多小的wav文件。 – user1802143
- 1. .WAV文件上的FFT
- 2. Python SciPy FFT函數 - 輸入?
- 3. FFT y級混淆 - Python scipy
- 4. DSP FFT基本頻率wav文件
- 5. 解釋.WAV文件[Python]
- 6. FFT的頻譜圖在Python
- 7. 如何修剪Python中的wav文件
- 8. 通過FFT將1000Hz噪聲添加到wav文件中C
- 9. 在matlab中計算wav文件中的FFT
- 10. 在應用FFT之前從wav文件讀取數據
- 11. C++將FFT應用於wav文件數據
- 12. FFT爲WAV文件和輸出繪製頻譜
- 13. 使用Wav文件的java中的FFT問題
- 14. 如何將WAV文件轉換爲頻域以使用FFT庫
- 15. 你如何在iPhone上執行WAV文件的FFT?
- 16. 從wav文件中提取頻率python
- 17. SciPy:在.wav文件中讀取標記時間和標籤
- 18. 嘈雜的Scipy Wav文件輸出問題
- 19. 電壓/時間數據的NumPy/SciPy FFT
- 20. 螺紋FFT在numpy的/ SciPy的Enthought的Python
- 21. 的Python(SciPy的)從文本文件
- 22. 使用Scipy FFT的奇怪結果
- 23. SciPy的/ numpy的FFT頻率分析
- 24. Python中的FFT與解釋
- 25. 將wav文件轉換爲wav文件
- 26. Python/SciPy - 創建可執行文件
- 27. 在Python中讀取MatLab文件w/scipy
- 28. 使用Python的WAV文件修飾符
- 29. Python的變化音調的WAV文件
- 30. 在python中讀取WAV文件
嘗試使用Google搜索每一步(在數據中使用FFT讀取wav文件)。它不應該很難,如果你卡住了,回到這裏。 – MattG