PDA

Ver la Versión Completa : componentes SAPI 5.1 DE microsoft en delphi


Rolando Glez
14-03-2016, 15:17:15
Hola a todos, he instalado un pack de microsoft en el ide de Delphi el cual te habilita como 18 componentes Speaker API (SAPI), ya he logrado por cierto no usando ningun componente de estos que un programa que desarrolle envie un texto al speaker del sistema y lo reproduzca, pero tambien deseo que el programa sea capaz de reconocer comandos hay uno de esos componentes que se llama recognition el cual hay que definirle un grammar para que pueda reconocer determinado comando de voz el cual debe estar en XML bueno quisiera saber si alguien me pueda guiar donde puedo obtener un ejemplo sencillo de un projecto de reconocimiento de voz pues el link que obtuve en una paginita que me habla de su uso esta rota y no obtuve acceso al ejemplo, el programa que desarrolle es de ajedrez la idea es "dictarle" al soft la jugada a ejecutar ejemplo : e2e4 para lo cual el soft debe "reconocer" el comando y ejecutar la jugada en el tablero, me parece algo complejo pero se que se puede realizar saludos y gracias por adelantado

dec
14-03-2016, 16:26:22
Hola,

El ejemplo/artículo que mencionas es este de Brian Long (http://edn.embarcadero.com/article/29583), si no me equivoco, y, es cierto que no pueden descargarse los archivos relacionados desde la web de Embarcadero, pero, sí que se puede desde la web del propio autor, aquí está:

http://www.blong.com/UserGroupTalks/BUG20020820.zip

El artículo original y el enlace anterior se encuentran aquí:

http://www.blong.com/UserGroupTalks.htm#Speech

Rolando Glez
14-03-2016, 21:56:05
Gracias Dec por su colaboracion conmigo estudiare el codigo y mas adelante seguro que volvere al hilo pues tendre miles de dudas saludos y hasta pronto

Rolando Glez
15-03-2016, 18:57:15
Lo del titulo es porque la palabra BUG viene dentro del nombre del zip que esta en el link, los ejemplos de reconocimiento de voz que son dos capturan un error que dice "variant convertion error" cuando oye el minimo sonido en el microfono el programa deja de funsionar, los fuentes les falta en la interface usar la unit Variants por el uso de la constante unassigned la cual tuve que anadir, cosa rara verdad, el ejemplo de speech tts si funsiona correctamente pero los de identicacion de voz me dan palo estoy usando delphi 6 con sapi 5.1, no instale el sapi que viene en el ejemplo pues ya lo tengo instalado tengo 2 giga de memoria
en un petium a 1.8 Hgz alguna sugerencia del porque el error ? saludos

Rolando Glez
15-03-2016, 19:10:41
Su significado es Borland User Group (BUG), que coincidencia verdad pues resulta que tengo un BUG (error) en los programas

Rolando Glez
16-03-2016, 14:41:01
Leyendo informacion me encontre con este problema


Note: if you are using Delphi 6 you will encounter a problem that is still present even with Update Pack 2 installed. The type library importer has a bug where the parameters to Automation events are incorrectly dispatched (they are sent in reverse order) meaning that all the Automation events operate incorrectly (if at all). You can avoid this by importing the type library in Delphi 5 or 7 and using the generated type library import unit in Delphi 6. A Delphi 6 compatible package is supplied with this article's files (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.zip) (it uses a Delphi 5 generated type library import unit).
Note: The Delphi 7 type library importer has been improved to produce more accurate Pascal representations of items in the type library than Delphi 5 did (and than Delphi 6 tried to). As a result of this, the event handlers will often have different parameter lists in the Delphi 7 imported type library. This means that the sample programs won't compile with Delphi 7 with the true Delphi 7 SAPI type library import unit.
If you wish, you can write late bound Automation that calls CreateOleObject to instantiate the Automation objects. In the case of the SpVoice interface, you would execute:
var SpVoice: Variant; ... SpVoice := CreateOleObject('SAPI.SpVoice')

La verdad es que es todo un lio para que corra el ejemplo sumistrado si es que corre pues tiene un bug en delphi 6 y tampoco corre en delphi 7 y no tengo el delphi 5 que es donde parece ser que debe correr. Estoy interpretando bien lo que dicen estas notas ?

Rolando Glez
22-03-2016, 16:37:32
Hola la solucion es remplazar la unit speechlib_TLB que esta en la carpeta import de delphi 6 generada por el pack de delphi 6 por la generada por el pack de delphi 5 un vez hecho esto los ejemplos corren perfectamente, bueno a modo de informacion cuando se corre el ejemplo de comandos y ud dice por el microfono "red" el programa "escucha" y cambia los bordes de la forma por el color rojo asi como cuando se dice "blue" lo pone en azul, gracias a Dec por su colaboracion para poder abordar este tema.:)