2013-05-04 85 views
5

我想知道如何與System.Speech下來麥克風靈敏度在C#..System.Speech下來麥克風靈敏度

要解釋一下,我有一個語法文件,和我的應用程序應該開始的時候我記錄我說SIVRAJ(我的節目的名字)

不過,我可以說完全不同的東西,我的應用程序能理解的東西「SIVRAJ」 ......

沒有從我的XML文件中的一部分:

<rule id="mouskie" scope="public"> 
<item> 
    <one-of> 
    <item>SIVRAJ</item> 
    </one-of> 
</item> 
<ruleref special="GARBAGE" /> 
<one-of> 
    <item> 
    <one-of> 
     <item>quit</item> 
    </one-of> 
    <tag>$.mouskie={}; $.mouskie._value="QUIT";</tag> // quit programm when i say SIVRAJ + quit 
    </item> 
    ..... etc etc 

這是啓動識別引擎的功能:

SrgsDocument xmlGrammar = new SrgsDocument("Grammaire.grxml"); 
Grammar grammar = new Grammar(xmlGrammar); 
ASREngine = new SpeechRecognitionEngine(); 
ASREngine.SetInputToDefaultAudioDevice(); 
ASREngine.LoadGrammar(grammar); 

ASREngine.SpeechRecognized += ASREngine_SpeechRecognized; 
ASREngine.SpeechRecognitionRejected += ASREngine_SpeechRecognitionRejected; 
ASREngine.SpeechHypothesized += ASREngine_SpeechHypothesized; 

最後,我在這裏恢復數據:

recoText.Text = e.Result.Text; 
devine.Text = ""; 
affiche.Text = ""; 

string baseCommand = e.Result.Semantics["mouskie"].Value.ToString(); 
commandText.Text = baseCommand; 

if (baseCommand.Equals("QUIT")) 
{ 
    m_SpeechSynth.Speech("au revoir", VoiceGender.Male, VoiceAge.Adult); 
    Environment.Exit(0); 
} 

回答

2

在這種情況下,你真的不是在尋找麥克風靈敏度。我相信你正在尋找的是短語的信心。

當引擎返回識別結果時,它也會返回一個置信度分數。 「基本上說這就是我對自己的信心,我所聽到的就是你所說的。」

if (Speech.Recognition.RecognitionResult.Confidence > .20) 
{ 
    //do some good stuff 
} 
else 
{ 
    // ignore 
} 

這包含從0到1的值,其中1是最有信心的,0基本上是引起記錄事件的背景噪音。因爲它具有高度的語法和特定的環境,所以你將不得不玩弄自信的價值。

你可以做的另一件事是改變觸發詞。我懷疑語音引擎的詞彙表中有SIVRAJ這個短語。在這種情況下,引擎會嘗試猜測什麼音素組成這個詞(如果您有語言背景,您可以自己的語法作爲自定義發音提供)。像Start Recording這樣的東西將有更好的機會給你更體面的體驗。