Question

Il y a deux espaces de noms similaires et assemblées pour la reconnaissance vocale dans .NET. Je suis en train de comprendre les différences et quand il convient d'utiliser l'un ou l'autre.

Il est System.Speech.Recognition du System.Speech de montage (en System.Speech.dll). System.Speech.dll est une DLL de base dans la bibliothèque de classes .NET Framework 3.0 et versions ultérieures

Il y a aussi Microsoft.Speech.Recognition du Microsoft.Speech de montage (en microsoft.speech.dll). Microsoft.Speech.dll fait partie du SDK UCMA 2.0

Je trouve les documents confus et j'ai les questions suivantes:

System.Speech.Recognition dit qu'il est pour « La technologie vocale de bureau Windows », cela signifie qu'il ne peut pas être utilisé sur un système d'exploitation de serveur ou ne peut pas être utilisé pour des applications à haute échelle?

Le UCMA 2.0 Speech SDK ( http: //msdn.microsoft.com/en-us/library/dd266409%28v=office.13%29.aspx ) dit qu'il a besoin de Microsoft office Communications Server 2007 R2 en tant que condition sine qua non. Cependant, on m'a dit à des conférences et des réunions que si je ne demande pas OCS fonctionnalités telles que la présence et flux de travail que je peux utiliser l'UCMA 2.0 Speech API sans OCS. Est-ce vrai?

Si je construis une application simple de reconnaissance pour une application serveur (dire que je voulais automatiquement Transcribe messages vocaux) et je ne caractéristiques pas besoin d'OCS, quelles sont les différences entre les deux API?

Était-ce utile?

La solution

La réponse courte est que Microsoft.Speech.Recognition utilise la version Server de SAPI, tandis que System.Speech.Recognition utilise la version de bureau SAPI.

Les API sont essentiellement les mêmes, mais les moteurs sous-jacents sont différents. En règle générale, le moteur de serveur est conçu pour accepter une qualité audio téléphonique pour les applications de commande et de contrôle; le moteur Desktop est conçu pour accepter une meilleure qualité audio pour les commandes et de contrôle et les applications dictée.

Vous pouvez utiliser System.Speech.Recognition sur un système d'exploitation du serveur, mais il n'est pas conçu à l'échelle presque aussi bien que Microsoft.Speech.Recognition.

Les différences sont que le moteur du serveur ne sera pas besoin d'une formation, et travaillera avec l'audio de qualité inférieure, mais une qualité de reconnaissance plus faible que le moteur de bureau.

Autres conseils

J'ai trouvé réponse de Eric vraiment utile, je voulais juste ajouter quelques détails que je trouve.

System.Speech.Recognition peut être utilisé pour programmer les modules de reconnaissance de bureau. SAPI et de bureau ont livré reconnaisseurs dans les produits:

  • Windows XP: SAPI v5.1 et pas reconnaisseur
  • Windows XP Tablet Edition: SAPI v5.1 et v6.1 Recognizer
  • Windows Vista: SAPI v5.3 et v8.0 Recognizer
  • Windows 7: SAPI v5.4 et v8.0 Recognizer

Les serveurs sont livrés avec SAPI, mais pas de reconnaissance:

  • Windows Server 2003: SAPI v5.1 et pas reconnaisseur
  • Windows Server 2008 et 2008 R2: SAPI v5.3? et pas reconnaisseur

Bureau ont également reconnaisseurs livré dans des produits comme bureau.

  • Microsoft Office 2003: Recognizer v6.1

Microsoft.Speech.Recognition peut être utilisé pour programmer les serveurs de reconnaissance. Server ont reconnaisseurs livré dans les produits:

  • Speech Server (différentes versions)
  • Office Communications Server (OCS) (différentes versions)
  • UCMA - qui est une API gérée pour OCS qui (je crois) inclus un reconnaisseur redistribuable
  • serveur Microsoft Speech Platform - v10.2 reconnaisseur

Le SDK complet pour la version plate-forme vocale serveur Microsoft 10.2 est disponible à l'adresse http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4 . Le moteur de la parole est un téléchargement gratuit. La version 11 est maintenant disponible à http://www.microsoft.com/download /en/details.aspx?id=27226 .

Pour Microsoft Speech Platform SDK 11 informations et téléchargements, voir:

Bureau sont conçus reconnaisseurs à terme inproc ou partagé. partagés sont utiles reconnaisseurs sur le bureau où les commandes vocales sont utilisées pour contrôler toutes les applications ouvertes. serveur de reconnaissance ne peut fonctionner que inproc. inproc sont reconnaisseurs utilisés lorsqu'une seule application utilise ou lorsque la reconnaissance des fichiers wav ou flux audio doivent être reconnus (partagé ne peut pas reconnaisseurs traiter des fichiers audio, mais uniquement audio à partir de périphériques d'entrée).

Seulement de reconnaissance vocale de bureau comprennent une grammaire de dictée (système fourni grammaire utilisé pour la dictée de texte libre). La classe System.Speech.Recognition.DictationGrammar n'a pas complément dans l'espace de noms Microsoft.Speech.

Vous pouvez utiliser utiliser les API pour déterminer votre requête recongizers installés

  • Bureau: (System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers)
  • Serveur: Microsoft.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()

Je trouve que je peux voir ce que sont installés en reconnaisseurs regardant les clés de Registre:

  • Bureau de reconnaissance: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech \ Recognizers \ Tokens
  • Server: reconnaisseurs HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech Server \ v10.0 \ Recognizers \ Tokens

--- Mise à jour ---

Comme indiqué dans Microsoft Speech Recognition - Quelle référence dois-je ajouter , Microsoft.Speech est également l'API utilisée pour le Kinect de reconnaissance. Ceci est documenté dans l'article MSDN http://msdn.microsoft .com / fr-fr / bibliothèque / hh855387.aspx

Voici le lien pour la bibliothèque vocale (Plate-forme serveur MS Speech):

serveur Microsoft Speech Platform 10.1 Sortie (SR et TTS en 26 langues)

Microsoft Semble a écrit un article qui efface les choses en ce qui concerne les différences entre Microsoft Speech Platform et Windows SAPI - https://msdn.microsoft.com/en-us/library/jj127858.aspx . Une différence que je me suis retrouvé lors de la conversion du code de reconnaissance vocale pour Kinect de Microsoft.Speech à System.Speech (voir http: // github .com / Birbilis / Hotspotizer ) était que l'ancien supports SGR avec le tag-grammaires format = sémantique / 1.0-littéraux, alors que celui-ci ne fonctionne pas et vous devez convertir à la sémantique / 1.0 en changeant x pour sortir = "X"; à balises

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top