[英]Read amplitude data from mp3
我正在嘗試編寫一些代碼,這些代碼將從mp3中提取幅度數據作為時間的函數。 我在MATLAB上寫了一個粗略的版本,不久前使用了這個函數: http : //labrosa.ee.columbia.edu/matlab/mp3read.html但是我找不到Python的等價物。
我已經做了很多研究,到目前為止我已經收集到了我需要使用像mpg321這樣的東西來將.mp3轉換為.wav。 我一直無法弄清楚如何讓它發揮作用。
下一步將是從.wav文件中讀取數據,我也沒有取得任何成功。 有沒有人做過類似的事情或者可以推薦一些圖書館幫助解決這個問題 謝謝!
您可以使用subprocess
模塊調用mpg123
:
import subprocess
import sys
inname = 'foo.mp3'
outname = 'out.wav'
try:
subprocess.check_call(['mpg123', '-w', outname, inname])
except CalledProcessError as e:
print e
sys.exit(1)
要讀取wav文件,你應該使用wave模塊,如下所示:
import wave
import numpy as np
wr = wave.open('input.wav', 'r')
sz = 44100 # Read and process 1 second at a time.
da = np.fromstring(wr.readframes(sz), dtype=np.int16)
wr.close()
left, right = da[0::2], da[1::2]
在此之后, left
和right
含有相同信道的樣本。
你可以在這里找到更詳細的例子。
這是一個純python項目,你可以解碼比實時慢10倍的MP3文件: http : //portalfire.wordpress.com/category/pymp3/
其余的由傅立葉數學等完成:
並看看python模塊wave
:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.