簡體   English   中英

從mp3讀取振幅數據

[英]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]

在此之后, leftright含有相同信道的樣本。

你可以在這里找到更詳細的例子。

這是一個純python項目,你可以解碼比實時慢10倍的MP3文件: http//portalfire.wordpress.com/category/pymp3/

其余的由傅立葉數學等完成:

如何分析波形文件的頻率

並看看python模塊wave

http://docs.python.org/2/library/wave.html

Pymedia庫似乎很穩定, 可以滿足您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM