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.
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:
Xuedong Huang fue una persona clave que lideró los primeros esfuerzos SAPI de Microsoft.
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.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.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:
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:
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.
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 .
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.
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:
Esta es una versión actualizada de la API que viene en Windows 7 .
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 .
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]
Windows Vista incluye una serie de nuevas funciones relacionadas con la voz, entre ellas:
Microsoft Agent , en particular, y todas las demás aplicaciones de voz de Microsoft utilizan SAPI 5.
La API de voz es compatible con los siguientes sistemas operativos: [3]
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: