Articulo de referencia

API de voz de Microsoft

La Interfaz de Programación de Aplicaciones de Voz ( SAPI) es una API desarrollada por Microsoft para permitir el uso del reconocimiento y la síntesis de voz en aplicaciones de ...

La Interfaz de Programación de Aplicaciones de Voz ( SAPI) es una API desarrollada por Microsoft para permitir el uso del reconocimiento y la síntesis de voz en aplicaciones de Windows . Hasta la fecha, se han lanzado varias versiones de la API, que se han incluido en un SDK de voz o en el propio sistema operativo Windows . Algunas aplicaciones que utilizan SAPI son Microsoft Office , Microsoft Agent y Microsoft Speech Server .

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

En general, la API de voz es un componente de libre distribución que puede incluirse en 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 son de libre distribución.

La API de voz de Microsoft ha contado con dos familias principales. Las versiones SAPI 1 a 4 son muy similares entre sí, con funciones adicionales en cada versión posterior. SAPI 5, sin embargo, fue una interfaz completamente nueva, lanzada en el año 2000. Desde entonces, se han publicado varias subversiones de esta API.

Arquitectura básica

La API de voz puede considerarse una interfaz o un componente intermedio que actúa como puente 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 tanto las aplicaciones como 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.

En SAPI 5, sin embargo, las aplicaciones y los motores no se comunican directamente entre sí. En su lugar, cada uno interactúa con un componente de tiempo de ejecución ( sapi.dll ). Este componente implementa una API que utilizan las aplicaciones, y existe otro conjunto de interfaces para los motores.

Normalmente, en las aplicaciones SAPI 5 se realizan llamadas 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, llamando al motor a través de sus interfaces cuando es necesario (por ejemplo, la carga de la gramática desde un archivo se realiza en tiempo de ejecución, pero luego los datos de la gramática se pasan al motor de reconocimiento para su uso). Los motores de reconocimiento y síntesis también generan eventos durante el procesamiento (por ejemplo, para indicar que se ha reconocido una locución o para indicar los límites de las palabras en el habla sintetizada). Estos eventos se transmiten en sentido inverso, desde los motores, a través de la DLL de tiempo de ejecución, hasta un receptor de eventos en la aplicación.

Además de la definición de la API y la DLL de tiempo de ejecución, todas las versiones de SAPI incluyen otros componentes para conformar 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 formato MIDL y como archivos de cabecera C o C++.
  • Componentes en tiempo de ejecución , por ejemplo, sapi.dll.
  • Applet del Panel de control : para seleccionar y configurar el reconocedor y sintetizador de voz predeterminados.
  • Motores de conversión de texto a voz en varios idiomas.
  • Motores de reconocimiento de voz en varios idiomas.
  • Componentes redistribuibles que permiten a los desarrolladores empaquetar los motores y el entorno de ejecución junto con el código de su aplicación para producir una única aplicación instalable.
  • Código de ejemplo de la aplicación .
  • Motores de ejemplo : implementaciones de las interfaces de motor necesarias, pero sin procesamiento de voz real, que podrían servir de ejemplo para quienes adapten un motor a SAPI.
  • Documentación .

Versiones

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

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 bajo nivel para el reconocimiento directo de voz y la conversión directa de texto a voz, que las aplicaciones podían usar para controlar directamente los motores, así como API simplificadas de nivel superior para comandos de voz y conversación por voz.

SAPI 3

SAPI 3.0 se lanzó en 1997. Añadió soporte limitado para el reconocimiento de voz por dictado (voz discreta, no continua) y aplicaciones de ejemplo y fuentes de audio adicionales.

SAPI 4

SAPI 4.0 se lanzó en 1998. Esta versión incluía la API COM principal , junto con clases contenedoras de C++ para facilitar la programación desde C++, y controles ActiveX para permitir el desarrollo mediante arrastrar y soltar en Visual Basic . Se distribuyó como parte de un SDK que incluía motores de reconocimiento y síntesis. También se incluyó (solo 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 el reconocimiento de voz de comando y control.
  • Dictado por voz : objetos de alto nivel para el reconocimiento continuo del habla mediante dictado.
  • 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 del habla : objetos para el control directo del motor de reconocimiento.
  • Conversión directa de texto a voz : objetos para el control directo del motor de síntesis.
  • Objetos de audio : para leer desde y hacia un dispositivo o archivo de audio.

Familia de API SAPI 5

La versión 5.0 del SDK de voz , que incorpora el entorno de ejecución SAPI 5.0, se lanzó en el año 2000. Esto supuso un rediseño completo con respecto a las versiones anteriores, y ni los motores ni las aplicaciones que utilizaban versiones anteriores de SAPI podían usar la nueva versión sin realizar modificaciones considerables.

El diseño de la nueva API incluyó la separación estricta entre la aplicación y el motor, de modo que todas las llamadas se enrutaran a través de la biblioteca sapi.dll de tiempo de ejecución. Este cambio tenía como objetivo lograr una mayor independencia del motor, evitando que las aplicaciones dependieran inadvertidamente de las características de un motor específico. Además, este cambio buscaba facilitar la integración de la tecnología de reconocimiento de voz en una aplicación, al trasladar parte del código de administración e inicialización al entorno de ejecución.

La nueva API era inicialmente una API COM pura y solo podía utilizarse fácilmente desde C/C++. Posteriormente se añadió compatibilidad con VB y lenguajes de scripting. Se admitían sistemas operativos desde Windows 98 y NT 4.0 en adelante.

Las principales características de la API incluyen:

  • Reconocedor compartido . Para aplicaciones de reconocimiento de voz de escritorio, se puede usar un objeto reconocedor que se ejecuta en un proceso independiente ( sapisvr.exe ). Todas las aplicaciones que usan el reconocedor compartido se comunican con esta única instancia. Esto permite compartir recursos, elimina la contención por el micrófono y proporciona una interfaz de usuario global para controlar todas las aplicaciones de voz.
  • Reconocedor en proceso . Para aplicaciones que requieren un control explícito del proceso de reconocimiento, se puede utilizar el objeto reconocedor en proceso en lugar del compartido.
  • Objetos gramaticales . 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 el código. También existen métodos para indicarle al reconocedor que cargue un modelo de lenguaje de dictado integrado.
  • Objeto de voz . Este objeto realiza la síntesis de voz, generando una secuencia 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 la entrada de voz desde el micrófono o la salida de voz a altavoces (o cualquier dispositivo de sonido), así como para la reproducción de archivos WAV. También es posible crear un objeto de audio personalizado para transmitir audio desde o hacia una ubicación no estándar.
  • Objeto de léxico de usuario . Permite que un usuario o una aplicación añadan palabras y pronunciaciones personalizadas. Estas se incorporan a los léxicos integrados del motor de reconocimiento o síntesis.
  • Tokens de objeto . Este es un concepto que permite registrar, enumerar e instanciar de forma común los motores de reconocimiento y síntesis de voz, los objetos de audio, los léxicos y otras categorías de un objeto.

SAPI 5.0

Esta versión se lanzó a finales del año 2000 como parte del SDK de voz versión 5.0, junto con los motores de reconocimiento y síntesis de la versión 5.0. Los motores de reconocimiento admitían el dictado continuo y el control por voz, y se publicaron en versiones para inglés estadounidense, japonés y chino simplificado . En el sistema de inglés estadounidense, se disponía de modelos acústicos especiales para el habla infantil y la voz 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 incluyeron en Microsoft Office XP en 2001.

SAPI 5.1

Esta versión se lanzó a finales de 2001 como parte del SDK de voz versión 5.1. Se añadieron interfaces compatibles con la automatización a la API para permitir su uso desde Visual Basic, lenguajes de scripting como JScript y código administrado . Esta versión de la API y los motores de síntesis de voz se incluyeron 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 compatibilidad con chino tradicional .

SAPI 5.2

Esta era una versión especial de la API para uso exclusivo en Microsoft Speech Server, lanzado en 2004. Añadía compatibilidad con los lenguajes de marcado SRGS y SSML , así como funciones adicionales para el servidor y mejoras de rendimiento. Speech Server también incluía 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 viene incluida en Windows Vista junto con los nuevos motores de reconocimiento y síntesis. Dado que el Reconocimiento de Voz de Windows ahora está integrado en el sistema operativo, el SDK de Voz y las API forman parte del SDK de Windows . SAPI 5.3 incluye las siguientes nuevas características:

  • Compatibilidad con las gramáticas de voz XML del W3C para el reconocimiento y la síntesis. La versión 1.0 del lenguaje de marcado para la síntesis de voz (SSML) permite marcar las características de la voz, la velocidad, el volumen, el tono, el énfasis y la 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:
  • Compatibilidad con scripts de interpretación semántica dentro de las gramáticas. SAPI 5.3 permite anotar una gramática SRGS con JavaScript para que la interpretación semántica complemente el texto reconocido.
  • Atajos definidos por el usuario en los léxicos, que consisten en la capacidad de añadir una cadena al léxico y asociarla con una palabra de acceso directo. Al dictar, el usuario puede decir la palabra de acceso directo y el reconocedor devolverá la cadena expandida.
  • Los nuevos tipos ofrecen funcionalidades adicionales y mayor facilidad de programación.
  • Mejoras en el rendimiento, mayor fiabilidad 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 incluida en Windows 7 .

SAPI 5 Voces

Microsoft Sam es una voz común incluida en SAPI 5. Además, Microsoft Office XP y Office 2003 instalaron las voces L&H Michael y Michelle. El SDK de SAPI 5.1 instala 3 voces más: Mike , Mary y una voz de prueba adicional conocida como Sample TTS Voice , que utiliza grabaciones de voz pregrabadas en lugar de voces sintetizadas. Windows Vista y 7 incluyen 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 7 también incluye una voz femenina llamada Microsoft Lili . Windows 8 y versiones posteriores del cliente de Windows incluyen Microsoft David , Zira y Hazel , esta última incluida de forma predeterminada solo en Windows 8 y 8.1 . Estas voces reemplazaron a Microsoft Anna y suenan más naturales e inteligibles que las voces anteriores.

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 por 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 puede utilizarse desde código administrado, aunque de forma limitada, mediante la creación de código de interoperabilidad COM (código auxiliar diseñado para facilitar el acceso a las interfaces y clases COM). Si bien esto funciona bien en algunos casos, la nueva API debería ofrecer una experiencia más fluida, equivalente a la de cualquier otra biblioteca de código administrado.

Sin embargo, un obstáculo importante para la transición desde COM Interop es que la implementación administrada presenta fugas de memoria sutiles que provocan fragmentación de memoria e impiden el uso de la biblioteca en aplicaciones que no sean triviales. 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 el habla, entre las que se incluyen:

  • Control por voz de la interfaz gráfica completa de Windows y de las aplicaciones.
  • 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 la API de voz: 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 reconocimiento de voz con código administrado (nombre en clave SpeechFX)
  • En el momento del lanzamiento, el reconocimiento de voz estará disponible en 8 idiomas: inglés estadounidense, inglés británico, chino tradicional, chino simplificado, japonés, español, francés y alemán, y se añadirán más idiomas posteriormente.

El Agente de Microsoft , y en particular 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 ] [ 4 ]

SAPI 5

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

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 sus aplicaciones" . Redmond Developer News . Consultado el 9 de noviembre de 2011 .Archivado el 14 de enero de 2010 en la Wayback Machine.
  2. Sistema. El reconocimiento de voz tiene una fuga de memoria | Microsoft Connect . Connect.microsoft.com. Consultado el 27 de septiembre de 2013.
  3. 1 2 Microsoft Corporation. "Requisitos del sistema SAPI" . MSDN. Archivado del original el 22 de agosto de 2005. Consultado el 12 de abril de 2006 .
  4. 1 2 "Bienvenido al SDK de voz de Microsoft - Documentación del SDK de voz de Microsoft" . documentation.help . Consultado el 20 de junio de 2025 .
  • Entrada de blog del evento Microsoft Cognitive Services Ignite 2018
  • Sitio web de Microsoft para SAPI
  • Sitio de descarga de Microsoft para el kit de desarrollo de software de la API de voz versión 5.1
  • Documento técnico de Microsoft Systems Journal de Mike Rozak sobre la primera versión de SAPI.
  • Blog del equipo de voz de Microsoft