Ich fand Erics Antwort wirklich hilfreich. Ich wollte nur einige weitere Details hinzufügen, die ich gefunden habe.
Mit System.Speech.Recognition können die Desktop-Erkenner programmiert werden. SAPI- und Desktop-Erkenner haben die Produkte ausgeliefert:
- Windows XP: SAPI v5.1 und kein Erkenner
- Windows XP Tablet Edition: SAPI v5.1 und Recognizer v6.1
- Windows Vista: SAPI v5.3 und Recognizer v8.0
- Windows 7: SAPI v5.4 und Recognizer v8.0?
Server werden mit SAPI geliefert, aber ohne Erkenner:
- Windows Server 2003: SAPI v5.1 und kein Erkenner
- Windows Server 2008 und 2008 R2: SAPI v5.3? und kein Erkenner
Desktop-Erkenner wurden auch in Produkten wie Office ausgeliefert.
- Microsoft Office 2003: Recognizer v6.1
Microsoft.Speech.Recognition kann zum Programmieren der Servererkenner verwendet werden. Servererkenner wurden in den Produkten ausgeliefert:
- Sprachserver (verschiedene Versionen)
- Office Communications Server (OCS) (verschiedene Versionen)
- UCMA - eine verwaltete API für OCS, die (glaube ich) einen weiterverteilbaren Erkenner enthält
- Microsoft Server Speech Platform - Erkenner v10.2
Das vollständige SDK für die Microsoft Server Speech Platform 10.2-Version finden Sie unter http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4 . Die Sprachmaschine ist ein kostenloser Download. Version 11 ist jetzt unter http://www.microsoft.com/download/en/details.aspx?id=27226 verfügbar .
Informationen und Downloads zu Microsoft Speech Platform SDK 11 finden Sie unter:
Desktop-Erkenner können inproc ausgeführt oder gemeinsam genutzt werden. Freigegebene Erkenner sind auf dem Desktop nützlich, auf dem Sprachbefehle zur Steuerung offener Anwendungen verwendet werden. Servererkenner können nur inproc ausführen. Inproc-Erkenner werden verwendet, wenn eine einzelne Anwendung den Erkenner verwendet oder wenn WAV-Dateien oder Audiostreams erkannt werden müssen (gemeinsam genutzte Erkenner können keine Audiodateien verarbeiten, nur Audio von Eingabegeräten).
Nur Desktop-Spracherkenner enthalten eine Diktatgrammatik (vom System bereitgestellte Grammatik für das Diktieren von Freitext). Die Klasse System.Speech.Recognition.DictationGrammar hat keine Ergänzung im Microsoft.Speech-Namespace.
Sie können die APIs verwenden, um Ihre installierten Recongizer abzufragen
- Desktop: System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()
- Server: Microsoft.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()
Ich habe festgestellt, dass ich auch anhand der Registrierungsschlüssel sehen kann, welche Erkenner installiert sind:
- Desktop-Erkenner: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech \ Recognizers \ Tokens
- Servererkenner: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech Server \ v10.0 \ Recognizers \ Tokens
--- Update ---
Wie in Microsoft Speech Recognition beschrieben - welche Referenz muss ich hinzufügen? , Microsoft.Speech ist auch die API, die für den Kinect-Erkenner verwendet wird. Dies ist im MSDN-Artikel http://msdn.microsoft.com/en-us/library/hh855387.aspx dokumentiert
Hier ist der Link für die Sprachbibliothek (MS Server Speech Platform):
Microsoft Server Speech Platform 10.1 veröffentlicht (SR und TTS in 26 Sprachen)
quelle
Anscheinend hat Microsoft einen Artikel geschrieben, der die Unterschiede zwischen Microsoft Speech Platform und Windows SAPI aufklärt - https://msdn.microsoft.com/en-us/library/jj127858.aspx . Ein Unterschied, den ich beim Konvertieren des Spracherkennungscodes für Kinect von Microsoft.Speech in System.Speech (siehe http://github.com/birbilis/Hotspotizer ) festgestellt habe, war, dass ersterer SGRS-Grammatiken mit Tag-Format = Semantik / 1.0- unterstützt Literale, während letzteres dies nicht tut und Sie in Semantik / 1.0 konvertieren müssen, indem Sie x in out = "x" ändern; bei Tags
quelle