我需要幫助。我想製作一個應用程序,它能夠識別我在說什麼,並且能夠做我說的東西。例如:帶有言論自由的語音識別
如果我說open [notepad]
,其中[notepad]
可以是任何應用程序的名稱,它需要打開記事本。
我想我需要同時使用語法和DictationGrammar,但我不知道怎麼辦。請幫幫我。謝謝。
我的代碼現在看起來像這樣:
string WelcomeSentence = "Hello sir, how are you today";
SpeechSynthesizer sSynth = new SpeechSynthesizer();
PromptBuilder pBuilder = new PromptBuilder();
SpeechRecognitionEngine sRecognize = new SpeechRecognitionEngine();
private void frmMain_Load(object sender, EventArgs e)
{
sSynth.SelectVoice("IVONA Amy");
sSynth.SetOutputToDefaultAudioDevice();
pBuilder.ClearContent();
pBuilder.AppendText(WelcomeSentence);
sSynth.Speak(pBuilder);
Choices sList = new Choices();
sList.Add(File.ReadAllLines(@"Commands.ekd"));
Grammar gr = new Grammar(new GrammarBuilder(sList));
DictationGrammar dgr = new DictationGrammar();
try
{
sRecognize.RequestRecognizerUpdate();
sRecognize.LoadGrammar(gr);
sRecognize.SpeechRecognized += sRecognize_SpeechRecognized;
sRecognize.SetInputToDefaultAudioDevice();
sRecognize.RecognizeAsync(RecognizeMode.Multiple);
sRecognize.Recognize();
}
catch { return; }
}
private void sRecognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Text == "open notepad")
{
System.Diagnostics.Process.Start(@"C:\Windows\System32\Notepad.exe");
}
else
{
pBuilder.ClearContent();
pBuilder.AppendText(e.Result.Text);
sSynth.Speak(pBuilder);
}
}
請幫助。
在這個問題上,我給你添加代碼和創建一個可讀的問題的滿分。但我認爲它太廣泛了。你需要把你的問題縮小到更具體的語言。 – paqogomez
FWIW ..你可能會在幾個月前對[我發佈的答案](http://stackoverflow.com/a/18605036/2589202)感興趣。 – paqogomez
我不知道我還能說什麼。我只想讓應用程序將open命令識別爲命令,並將notepad識別爲未添加到語法中的應用程序。 – TheNeosrb