2010-09-17 120 views
1

是否可以比較兩個聲音? 例如應用程序已經聲音文件的MP3或任何格式,是可以比較的應用程序內部的任何靜態的聲音文件,錄製的聲音?比較聲音在App

任何意見都歡迎。

問候

+0

你是指_compare_?你的意思是他們是相同還是你的意思是他們是相似的,即相同的長度,相同的音量? – deanWombourne 2010-09-17 12:11:29

+0

其實我想檢查一下相似度,比如一個聲音文件包含「hello」聲音,我想比較一下男人或女人錄製的錄製的「hello」。 – fyasar 2010-09-17 12:26:06

+0

嗨fyasa,最後你是否解決了關於如何比較iOS中的兩種聲音的問題?你有什麼關於這方面的提示嗎? – doxsi 2012-11-16 11:34:03

回答

2

這個論壇線程有一個很好的答案(約三下) - http://www.dsprelated.com/showmessage/103820/1.php

訣竅是從mp3獲取解碼音頻 - 如果它們只是短'你好'的聲音,我會將它們作爲wav存儲在應用程序中,而不是解碼它們(儘管我從未使用CoreAudio或任何其他的框架之前,如此MP3解碼到內存可能很容易)。

當你有你的參考WAV和錄製的WAV,按照上述在後的步驟:

1做任何必要將文件轉換.WAV他們離散時間 信號:

http://www.sonicspot.com/guide/wavefiles.html

2時間扭曲或可能取決於兩個採樣率之間的差異 可能沒有必要:

http://en.wikipedia.org/wiki/Dynamic_time_warping

3時間扭曲後,截斷兩個信號,使其持續時間爲 等效。

4計算歸一化的能量譜從DFT的兩個信號密度(ESD):

http://en.wikipedia.org/wiki/Power_spectrum

6計算兩個 信號的歸一化的ESD的之間的平均平方誤差(MSE):

http://en.wikipedia.org/wiki/Mean_squared_error

歸一化的ESD的兩個 信號之間的MSE是 親近良好度量。如果你說有10個文件,其中2個近似是 相同,但其他的不是,這兩個近距離的 應該有一個相對較低的MSE 。兩個完美 相同的信號顯然具有零 MSE。理想情況下,兩個「當量」 信號以不同的時間尺度, (20秒的人交談與 5秒金花鼠),不同能量 (軟說話人VERUS叫喊 金花鼠),以及不同的相位 (取樣開始在 即時連續時間 輸入);應該還是有一個零, MSE但 固有的量化誤差DSP將產生MSE稍大 大於零。

http://en.wikipedia.org/wiki/Minimum_mean-square_error

你應該得到兩個不同的MSE值,一個你陽 - >錄製的音軌之間以及雌性 - >錄製的音軌之間的一個。與最低差異的比較可能是正確的性別。

我承認,我從來沒有試過這樣做,它看起來很難 - 祝你好運!

+0

Dean非常感謝你爲這些鑰匙。至少我會嘗試,如果我創造了一些東西,我會在這裏舉例。 – fyasar 2010-09-18 11:17:44