Pregunta

Hay dos espacios de nombres y ensamblajes similares para el reconocimiento de voz en .NET. Estoy tratando de comprender las diferencias y cuando es apropiado usar una u otra.

Hay System.speech.Recognition desde el ensamblaje System.speech (en System.speech.dll). System.speech.dll es una DLL central en la Biblioteca de clases de .NET Framework 3.0 y más tarde

También hay Microsoft.speech.Recognition desde el ensamblaje Microsoft.speech (en Microsoft.speech.dll). Microsoft.speech.dll es parte del UCMA 2.0 SDK

Encuentro los documentos confusos y tengo las siguientes preguntas:

System.speech.Recognition dice que es para "la tecnología de habla de escritorio de Windows", ¿esto significa que no puede usarse en un sistema operativo de servidor o no se puede utilizar para aplicaciones de alta escala?

El SDK de discurso UCMA 2.0 ( http://msdn.microsoft.com/en-us/library/dd266409%28V=Office.13%29.aspx ) dice que requiere Microsoft Office Communications Server 2007 R2 como un requisito previo. Sin embargo, me han dicho en conferencias y reuniones que si no necesito características de OCS como presencia y flujo de trabajo, puedo usar la API del habla UCMA 2.0 sin OCS. ¿Es esto cierto?

Si estoy creando una aplicación de reconocimiento simple para una aplicación de servidor (digamos que quería transcribir automáticamente los correos de voz) y no necesito funciones de OCS, ¿cuáles son las diferencias entre las dos API?

¿Fue útil?

Solución

La respuesta corta es que Microsoft.speech.Recognition utiliza la versión del servidor de SAPI, mientras que System.speech.Cognition usa la versión de escritorio de SAPI.

Las API son en su mayoría las mismas, pero los motores subyacentes son diferentes. Por lo general, el motor del servidor está diseñado para aceptar audio de calidad telefónica para aplicaciones de comando y control; El motor de escritorio está diseñado para aceptar audio de mayor calidad para aplicaciones de comando y control y dictado.

Puede usar System.speech.Recognition en un sistema operativo de servidor, pero no está diseñado para escalar casi tan bien como Microsoft.speech.Cognition.

Las diferencias son que el motor del servidor no necesitará capacitación y funcionará con audio de menor calidad, pero tendrá una calidad de reconocimiento más baja que el motor de escritorio.

Otros consejos

encontré Respuesta de Eric Realmente útil, solo quería agregar más detalles que encontré.

System.speech.Recognition se puede utilizar para programar los reconocedores de escritorio. Los reconocedores de SAPI y de escritorio han enviado los productos:

  • Windows XP: SAPI V5.1 y sin reconocimiento
  • Windows XP Tablet Edition: SAPI V5.1 y Reconconator V6.1
  • Windows Vista: SAPI V5.3 y Reconconator V8.0
  • Windows 7: SAPI V5.4 y Reconocyer V8.0?

Los servidores vienen con SAPI, pero no hay reconocimiento:

  • Windows Server 2003: SAPI V5.1 y sin reconocimiento
  • Windows Server 2008 y 2008 R2: SAPI V5.3? y no reconocer

Los reconocedores de escritorio también han enviado productos como Office.

  • Microsoft Office 2003: Reconocido V6.1

Microsoft.speech.Recognition se puede usar para programar los reconocedores del servidor. Los reconocedores del servidor han enviado los productos:

  • Servidor de voz (varias versiones)
  • Office Communications Server (OCS) (varias versiones)
  • UCMA: que es una API administrada para OCS que (creo) incluyó un reconocimiento redistribuible
  • Microsoft Server Speech Platform - Reconoce V10.2

El SDK completo para la versión de Microsoft Server Speech Platform 10.2 está disponible en http://www.microsoft.com/downloads/en/details.aspx?familyid=1b1604d3-4f66-4241-9a21-90a294a5c9a4. El motor del habla es una descarga gratuita. La versión 11 ahora está disponible en http://www.microsoft.com/download/en/details.aspx?id=27226.

Para Microsoft Speech Platform SDK 11 Información y descargas, consulte:

Los reconocedores de escritorio están diseñados para ejecutar inProc o compartidos. Los reconocedores compartidos son útiles en el escritorio donde se utilizan comandos de voz para controlar cualquier aplicación abierta. Los reconocedores del servidor solo pueden ejecutar INPROC. Los reconocedores de INPROC se utilizan cuando una sola aplicación usa el reconocimiento o cuando los archivos WAV o las transmisiones de audio deben ser reconocidas (los reconocedores compartidos no pueden procesar archivos de audio, solo audio desde dispositivos de entrada).

Solo los reconocedores de voz de escritorio incluyen una gramática de dictado (el sistema proporcionado gramática utilizada para el dictado de texto libre). La clase System.speech.Recognition.DictationGrammar no tiene complemento en el espacio de nombres de Microsoft.speech.

Puede usar el uso de las API para consultar Determinar sus reconocedores instalados

  • Desktop: System.speech.Recognition.speechRecognitionEngine.installedRecognizers ()
  • Servidor: microsoft.speech.recognition.speechRecognitionEngine.installedRecognizers ()

Descubrí que también puedo ver qué reconocedores se instalan al mirar las claves de registro:

  • Reconocedores de escritorio: HKEY_LOCAL_MACHINE Software Microsoft Speech Reconociendo Tokens
  • Reconocedores del servidor: HKEY_LOCAL_MACHINE Software Microsoft Speech Server V10.0 Reconocientes Tokens

--- Actualizar ---

Como se discutió en Reconocimiento de voz de Microsoft: ¿qué referencia tengo que agregar?, Microsoft.speech también es la API utilizada para el reconocimiento de Kinect. Esto se documenta en el artículo de MSDN http://msdn.microsoft.com/en-us/library/hh855387.aspx

Aquí está el enlace para la biblioteca de discursos (plataforma de discurso MS Server):

Microsoft Server Speech Platform 10.1 lanzado (SR y TTS en 26 idiomas)

Parece que Microsoft escribió un artículo que aclara las cosas con respecto a las diferencias entre Microsoft Speech Platform y Windows SAPI - https://msdn.microsoft.com/en-us/library/jj127858.aspx. Una diferencia me encontré mientras convirtiendo el código de reconocimiento de voz para Kinect de Microsoft.speech a System.speech (ver http://github.com/birbilis/hotspotizer) fue que el primero admite gramáticas SGRS con TAG-format = semántica/1.0 litros, mientras que el segundo no y tiene que convertir a semántica/1.0 cambiando x a out = "x"; en las etiquetas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top