I've got a question about Speech SDK and C++.
I've written this Code in C#:
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Speech;
using System.Speech.Recognition;
using System.Text;
namespace mini_speech_demo
{
class Program
{
// Die main-Funktion wird alle Aufgaben ausführen. In einem größeren Programm würde man das eher auslagern.
static void Main(string[] args)
{
// Hier werden recognition-engine und grammar vorbereitet. SpeechRecognitionEngine bedeutet, dass nur unser Programm auf die Spracherkennung zugreift.
Console.WriteLine("Firing up speech-demo");
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
recognizer.SetInputToDefaultAudioDevice();
// hier setzen wir einen Event-Handler für das "Recognized"-Event. Es gibt noch eine Menge anderer Events.
// Die aufgerufene Funktion recognizer_SpeechRecognized wird aufgerufen.
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
// der try-catch block ist eigentlich optional, aber ich hatte am Anfang so viele Exceptions, dass ich ihn drin gelassen habe.
try
{
Grammar grammar = new Grammar("grammar.xml", "thema");
recognizer.UnloadAllGrammars();
recognizer.LoadGrammar(grammar);
// mit folgender Zeile wird die eigentliche Erkennung gestartet.
recognizer.RecognizeAsync(RecognizeMode.Multiple);
}
catch (Exception e)
{
Console.WriteLine("Exception aufgetreten: " + e.Message);
return;
}
// wenn wir es bis hier geschafft haben, ist alles ok. Das zeigen wir dem Benutzer an...
Console.WriteLine("Speech-Engine up and running");
// ... und gehen in eine Schleife, die auf Tastendruck beendet wird (und mit ihr auch das Programm).
while (!Console.KeyAvailable)
{
System.Threading.Thread.Sleep(100);
}
Console.WriteLine("terminating.");
// Jetzt noch schnell aufräumen.
recognizer.Dispose();
return;
}
// Diese Funktion wird aufgerufen, sobald etwas erkannt wurde.
// In e.Result.Text steht der erkannte Text.
private static void recognizer_SpeechRecognized(object sender, System.Speech.Recognition.SpeechRecognizedEventArgs e)
{
Console.WriteLine(e.Result.Text + " (" + e.Result.Confidence.ToString() + ")");
}
}
}
The grammar.xml is this:
Code: Select all
<grammar xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar
http://www.w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="de-DE" version="1.0">
<rule id="thema" scope="public">
<one-of>
<item>Design</item>
<item>Wirtschaft</item>
<item>Informatik</item>
</one-of>
</rule>
</grammar>
- Systen
- System.Core
- System.Data
- System.Data.DataSetExtensions
- System.Drawing
- System.Speech
- System.Windows.Forms
- System.Xml
- System.Xml.Linq