2011-03-25 64 views
3

有沒有人知道一個庫,無論是蟒蛇,C(++)或Java,甚至是一個外部的應用程序,我可以用它來檢查一個特定的MP3音頻失真?我的問題是這樣的: 我有一個非常強大的Django應用程序,可以爲所有不同節目的廣播電臺自動播客,但大約每週一次執行實際錄製的計算機會錄製損壞的音頻,具有特定的插入模式,這聽起來像是直升機,音頻每秒落下幾次。我不希望修復這些音頻文件(因爲我用良好的編輯軟件手動嘗試過,它只是一個失敗的原因),而是檢測是否存在這種類型的損壞,所以我可以切換到備份版本自動錄製。外部工具理想情況下應該在Linux上運行,但只要窗口沒有頭像(沒有強制GUI),窗口是可以接受的。Python,C/++,java ...任何用於比較音頻信號的API?

謝謝。

回答

0

嘗試BASS圖書館,看看它是否有你在找什麼。

+0

這是一個很好的圖書館,但我沒有看到任何提及我在說什麼。如果你能指出一個有用的例子。它看起來好像會做其他我以後需要的東西。我正在尋找可以檢查某種腐敗的方法。 – UserZer0 2011-03-26 05:35:40

4

我認爲你所需要做的就是在mp3上做一個fft,你應該看到一個非常低的頻率峯值,對應於大的下降。我不是dsp guru,雖然不確定這會起作用,但它很容易嘗試。

你可以使用這個numpy庫python。 http://numpy.scipy.org/

剛剛在mp3文件中讀入一個數組,然後做一個fft,對於測試,我會建議只是先繪製它(例如使用maptlotlib),兩個版本,腐敗和良好,看看你是否可以輕鬆地檢測損壞的版本。然後希望你可以寫一個簡單的算法來檢測從那裏fft的損壞的文件。

用於讀取MP3到數據緩衝就可以使用PyMedia http://pymedia.org/

我沒有用PyMedia所以我不知道閱讀的MP3到緩衝區(它應該不會太複雜,我想象一下),但之後繪製fft就像這樣簡單:

from numpy import * 
from numpy.fft import * 
import pylab 

# place code to read the mp3 file into buf[] here. 

buf_fft = fft(buf, 1024) 
pylab.plot(fftfreq(1024, 0.1), abs(buf_fft)) 
pylab.show()