Post


Usando delphi con SAPI5

 

Este artículo analiza la adición de soporte para las capacidades de voz para aplicaciones de Microsoft Windows escritas en Delphi , utilizando la versión de Microsoft Speech API 5.1 ( SAPI 5.1 ) . Para obtener información general sobre el tema de la tecnología de voz , haga clic aquí .

También hay cobertura en el uso de SAPI 4 para crear aplicaciones de voz habilitado. Información sobre el uso de los 4 interfaces de alto nivel SAPI se puede encontrar haciendo clic aquí , mientras que la discusión de las interfaces de bajo nivel se puede encontrar haciendo clic aquí .

SAPI 5.1 expone la mayoría de las interfaces importantes , tipos y constantes a través de una biblioteca de tipos registrada ( SAPI 5.0 no lo hizo , por lo que es difícil de usar en Delphi y sin alguien que escribe el equivalente a la unidad de importación para JEDI SAPI 5 ) . Esto significa que puede acceder a la funcionalidad de SAPI 5.1 a finales de la envolvente o principios Automation enlazado. Nos vamos a centrar nuestra atención en los principios de Automatización encuadernado , que requiere importar la biblioteca de tipos .

Seleccione Proyecto | Tipo Import Library ... y busque la biblioteca de tipo descrito como biblioteca de objetos Microsoft Speech ( versión 5.1 ) en la lista . Ahora garantizar la casilla de verificación Generar Wrapper componentes está marcada por lo que la unidad de importación biblioteca de tipo incluirá clases de contenedor de los componentes para cada objeto Automation expuesta. Estos componentes se pondrán a la página de ActiveX de la paleta de componentes por defecto, pero puede que desee especificar una página más adecuada, como SAPI 5.1 .

A continuación, pulse Instalar ... por lo que la biblioteca de tipos se importará y los componentes generados se instalará en la paleta de componentes ( presionando Crear Unidad también generaría la unidad de importación de biblioteca de tipos , pero requeriría nos permite instalar de forma manual ) .

La unidad de importación generada se denomina SpeechLib_TLB.pas y se instalará en un paquete . Usted puede seleccionar el paquete por defecto ofrecido ( el Borland usuario Componentes del paquete por defecto) , decide abrir un paquete diferente o incluso crear uno nuevo. Cuando el paquete se ha compilado e instalado obtendrá un conjunto enorme de 19 nuevos componentes en la página de SAPI 5.1 de la paleta de componentes .

Cada componente es el nombre de la interfaz principal que implementa. Así, por ejemplo , el componente TSpVoice implementa la interfaz SpVoice . Usted puede encontrar abundante documentación sobre todas estas interfaces en la documentación del SDK 5.1 SAPI .

Colecciones de SAPI 5.1 bultos que contengan componentes de automatización para Delphi 5 , 6 y 7 se encuentran en subdirectorios con nombres correspondientes en virtud SAPI 5.1 en los archivos adjuntos.

Nota : si está utilizando Delphi 6 se encontrará con un problema que sigue presente a pesar de Update Pack 2 instalado. El importador de la biblioteca de tipos tiene un error en los parámetros a eventos de automatización se envían correctamente ( que se envían en el orden inverso ), lo que significa que todos los eventos de Automatización funcionan incorrectamente ( en su caso) . Esto se puede evitar mediante la importación de la biblioteca de tipos en Delphi 5 o 7 y el uso de la unidad de importación de biblioteca de tipos generada en Delphi 6 . Un paquete compatible Delphi 6 se suministra con los archivos de este artículo ( que utiliza una unidad de importación generada 5 biblioteca de tipo Delphi) .

Nota : El importador de la biblioteca de tipos Delphi 7 se ha mejorado para producir representaciones Pascal más precisas de los elementos de la biblioteca de tipos de Delphi 5 lo hicieron ( y que Delphi 6 intentaron ) . Como resultado de esto, los controladores de eventos a menudo tienen diferentes listas de parámetros en la biblioteca de tipo 7 importado Delphi . Esto significa que los programas de ejemplo no compilarán con Delphi 7 con el Delphi 7 SAPI unitario de las importaciones biblioteca de tipo real .

Si lo desea, puede escribir a finales Automation límite que llama CreateOleObject crear instancias de los objetos de automatización . En el caso de la interfaz SpVoice , debe ejecutar:



INICIO ---------------------------------------------------------------------------------------------------------------------------