2012-05-25 79 views
3

我將錄製自己的聲音並將它們保存爲我的電腦中的wav文件。稍後我會說和電腦應與已有的/預先錄製的WAV文件,我的語音命令..如何比較兩個音頻數據?

問:如何檢查兩個音頻數據等於或之間有兩個音頻80%的比賽?

if(audio1 == audio2) 
    DO Task A 
else if(audio1 is a bit similar to audio 2) 
    DO TASK B 
else if(audio1 (80% match) audio 2) 
    DO TASK C 
end if 

什麼是比較兩個音頻數據的最佳方法?

+0

取決於您的音頻數據。它的聲音?是音樂嗎?它是純色調嗎?典型樣本的長度是多少? –

+0

@DavidBrabant是聲音只.. – Somnath

+0

認爲這將是我自己的聲音命令到我的電腦..「做到這一點」,「做到這一點」對我來說。 – Somnath

回答

1

相似之處,你的意思是純粹的數字?在這種情況下,互相關分析就足夠了。否則,如果您的意思是聽衆對聲音樣本的聽覺感知相似,那麼您需要閱讀聲學指紋識別。

編輯:

我從你想要做語音識別的一種簡單形式的更新猜測,是否正確?如果是這種情況,那麼在非常有限的語料庫中獲得信號的最佳匹配的最佳選擇是基於Dynamic Time Warping (DTW)的識別器。 Hidden Markov Model爲基礎的識別系統是最先進的,但基於DTW的系統將更加容易實現。

+0

我已經更新了我的問題。請檢查。 – Somnath

0

正如其他人所建議的,除非您可以提供更多信息,否則沒有簡單的解決方案。如果它們只是非常短的聲音,而這些聲音不會隨時間變化很大,那麼可能會做一個FFT並比較FFT的結果。

對於更復雜的事情,你可以採取類似的方法,但要做STFT。

然而,在所有可能情況下,您的問題都有一個特定於域的答案。

+0

這將是我自己的聲音命令到我的電腦..「做到這一點」,「做到這一點」我.. – Somnath

+0

我更詳細地解釋了需求。我已更新該帖子。請檢查。 – Somnath

2

你可以從Homemade Speech Recognition找到一些想法。這是針對.NET緊湊型框架,但可以很容易地適應普通vanilla .NET。該解決方案基於快速傅立葉變換

3

不幸的是,您只是試圖直接比較音頻波形,所以不會很快得到任何結果。關於言語和說話人識別的研究有很多,如果你不熟悉基本知識,你就會重新發明輪子。我覺得你在這裏取決於你真正想做的事

  • 開始閱讀有關的HMM,DTW(由learnvst提到的)多種選擇,並Mel-frequency Cepstral Coefficients知道從哪裏開始。
  • 使用現有的語音API,例如其採用低電平信號處理,你可以建立到應用程序的照顧Microsoft one
  • 使用的東西,甚至更高的水平,例如,給你來控制方面的能力Windows Speech Recognition Macros你的電腦通過語音(例如'玩紫霧')

這取決於你是否想要了解低水平的語音處理(這將涉及大量的數學),或者你是否只想要一些可行的幾乎沒有編碼。