2012-07-28 106 views
4

我想記錄一條狗吠,保存文件並與包含不同類型樹皮(警告樹皮,哭泣的樹皮等)的幾個文件進行比較。匹配兩個音頻文件

我怎麼可以做比較以獲得比賽?這種類型的應用程序需要遵循什麼流程?

謝謝你的提示。

+2

我認爲最好的選擇是譜分析師。使用FFT(快速傅立葉變換)來獲取樹皮的光譜並比較光譜。您可能可以定義一些過濾器來幫助分析師。玩的開心。 – cliff2310 2012-07-28 22:53:34

+0

謝謝你@ clif2310。有沒有另一種方法來實現它?使用FFT將意味着大量的時間學習和實施,因爲它非常複雜。 – pindleskin 2012-07-28 23:00:47

+2

FFT只是這裏的冰山一角。我已經實現了僅在過程的一部分中使用FFT的音頻指紋識別,並且它只匹配兩個聽起來相同的聲音 - 您的問題遠遠大於此。無論如何,你最終可能會使用一些服務器端解決方案,在那裏你的android設備只會獲取音頻並將其發送到服務器,這將進行比較。調查shazaam,playkontrol或soundhound ... – 2012-07-28 23:21:41

回答

3

對您的問題沒有簡單的答案。但是,對於初學者,您可能會了解音頻指紋如何工作。本文是Shazam的創作者寫一個良好的開端:

http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

我不知道如何該方法將會對狗叫工作,但也有一些概念有可能證明是有用的。

另一個需要研究的問題是FFT如何工作。這是一個包含我爲音高跟蹤編寫的代碼的教程,這是使用FFT的一種方式。您正在更多地關注語氣和音調如何與給定狗的共振峯結構相互作用。因此,你想要得到的參數可能包括基本音高(單獨這可能足以區分嗚嗚聲與其他樹皮)以及基本音高與高次諧波的比率,這將有助於確定樹皮的激進程度(I在這兒猜了一下):

http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

最後,你可能想要做一些研究,基本的語音識別和語音處理,因爲會有一些重疊。維基百科可能足以讓你開始。

編輯:哦,另外,一旦你確定了一些參數用於比較,你需要一種方法來比較你的多個參數到你的數據庫的聲音與多個參數。我不認爲shazam文章中的技術會起作用。你可以嘗試的一件事是Logistic Regression。還有其他選擇,但這可能是最簡單的。

1

我檢查了谷歌的開源LIB musicg API:http://code.google.com/p/musicg/

它的Java因此它可以在Android和它給出了兩個音頻文件的相似性指標。

+0

你能建議我任何適當的鏈接或代碼示例集成這種功能。我也面臨同樣的問題 – 2017-03-30 08:07:56