API de voz de Microsoft

Interfaz de programación de aplicaciones para Microsoft Windows

La interfaz de programación de aplicaciones de voz o SAPI es una API desarrollada por Microsoft para permitir el uso de reconocimiento de voz y síntesis de voz en aplicaciones de Windows . Hasta la fecha, se han publicado varias versiones de la API, que se han distribuido como parte de un SDK de voz o como parte del propio sistema operativo Windows . Las aplicaciones que utilizan SAPI incluyen Microsoft Office , Microsoft Agent y Microsoft Speech Server .

En general, todas las versiones de la API se han diseñado de forma que un desarrollador de software pueda escribir una aplicación para realizar reconocimiento y síntesis de voz mediante un conjunto estándar de interfaces, accesibles desde una variedad de lenguajes de programación. Además, es posible que una empresa externa produzca sus propios motores de reconocimiento de voz y de conversión de texto a voz o adapte los motores existentes para que funcionen con SAPI. En principio, siempre que estos motores se ajusten a las interfaces definidas, se pueden utilizar en lugar de los motores suministrados por Microsoft.

En general, la API de voz es un componente libremente redistribuible que se puede enviar con cualquier aplicación de Windows que desee utilizar tecnología de voz. Muchas versiones (aunque no todas) de los motores de reconocimiento y síntesis de voz también se pueden redistribuir libremente.

Existen dos "familias" principales de la API de voz de Microsoft. Las versiones SAPI 1 a 4 son todas similares entre sí, con funciones adicionales en cada versión más nueva. Sin embargo, SAPI 5 era una interfaz completamente nueva, lanzada en 2000. Desde entonces, se han lanzado varias subversiones de esta API.

Arquitectura básica

La API de voz puede considerarse como una interfaz o un componente de middleware que se ubica entre las aplicaciones y los motores de voz (reconocimiento y síntesis). En las versiones 1 a 4 de SAPI, las aplicaciones podían comunicarse directamente con los motores. La API incluía una definición de interfaz abstracta a la que se ajustaban las aplicaciones y los motores. Las aplicaciones también podían utilizar objetos simplificados de nivel superior en lugar de llamar directamente a los métodos de los motores.

Sin embargo, en SAPI 5, las aplicaciones y los motores no se comunican directamente entre sí, sino que cada uno se comunica con un componente de tiempo de ejecución ( sapi.dll ). Este componente implementa una API que utilizan las aplicaciones y otro conjunto de interfaces para los motores.

Normalmente, en las aplicaciones SAPI 5, las llamadas se emiten a través de la API (por ejemplo, para cargar una gramática de reconocimiento, iniciar el reconocimiento o proporcionar texto para sintetizar). El componente de tiempo de ejecución sapi.dll interpreta estos comandos y los procesa, y, cuando es necesario, realiza una llamada al motor a través de las interfaces del motor (por ejemplo, la carga de la gramática desde un archivo se realiza en el tiempo de ejecución, pero luego los datos de la gramática se pasan al motor de reconocimiento para que los utilice en el reconocimiento). Los motores de reconocimiento y síntesis también generan eventos durante el procesamiento (por ejemplo, para indicar que se ha reconocido un enunciado o para indicar los límites de las palabras en el habla sintetizada). Estos pasan en la dirección inversa, desde los motores, a través de la DLL de tiempo de ejecución y hasta un receptor de eventos en la aplicación.

Además de la definición de API y la DLL de tiempo de ejecución, se incluyen otros componentes con todas las versiones de SAPI para formar un kit de desarrollo de software de voz completo . Los siguientes componentes se encuentran entre los incluidos en la mayoría de las versiones del SDK de voz:

  • Archivos de definición de API : en MIDL y como archivos de encabezado C o C++.
  • Componentes en tiempo de ejecución , por ejemplo, sapi.dll.
  • Subprograma del Panel de control : para seleccionar y configurar el reconocedor y sintetizador de voz predeterminados.
  • Motores de texto a voz en múltiples idiomas.
  • Motores de reconocimiento de voz en múltiples idiomas.
  • Componentes redistribuibles que permiten a los desarrolladores empaquetar los motores y el tiempo de ejecución con su código de aplicación para producir una única aplicación instalable.
  • Código de aplicación de muestra .
  • Motores de muestra : implementaciones de las interfaces de motor necesarias pero sin procesamiento de voz real que podrían usarse como muestra para aquellos que portan un motor a SAPI.
  • Documentación .

Versiones

Xuedong Huang fue una persona clave que lideró los primeros esfuerzos SAPI de Microsoft.

Familia de API SAPI 1-4

SAPI 1

La primera versión de SAPI se lanzó en 1995 y era compatible con Windows 95 y Windows NT 3.51 . Esta versión incluía API de reconocimiento de voz directo y conversión directa de texto a voz de bajo nivel que las aplicaciones podían usar para controlar directamente los motores, así como API de comandos de voz y conversación de voz simplificadas de "nivel superior".

SAPI 3

SAPI 3.0 se lanzó en 1997. Agregó soporte limitado para reconocimiento de voz de dictado (voz discreta, no continua) y aplicaciones de muestra y fuentes de audio adicionales.

SAPI 4

SAPI 4.0 se lanzó en 1998. Esta versión de SAPI incluía tanto la API COM básica , junto con clases contenedoras de C++ para facilitar la programación desde C++, como controles ActiveX para permitir el desarrollo de Visual Basic mediante arrastrar y soltar . Se entregó como parte de un SDK que incluía motores de reconocimiento y síntesis. También se entregó (sólo con motores de síntesis) en Windows 2000 .

Los componentes principales de la API SAPI 4 (que estaban disponibles en versiones C++, COM y ActiveX) eran:

  • Comando de voz : objetos de alto nivel para reconocimiento de voz de comando y control
  • Dictado de voz : objetos de alto nivel para reconocimiento de voz de dictado continuo
  • Voice Talk : objetos de alto nivel para la síntesis de voz
  • Telefonía de voz : objetos para escribir aplicaciones de voz telefónica
  • Reconocimiento directo de voz : objetos para el control directo del motor de reconocimiento
  • Texto directo a voz : objetos para el control directo del motor de síntesis
  • Objetos de audio : para leer hacia y desde un dispositivo o archivo de audio

Familia de API SAPI 5

La versión 5.0 del Speech SDK , que incorpora el entorno de ejecución SAPI 5.0 , se lanzó en 2000. Se trató de un rediseño completo de las versiones anteriores y ni los motores ni las aplicaciones que utilizaban versiones anteriores de SAPI podían utilizar la nueva versión sin modificaciones considerables.

El diseño de la nueva API incluía el concepto de separar estrictamente la aplicación y el motor, de modo que todas las llamadas se enrutaran a través del sapi.dll en tiempo de ejecución. Este cambio tenía como objetivo hacer que la API fuera más "independiente del motor", evitando que las aplicaciones dependieran inadvertidamente de las características de un motor específico. Además, este cambio tenía como objetivo facilitar la incorporación de tecnología de voz en una aplicación al trasladar parte del código de administración e inicialización al tiempo de ejecución.

La nueva API era inicialmente una API COM pura y sólo podía utilizarse fácilmente desde C/C++. Más tarde se añadió compatibilidad con VB y lenguajes de script. Se admitían sistemas operativos a partir de Windows 98 y NT 4.0 .

Las principales características de la API incluyen:

  • Reconocedor compartido . Para las aplicaciones de reconocimiento de voz de escritorio, se puede utilizar un objeto de reconocimiento que se ejecuta en un proceso independiente ( sapisvr.exe ). Todas las aplicaciones que utilizan el reconocedor compartido se comunican con esta única instancia. Esto permite compartir recursos, elimina la contención por el micrófono y permite una interfaz de usuario global para controlar todas las aplicaciones de voz.
  • Reconocedor en proceso . Para las aplicaciones que requieren un control explícito del proceso de reconocimiento, se puede utilizar el objeto reconocedor en proceso en lugar del objeto compartido.
  • Objetos de gramática . Las gramáticas de voz se utilizan para especificar las palabras que el reconocedor está escuchando. SAPI 5 define un marcado XML para especificar una gramática, así como mecanismos para crearlas dinámicamente en código. También existen métodos para indicarle al reconocedor que cargue un modelo de lenguaje de dictado integrado.
  • Objeto de voz . Realiza la síntesis de voz, produciendo un flujo de audio a partir de un texto. Se puede utilizar un lenguaje de marcado (similar a XML, pero no estrictamente XML) para controlar el proceso de síntesis.
  • Interfaces de audio . El entorno de ejecución incluye objetos para realizar la entrada de voz desde el micrófono o la salida de voz a los altavoces (o cualquier dispositivo de sonido); así como hacia y desde archivos de ondas. También es posible escribir un objeto de audio personalizado para transmitir audio hacia o desde una ubicación no estándar.
  • Objeto de léxico de usuario . Permite que un usuario o una aplicación agreguen palabras y pronunciaciones personalizadas. Estas se agregan a los léxicos integrados del motor de reconocimiento o síntesis.
  • Tokens de objetos . Se trata de un concepto que permite registrar, enumerar e instanciar de forma común motores de reconocimiento y conversión de texto a voz, objetos de audio, léxicos y otras categorías de un objeto.

SAPI 5.0

Esta versión se lanzó a fines de 2000 como parte de la versión 5.0 del Speech SDK, junto con los motores de reconocimiento y síntesis de la versión 5.0. Los motores de reconocimiento admitían dictado continuo y comando y control y se lanzaron en versiones en inglés estadounidense, japonés y chino simplificado . En el sistema inglés estadounidense, había modelos acústicos especiales disponibles para el habla de niños y el habla telefónica. El motor de síntesis estaba disponible en inglés y chino. Esta versión de la API y los motores de reconocimiento también se lanzaron en Microsoft Office XP en 2001.

SAPI 5.1

Esta versión se envió a fines de 2001 como parte de la versión 5.1 del Speech SDK. Se agregaron interfaces compatibles con automatización a la API para permitir el uso desde Visual Basic, lenguajes de script como JScript y código administrado . Esta versión de la API y los motores TTS se enviaron en Windows XP . Windows XP Tablet PC Edition y Office 2003 también incluyen esta versión, pero con un motor de reconocimiento de la versión 6 sustancialmente mejorado y chino tradicional .

SAPI 5.2

Esta era una versión especial de la API para uso exclusivo en Microsoft Speech Server , que se lanzó en 2004. Añadía compatibilidad con los lenguajes de marcado SRGS y SSML , así como características adicionales del servidor y mejoras de rendimiento. Speech Server también se entregaba con el motor de reconocimiento de escritorio versión 6 y el motor de reconocimiento de servidor versión 7.

SAPI 5.3

Esta es la versión de la API que se incluye en Windows Vista junto con los nuevos motores de reconocimiento y síntesis. Como Windows Speech Recognition ahora está integrado en el sistema operativo, el SDK de voz y las API son parte del SDK de Windows . SAPI 5.3 incluye las siguientes características nuevas:

  • Compatibilidad con gramáticas de voz XML del W3C para reconocimiento y síntesis. La versión 1.0 del lenguaje de marcado de síntesis de voz (SSML) ofrece la posibilidad de marcar características de voz, velocidad, volumen, tono, énfasis y pronunciación.
  • La especificación de gramática de reconocimiento de voz (SRGS) admite la definición de gramáticas libres de contexto, con dos limitaciones:
    • No admite el uso de SRGS para especificar gramáticas de frecuencia modulada de tono dual (tono táctil).
    • No es compatible con la forma Backus-Naur aumentada (ABNF).
  • Compatibilidad con scripts de interpretación semántica dentro de gramáticas. SAPI 5.3 permite anotar una gramática SRGS con JavaScript para realizar interpretaciones semánticas que complementen el texto reconocido.
  • Atajos especificados por el usuario en léxicos, que consisten en la capacidad de agregar una cadena al léxico y asociarla con una palabra abreviada. Al dictar, el usuario puede decir la palabra abreviada y el reconocedor devolverá la cadena expandida.
  • Funcionalidad adicional y facilidad de programación proporcionada por nuevos tipos.
  • Mejoras de rendimiento, confiabilidad mejorada y seguridad.
  • Versión 8 del motor de reconocimiento de voz ("Microsoft Speech Recognizer")

SAPI 5.4

Esta es una versión actualizada de la API que viene en Windows 7 .

SAPI 5 Voces

Microsoft Sam (módulo de articulación del habla) es una voz SAPI 5 que se incluye con frecuencia. Además, Microsoft Office XP y Office 2003 instalan las voces L&H Michael y Michelle. El SDK SAPI 5.1 instala dos voces más, Mike y Mary . Windows Vista incluye Microsoft Anna , que reemplaza a Microsoft Sam y suena más natural e inteligible. También se instala en Windows XP mediante Microsoft Streets & Trips 2006 y versiones posteriores. La versión china de Vista y las versiones posteriores del cliente de Windows también incluyen una voz femenina llamada Microsoft Lili .

API de voz con código administrado

Una API de código administrado se incluye como parte de .NET Framework 3.0 . [1] Tiene una funcionalidad similar a SAPI 5, pero es más adecuada para su uso en aplicaciones de código administrado. La nueva API está disponible en Windows XP , Windows Server 2003 , Windows Vista y Windows Server 2008 .

La API SAPI 5 existente también se puede utilizar desde código administrado hasta cierto punto mediante la creación de un código de interoperabilidad COM (código auxiliar diseñado para ayudar a acceder a las interfaces y clases COM). Esto funciona bien en algunos escenarios, sin embargo, la nueva API debería proporcionar una experiencia más fluida equivalente al uso de cualquier otra biblioteca de código administrado.

Sin embargo, el mayor obstáculo para la transición desde la interoperabilidad COM es el hecho de que la implementación administrada tiene fugas de memoria sutiles que conducen a la fragmentación de la memoria y excluyen el uso de la biblioteca en cualquier aplicación no trivial. Como solución alternativa, Microsoft ha sugerido utilizar una API diferente, que tiene menos voces. [2]

Funcionalidad de voz en Windows Vista

Windows Vista incluye una serie de nuevas funciones relacionadas con la voz, entre ellas:

  • Control de voz de la interfaz gráfica de usuario y las aplicaciones completas de Windows
  • Nuevo tutorial, asistente de micrófono e interfaz de usuario para controlar el reconocimiento de voz
  • Nueva versión del entorno de ejecución de Speech API: SAPI 5.3
  • Motor de reconocimiento de voz integrado y actualizado (versión 8)
  • Nuevo motor de síntesis de voz y voz SAPI Microsoft Anna
  • API de voz con código administrado (nombre en código SpeechFX)
  • Soporte de reconocimiento de voz para 8 idiomas en el momento del lanzamiento: inglés de EE. UU., inglés del Reino Unido, chino tradicional, chino simplificado, japonés, español, francés y alemán, y se lanzarán más idiomas más adelante.

Microsoft Agent , en particular, y todas las demás aplicaciones de voz de Microsoft utilizan SAPI 5.

Compatibilidad

La API de voz es compatible con los siguientes sistemas operativos: [3]

SAPI 5

Listado a partir de la versión SAPI 5.1: [3]

Las versiones posteriores de SAPI 5 (por ejemplo, SAPI 5.3 y superiores) son compatibles con los siguientes sistemas operativos:

SAPI 4

Principales aplicaciones que utilizan SAPI

Véase también

Referencias

  1. ^ Michael Dunn. "Síntesis y reconocimiento de voz en .NET: dé voz a las aplicaciones". Redmond Developer News . Consultado el 9 de noviembre de 2011 .Archivado el 14 de enero de 2010 en Wayback Machine.
  2. ^ Sistema. El habla tiene una pérdida de memoria | Microsoft Connect. Connect.microsoft.com. Recuperado el 27 de septiembre de 2013.
  3. ^ de Microsoft Corporation. "Requisitos del sistema SAPI". MSDN. Archivado desde el original el 4 de mayo de 2007. Consultado el 12 de abril de 2006 .
  • Entrada de blog sobre el evento Ignite 2018 de Microsoft Cognitive Services
  • Sitio de Microsoft para SAPI
  • Sitio de descarga de Microsoft para el kit para desarrolladores de software de Speech API versión 5.1
  • Documento técnico de Mike Rozak publicado en Microsoft Systems Journal sobre la primera versión de SAPI
  • Blog del equipo de Microsoft Speech
Obtenido de "https://es.wikipedia.org/w/index.php?title=API_de_voz_de_Microsoft&oldid=1232151561"