2013-05-04 3 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 

И это функция, которая начала Recognition Engine:

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 в основном является фоновым шумом, вызывающим события reco. Вам придется поиграть с тем, что значение уверенности имеет смысл, поскольку оно отличается высокой грамматикой и средой.

Другая вещь, которую вы можете сделать, это изменить триггерное слово. Я сомневаюсь, что в лексиконе для речевого движка есть фраза SIVRAJ. В этом случае двигатель попытается сделать предположение относительно того, какие фонемы составляют это слово (вы можете поставить их самостоятельно в грамматике как пользовательское произношение, если у вас есть лингвистический фон). Что-то вроде Start Recording будет иметь больше шансов дать вам более достойный опыт.

 Смежные вопросы

  • Нет связанных вопросов^_^