2010-04-24 79 views
3

我想用ruby構建語音識別引擎。我知道我永遠不會到達那裏,只是爲了好玩。我需要獲取存儲在wav文件中的聲音頻率的數據,以便與我想要識別的具有不同聲音的數據進行比較。 我會在ruby中編寫代碼,但是我不認爲有任何用Ruby編寫的庫,如果有的話它們會太慢。 關於ruby的好處是我可以通過IronRuby或Java通過Jruby爲.net使用庫。 我怎樣才能得到頻率數據?如何從wave文件中獲取音頻數據?

回答

3

波形文件不是太複雜,實質上它只是一系列音頻樣本:http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html

一旦您可以讀取樣本,下一步就是通過FFT轉換來運行它們,以便獲取頻率內容。應該有一些可以使用的開源實現,或者你可以自己實現一個。

你所要做的事情需要對信號處理背後的音頻和數學有所瞭解,所以也許你會想從一本關於這個主題的書開始。

+0

+1,專門爲最後的建議 – leonbloy 2010-04-25 02:26:23

0

您應該閱讀一些關於說話人識別的論文。而且你也可以在因特網上找到許多庫來解決這個問題。 要建立一個說話人識別系統(可以識別系統或驗證系統),你需要:

  • 音頻功能(你想找到的東西,將描述你有每個揚聲器明確地聲音數據集)中,大多數音頻特徵是在分類術語頻譜上提取的(這意味着對信號應該靜止的音頻信號的小幀採取的信號進行FFT處理)。但我們從不將頻譜本身(FFT的對數)作爲描述符(頻譜中太多無用的信息)。描述某人的聲音最重要的是頻譜的包絡。你一定要看一下名爲MFCC的音頻描述符(對於Mel頻率倒譜系數),這是廣泛用於揚聲器識別任務的音頻特徵的動機。

  • 那麼你還需要一個好的分類器(類似於GMM,SVM ...),因爲這個問題是使用監督機器學習算法解決的。基本上,您需要爲每個想要識別的揚聲器訓練模型,然後使用尚未用於訓練的數據測試模型。該模型

相關問題