2011-02-08 153 views
6

我正在開發一個應用程序,我需要一些方法來比較兩個聲音,如果它們匹配或不匹配,我知道語音識別器是一種方法,但是,因爲(我認爲)它需要首先將語音轉換爲字符串,除了語音識別器支持的語言之外,它不適合其他語言......任何想法?就像老天電話用來做什麼,語音標籤它只是比較它的設置在Android或語音標籤(語音命令)中比較語音wav API

+0

您是否試圖認識到兩個錄音是相同的說話人(語音驗證或說話人識別),還是您試圖確定說出相同的單詞?你在配什麼?說話者的身份或他說的話? – 2011-02-08 19:12:28

+0

嗨。你如何解決這個問題? – 2014-05-02 06:59:43

回答

5

一個相對簡單的方式做,這是使用FFT在先前記錄的聲音語音輸入(快速傅立葉變換)將原始WAV文件的時域數據轉換爲頻域數據(其中轉換數組中的每個值代表特定頻段的相對幅度/強度)。

如果同一個人說兩遍同一個單詞,則兩個WAV文件中所得到的時域數據在數值上仍然會有很大差異。將兩個WAV文件轉換到頻率域(兩個文件使用相同大小的FFT窗口,即使這兩個文件的長度稍有不同)也會產生比原始WAV文件更相似的頻率數組。

不幸的是,我一直沒有找到任何專門針對Android的FFT庫。這裏有一個問題,它引用了一些基於Java的庫:

Signal processing library in Java?

1

的想法比較他們spectograms聲音的相似性。頻譜圖中的特徵是魯棒的並且抵抗噪聲,這對於分析兩個語音是很好的參考。 如果你採用這種方法,你應該首先找出聲音的特徵,而你需要知道如何比較兩個聲譜圖中的特徵,它是指模式識別。

This api http://code.google.com/p/musicg-sound-api/是用java編寫的,可以在android中使用。它捕獲波譜圖。