2010-11-04 118 views
5

我正在爲兒童開發一些軟件,並且希望增加軟件對一些非語音聲音的響應能力。例如,拍手,吠叫,吹口哨,放屁聲等等。非語音噪音或聲音識別軟件?

我以前用過CMU Sphinx和Windows Speech API,但是據我所知,語音噪音,事實上我相信它們會積極地將其濾除。

總的來說,我正在尋找「我如何獲得這個功能」,但我懷疑它可能幫助,如果我把它分解成是我猜測的該怎麼尋找下一個三個問題:

  1. 有沒有辦法通過改變聲學模型或發音詞典來使用主要語音識別引擎之一來識別非單詞聲音?
  2. (或)是否已有現成的圖書館進行非字詞噪音識別?
  3. (或者)我對隱馬爾可夫模型和大學的語音識別基礎技術有一些瞭解,但沒有很好的估計從零開始創建一個非常小的噪音/聲音識別器有多困難(假設< 20聲會被認出)。如果1)和2)失敗,我們估計自己需要多長時間?

感謝

+1

[我的回答](http://stackoverflow.com/q/8285673/22364)[來自連續麥克風流的非語音,非音樂聲音的實時識別](http:// stackoverflow.com/q/8285673)可能是相關的。 – 2011-11-27 12:52:37

回答

0

是的,你可以使用語音識別軟件,如CMU獅身人面像進行識別的非語音聲音。爲此,您需要創建自己的聲學和語言模型,並定義僅限於您的任務的詞典。但爲了訓練相應的聲學模型,您必須有足夠的訓練數據以及帶註釋的感興趣的聲音。

總之,步驟的順序如下:

首先,對於訓練準備資源:詞典,字典等的此處所描述的方法:http://cmusphinx.sourceforge.net/wiki/tutorialam。但就你而言,你需要重新定義音素集和詞典。也就是說,你應該把填充物模型化爲真實的單詞(所以,不要用++左右),你不需要定義完整的音素集。有很多可能性,但最簡單的可能是爲所有語音音素製作單一模型。因此,你的詞彙會看起來像:

CLAP CLAP 
BARK BARK 
WHISTLE WHISTLE 
FART FART 
SPEECH SPEECH 

其次,帶標籤的準備訓練數據:類似VoxForge的東西,但文本註釋必須從你的詞典中只包含標籤。當然,非言語聲音也必須正確標記。這裏的好問題是從哪裏獲得足夠多的此類數據。但我想這應該是可能的。

有了這些,你可以訓練你的模型。與語音識別相比,此任務更簡單,例如,您不需要使用三音電話,只需使用單音。

假設任何聲音/語音相等的先驗概率,最簡單的語言模型可以是一個類似環的語法(http://cmusphinx.sourceforge.net/wiki/tutoriallm):

#JSGF V1.0; 
/** 
* JSGF Grammar for Hello World example 
*/ 
grammar foo; 
public <foo> = (CLAP | BARK | WHISTLE | FART | SPEECH)+ ; 

這是使用ASR工具包,你的任務很基本的方法。可以通過微調HMM配置,使用統計語言模型和使用細粒音素建模(例如區分元音和輔音而不是單個SPEECH模型,這取決於您的訓練數據的性質)來進一步改進。

在語音識別的框架之外,您可以構建一個簡單的靜態分類器,它將逐幀分析輸入數據。對頻譜圖進行操作的卷積神經網絡對於此任務表現相當好。