Frage

In .NET gibt es zwei ähnliche Namespaces und Assemblies für die Spracherkennung. Ich versuche die Unterschiede zu verstehen und wenn es angebracht ist, das eine oder andere zu verwenden.

Es gibt system.speech.cognition aus dem Assembly -System.speech (in System.speech.dll). System.speech.dll ist eine Kern -DLL in der .NET Framework Class Library 3.0 und später

Es gibt auch Microsoft.speech.recognition aus der Assembly microsoft.speech (in microsoft.speech.dll). Microsoft.speech.dll ist Teil des UCMA 2.0 SDK

Ich finde die Dokumente verwirrend und habe die folgenden Fragen:

System.speech.Recognition sagt, dass es für "die Windows -Desktop -Sprachtechnologie" ist, bedeutet dies, dass sie nicht auf einem Server -Betriebssystem verwendet werden kann oder nicht für hochskonische Anwendungen verwendet werden kann?

Die UCMA 2.0 -Sprache SDK ( http://msdn.microsoft.com/en-us/library/dd266409%28v=office.13%29.aspx ) sagt, dass Microsoft Office Communications Server 2007 R2 als Voraussetzung erforderlich ist. Auf Konferenzen und Meetings wurde mir jedoch gesagt, dass ich die UCMA 2.0 -Sprach -API ohne OCS verwenden kann, wenn ich keine OCS -Funktionen wie Präsenz und Workflow benötige. Ist das wahr?

Wenn ich eine einfache Anerkennungs -App für eine Serveranwendung erstelle (sagen wir, ich wollte automatisch Voicemails transkribieren) und ich brauche keine Funktionen von OCs, was sind die Unterschiede zwischen den beiden APIs?

War es hilfreich?

Lösung

Die kurze Antwort lautet, dass Microsoft.speech.recognition die Serverversion von SAPI verwendet, während System.speech.recognition die Desktop -Version von SAPI verwendet.

Die APIs sind meistens gleich, aber die zugrunde liegenden Motoren sind unterschiedlich. In der Regel akzeptiert die Server-Engine, um telefonische Audio für Befehls- und Steueranwendungen zu akzeptieren. Die Desktop-Engine ist so konzipiert, dass sie sowohl für Befehls- als auch für Steuer- und Diktatanwendungen von höherer Qualität akzeptiert werden.

Sie können system.speech.cognition auf einem Server -Betriebssystem verwenden, es ist jedoch nicht so konzipiert, dass sie annähernd so gut wie Microsoft.speech.recognition skaliert werden.

Die Unterschiede sind, dass die Server-Engine kein Training benötigt und mit einem Audio von geringerer Qualität funktioniert, aber eine niedrigere Erkennungsqualität als die Desktop-Engine hat.

Andere Tipps

ich fand Erics Antwort Wirklich hilfreich, ich wollte nur einige weitere Details hinzufügen, die ich gefunden habe.

System.speech.recognition kann verwendet werden, um die Desktop -Erkenner zu programmieren. SAPI- und Desktop -Erkenntnisse haben die Produkte ausgeliefert:

  • Windows XP: SAPI V5.1 und kein Erkenntnis
  • Windows XP Tablet Edition: SAPI V5.1 und Erkenntnis v6.1
  • Windows Vista: SAPI V5.3 und Erkenntnis v8.0
  • Windows 7: SAPI V5.4 und Erkenner V8.0?

Server kommen mit SAPI, aber kein Erkenntnis:

  • Windows Server 2003: SAPI V5.1 und kein Erkenntnis
  • Windows Server 2008 und 2008 R2: SAPI V5.3? und kein Erkenner

Desktop -Erkenntnisse haben auch Produkte wie Büro geliefert.

  • Microsoft Office 2003: Erkenntnis v6.1

Microsoft.speech.recognition kann verwendet werden, um die Servererkenner zu programmieren. Servererkenner haben die Produkte versendet:

  • Sprachserver (verschiedene Versionen)
  • Office Communications Server (OCS) (verschiedene Versionen)
  • UCMA - Das ist eine verwaltete API für OCs, die (glaube ich) ein umverteilbares Erkenntnis enthielt
  • Microsoft Server Sprachplattform - Erkenntnis v10.2

Die vollständige SDK für die Microsoft Server Speech -Plattform 10.2 -Version ist unter verfügbar http://www.microsoft.com/downloads/en/details.aspx?familyid=1b1604d3-4f66-4241-9a21-90a294a5c9a4. Die Sprachmaschine ist ein kostenloser Download. Version 11 ist jetzt erhältlich bei http://www.microsoft.com/download/en/details.aspx?id=27226.

Für Microsoft Speech Platform SDK 11 Info und Downloads siehe:

Desktop -Erkenntnisse sind so konzipiert, dass sie Inproc oder gemeinsam genutzt werden. Freigegebene Erkenntnisse sind auf dem Desktop nützlich, auf dem Sprachbefehle zur Steuerung aller offenen Anwendungen verwendet werden. Serverkenner können nur Inproc ausführen. INPROC -Erkenner werden verwendet, wenn eine einzelne Anwendung den Erkenner verwendet oder wenn WAV -Dateien oder Audio -Streams erkannt werden müssen (gemeinsame Erkenntnisse können Audiodateien nicht verarbeiten, nur Audio von Eingabegeräten).

Nur Desktop -Spracherkenner umfassen eine Diktatgrammatik (System zur Verfügung gestellten Grammatik, die zum kostenlosen Textdiktation verwendet wird). Die Klassensystem.speech.Recognition.DictationGrammar hat im microsoft.speech -Namespace keine Ergänzung.

Sie können die APIs verwenden, um abfragen zu

  • Desktop: System.speech.Recognition.speechrecognitionentengine.installedRecognizer ()
  • Server: microsoft.speech.recognition.speechRecognitionSeGine.installedRecognizer ()

Ich stellte fest, dass ich auch sehen kann, welche Anerkenner anhand der Registrierungsschlüssel installiert werden:

  • Desktop -Erkenner: HKEY_LOCAL_MACHINE Software Microsoft rede Recussions Tokens
  • Server -Erkenner: hkey_local_maachine software microsoft rede server v10.0 ecussions tokens

--- Aktualisieren ---

Wie in Microsoft Spracherkennung - Welche Referenz muss ich hinzufügen?, Microsoft.SePeech ist auch die API, die für den Kinect -Erkenner verwendet wird. Dies ist im MSDN -Artikel dokumentiert http://msdn.microsoft.com/en-us/library/hh855387.aspx

Hier ist der Link für die Sprachbibliothek (MS Server -Sprachplattform):

Microsoft Server Sprachplattform 10.1 veröffentlicht (SR und TTS in 26 Sprachen)

Microsoft hat einen Artikel geschrieben, der die Dinge hinsichtlich der Unterschiede zwischen Microsoft -Sprachplattform und Windows SAPI - klar macht - https://msdn.microsoft.com/en-us/library/jj127858.aspx. Ein Unterschied, den ich beim Konvertieren des Spracherkennungscode für Kinect von microsoft.speech in system.speech fand (siehe http://github.com/birbilis/hotspotizer) war, dass die ersteren SGRS-Grammatiken mit Tag-format = semantics/1,0-Literalen unterstützt, während letztere nicht und Sie müssen in Semantik/1,0 konvertieren, indem Sie X in out = "x" wechseln; bei Tags

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top