2013-01-03 58 views
0
兩個音頻文件

可能重複:
Comparison of two waveforms of audio files比較使用它們的波形

我發現了一個PHP函數從WAV文件產生的波形,我修改了它,現在它符合我的需要,它運作良好。

波形似乎是每一個wav文件很獨特,所以也許可以使用他們的波形看到的是b.wav如何接近a.wav比較兩個音頻文件?這是一個好主意嗎?

我寫了一些PHP函數用像素來比較兩個波形(JPG)像素。經過一些測試,我得到以下結果:對於兩個不同的音頻文件,平均差異達到預期的97%,但我不知道它如何在真實代碼中工作。

能有人給這個想法他們的意見,也許一些有用的提示:)

我想比較兩個音頻文件,看看如何接近b.wav到a.wav。

P.S:我的WAV文件基本相同,唯一不同的是聲樂。

+0

您還沒有表現出任何代碼或任何東西,我們可以發表評論,這有可能爲CodeReview.SE更適合呢。 – Gordon

+0

你的問題到底是什麼? – jeroen

+0

通過查看波形的_picture文件來比較音頻就像比較食物一樣,而不是品嚐。你爲什麼不直接比較.wavs,或者一些峯值或RMS包絡? – leftaroundabout

回答

11

我在大學做類似的任務。我使用C++。

對於比較我做的步驟:

  1. 分割音頻文件組塊約1秒。每。
  2. 計算每個塊的快速傅立葉變換(FFT)。
  3. 計算來自第一個文件的FFT和來自第二個文件的FFT之間的相關性。它適用於每個塊。
  4. 檢查所有塊相關性超過80%。這個值足夠用於我的項目。
+0

這已經相當先進,應該工作得很好。當然,我們需要關注這些問題,例如塊的正確[開窗](http://en.wikipedia.org/wiki/Window_function)。如果文件中的文件不同,如果只考慮低音範圍,即將所有FFT結果修剪到前幾個分檔,則效果可能會更好。 – leftaroundabout

+2

+ +1提供了一個可行的答案,而不是「這真的很複雜,你應該閱讀這個主題;大量的研究已經完成,它仍然非常複雜。」 – Nateowami

2

他們的波形音頻比較是一條路可走。但它並不真實地匹配一個音頻文件與另一個。它所匹配的是一段時間內幅度的差異。所以如果你的目標是比較,波形比較是正確的。

如果你真的想比較類似Shazam的什麼作品的音頻,閱讀了關於how-does-shazam-recognize-songAn Industrial-Strength Audio Search Algorithm

0

我不覺得比較信號進行比較時的圖形波形多大用處。相反,你應該比較信號本身(array s的float s或int s)。

有很多的信號處理的方法,可以提供某種相似性度量的。作爲第一個,簡單的嘗試cross correlation功能浮現在腦海。