我想以編程方式比較2個音頻文件。 例如:我的iPhone應用程序中有一個聲音文件,然後我錄製另一個。我想檢查現有聲音是否與錄製的聲音相匹配( - 類似於語音識別)。如何以編程方式比較2個音頻文件?
我該如何做到這一點?
我想以編程方式比較2個音頻文件。 例如:我的iPhone應用程序中有一個聲音文件,然後我錄製另一個。我想檢查現有聲音是否與錄製的聲音相匹配( - 類似於語音識別)。如何以編程方式比較2個音頻文件?
我該如何做到這一點?
這就是所謂的音頻指紋。有一些開源項目可以從中獲得一些想法。看看這裏:Audio Fingerprint - MusicBrainz。
有一臺服務器正在進行不適合移動設備的音頻指紋計算。然後您的移動應用程序將您的文件上傳到服務器,並獲取分析結果以供顯示。所以我不認爲編程語言實現它很重要。以下是一些AF實現。
的Java:http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/
它可以是相當密集兆赫。
的DSP細節是在著名的文字:
這不會考慮口音和說話速度的差異 –
我覺得以及您可以嘗試選擇來自兩個音頻軌道的第二個樣本,使它們在幅度上正常化並且用帶通濾波器並且在嘗試使用相關器之後減少噪聲。
例如,您可能需要5秒鐘的樣本中的一個,並使其滑過第二個樣本,以計算任何時間移位時的交叉相關。 (請小心,如果您服用的包裝太小,您可能會在不期待的情況下產生高度相關性,並且會減弱由於信號剪切和互相關造成的副作用)。 之後你可以收集一個數組與al的互相關結果,並得到maximun的索引。
然後,你應該設置實驗性的決定何時喲假設包裝袋相同。這將根據您正在比較的音軌的質量而改變。
我實現了一個coriaryor來接收和區分無線通信中的前導碼。我的腳本實際上是在matlab中完成的。如果您有興趣,我可以嘗試找到共同部分並將其發送給您。
這將是一個太長的代碼粘貼hene在論壇。如果你想讓我知道,我會盡快將它發送給你。
歡呼聲
我感興趣的是,我發現了另一個在Java上僞造的解決方案。你可以從SVN中檢索代碼。
http://sourceforge.net/projects/comparisong/
給它一看,讓我知道,如果它爲你工作。
歡呼
感謝您的鏈接miamk。但是你試過這個嗎?我不確定,如何實現它。再次感謝 – iscavengers
好吧,如果您正在尋找現成的,複製粘貼的Objective-C代碼或庫以放置在您的iOS項目中,現在可以停止 - 您不會找到那樣的東西(至少在我的知識範圍內)。你必須自己編寫代碼。 – MiguelB