Referencia de las funciones del Dialogic SDK · 2019-10-17 · 1.1. Descripción La función...
Transcript of Referencia de las funciones del Dialogic SDK · 2019-10-17 · 1.1. Descripción La función...
Verbio Software Reference
Referencia de las funciones del Dialogic SDK
Verbio Technologies, S.L.
Verbio Software Reference: Referencia de las funciones delDialogic SDKVerbio Technologies, S.L.
publicado Septiembre de 2011Copyright © 2011 Verbio Technologies, S.L.
Tabla de contenidos1. Introducción ..................................................................................................................... 12. Descripción de las funciones ................................................................................................ 3
1. vx_activatevcb .......................................................................................................... 42. vx_ApplyDictionary ................................................................................................... 63. vx_asr_init ............................................................................................................... 84. vx_asv_addfile .........................................................................................................115. vx_asv_spkinfo ........................................................................................................136. vx_asv_init ..............................................................................................................157. vx_asv_train ............................................................................................................168. vx_asv_verify ..........................................................................................................199. ATVX_BUILTIN .....................................................................................................2110. vx_chkwrd .............................................................................................................2211. vx_clrrsp ...............................................................................................................2312. vx_clrvad ..............................................................................................................2413. vx_deactivatevcb ....................................................................................................2514. vx_devclose ...........................................................................................................2715. vx_dtmf_close ........................................................................................................2816. vx_dtmf_open ........................................................................................................2917. vx_dtmf_word ........................................................................................................3018. vx_dtmf_write ........................................................................................................3119. ATVX_ERRMSGP .................................................................................................3220. vx_getasrlic ...........................................................................................................3321. vx_GetDllVersion ...................................................................................................3522. vx_getparm ............................................................................................................3623. vx_getttslic ............................................................................................................3724. vx_getusedasrlic .....................................................................................................3825. vx_getusedttslic ......................................................................................................3926. ATVX_IVCB .........................................................................................................4027. ATVX_LASTERR ..................................................................................................4128. vx_libclose ............................................................................................................4229. vx_libinit ...............................................................................................................4330. vx_loadcd ..............................................................................................................4531. vx_loadvcb ............................................................................................................4732. vx_nbest ................................................................................................................4933. ATVX_NIND ........................................................................................................5134. vx_playstr ..............................................................................................................5235. vx_playstr_close .....................................................................................................5436. vx_playstr_open .....................................................................................................5537. vx_playstr_read ......................................................................................................5638. vx_playstr_release ...................................................................................................5739. vx_playstr_wait ......................................................................................................5840. vx_prevcb ..............................................................................................................5941. vx_prevcbdev .........................................................................................................6142. vx_prevcbex ..........................................................................................................6443. vx_prevcbex2 .........................................................................................................6644. vx_reccfg_release ...................................................................................................6945. vx_reccfg_wait .......................................................................................................7146. vx_recind ..............................................................................................................7347. vx_recstr ...............................................................................................................7548. vx_recstr_open .......................................................................................................7849. vx_recstr_release ....................................................................................................7950. vx_recstr_wait ........................................................................................................8051. vx_recstr_write .......................................................................................................8152. vx_RegisterVVICallback ..........................................................................................8253. vx_regsrvclose .......................................................................................................8354. vx_SapiClose .........................................................................................................8455. vx_SapiOpen ..........................................................................................................8556. vx_SapiOpenEx ......................................................................................................86
57. vx_SapiSelect .........................................................................................................8958. vx_SetAbbreviations ................................................................................................9059. vx_setcd ................................................................................................................9260. vx_SetDictionary ....................................................................................................9461. vx_setparm ............................................................................................................9662. vx_setvcb ..............................................................................................................9763. vx_srvclose ............................................................................................................9964. vx_termplaystr ..................................................................................................... 10065. vx_termrecstr ....................................................................................................... 10166. vx_thclose ........................................................................................................... 10267. vx_tts_init ........................................................................................................... 10368. vx_ttsSetAbbreviations .......................................................................................... 10569. vx_ttsSetDictionary ............................................................................................... 10770. vx_unloadvcb ....................................................................................................... 10971. vx_vsd_close ........................................................................................................ 11172. vx_vsd_open ........................................................................................................ 11273. vx_vsd_write ........................................................................................................ 11474. vx_word .............................................................................................................. 11575. vx_wordex ........................................................................................................... 11676. vx_wordrule ......................................................................................................... 117
3. Estructuras de datos y parámetros ...................................................................................... 1191. VX_RSP - Recognize String Parameter ....................................................................... 1202. VAD_PRM - Voice Activity Detection Parameters ....................................................... 1213. MODEATTRIBUTES - SAPI Speaker Id .................................................................... 1254. Definición de parámetros para vx_getparm() y vx_setparm() ........................................... 1265. Obtención de información adicional mediante vx_word o vx_wordex ............................... 134
4. Código de ejemplos en C/C++ ........................................................................................... 1371. Ejemplo Síncrono ................................................................................................... 1382. Ejemplo Asíncrono ................................................................................................. 1443. Ejemplo con Barge-in .............................................................................................. 1504. Ejemplo de Detección de voz y de tonos DTMF ........................................................... 157
A. Ficheros utilizados por los ejemplos .................................................................................. 159Índice .............................................................................................................................. 163
Verbio Software Reference
vi Referencia de las funciones del Dialogic SDK Verbio Technologies
Lista de tablas3.1. Parámetros globales en el SDK de Dialogic ....................................................................... 1263.2. Parámetros de canal en el SDK de Dialogic ....................................................................... 1293.3. Elementos de un vocabulario o gramática ABNF ................................................................ 134
Lista de ejemplos3.1. Información devuelta por el servidor de reconocimiento ...................................................... 1354.1. Ejemplo síncrono de Verbio Dialogic ............................................................................... 1384.2. Ejemplo asíncrono de Verbio Dialogic ............................................................................. 1444.3. Ejemplo con barge-in de Verbio Dialogic .......................................................................... 1504.4. Ejemplo de Detección de voz y de tonos DTMF ................................................................. 157
Capítulo 1. IntroducciónEl objectivo de este documento es describir el conjunto de funciones que constituyen el Dialogic SDKproporcionado en Verbio. Este SDK está diseñado pensando en aquellos integradores que trabajan en entornos deprogramación C/C++ sobre tarjetas Dialogic.
Es compatible con las versiones antiguas de Verbio (IberVox 6.41 y anteriores), aunque en nuevosdesarrollos es aconsejable utilizar la Advanced SDK, puesto que ésta facilita el uso de las nuevasfuncionalidades incorporadas en Verbio (aunque este SDK sólo está disponible en entornos de programaciónMicrosoft Visual Studio).
En el Capítulo 2. Descripción de las funciones se describen todas las funciones disponibles en el SDK.
En el Capítulo 3. Estructuras de datos y parámetros se describen las estructuras y parámetros comunes a lasfunciones del SDK.
En el Capítulo 4. Código de ejemplos en C/C++ se incluyen 3 ejemplos de utilización de este SDK: un ejemplode programación síncrona, otro de programación asíncrona y un tercero de programación utilizando la técnicadel barge-in.
Capítulo 2. Descripción de lasfunciones
1. vx_activatevcb
FUNCION int vx_activatevcb(int chdev, int vcbhandle, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
int vcbhandle descriptor de un vocabulario o gramática ABNF previamentecargado
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA >=0 indicando el descriptor del vocabulario si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
1.1. Descripción
La función vx_activatevcb() activa el vocabulario previamente cargado en el canal especificado. El descriptordel vocabulario cargado se obtiene invocando a la función vx_loadvcb(). Cuando no deba utilizarse en elsiguente proceso de reconocimiento, debe ser desactivado mediante la función vx_deactivatevcb().
1.2. Funcionamiento asíncrono
En modo asíncrono la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
1.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
vcbhandle descriptor de un vocabulario o gramática ABNF previamente cargado mediante la funciónvx_loadvcb().
mode especifica si debe ejecutarse la función vx_activatevcb() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_activatevcb() asíncronamente
EV_SYNC Ejecuta vx_activatevcb() síncronamente (valor por defecto)
1.4. Precauciones
En cualquier momento, pueden estar activos varios vocabularios y gramáticas. El descriptor utilizado en lafunción vx_activatevcb() debe ser el valor retornado por la función vx_loadvcb(). La función ATVX_IVCB()retorna el descriptor asociado al vocabulario que contiene la locución reconocida.
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento.
1.5. Errores
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuanto
Capítulo 2. Descripción de las funciones
4 Referencia de las funciones del Dialogic SDK Verbio Technologies
finalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID. Check the vocabulary filename and path writing permission.
EVX_INVWORD THE VOCABULARY TRANSCRIPTION WAS NOT FOUND
EVX_SYSTEM SYSTEM ERROR. Check errno.
1.6. Elementos relacionados
vx_setvcb, vx_loadvcb, vx_deactivatevcb, vx_unloadvcb, ATVX_IVCB
1.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 5
2. vx_ApplyDictionary
FUNCION int vx_ApplyDictionary(const char *inVcbName, const char *outVcbName, constchar *Dictionary)
const char*inVcbName
nombre del fichero que contiene el vocabulario que debeprocesarse
const char*outVcbName
nombre del fichero bajo el que se almacenará el fichero devocabulario procesado
const char*Dictionary
nombre del fichero que contiene el vocabulario deexcepciones
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
2.1. Descripción
La función vx_ApplyDictionary() genera un fichero de vocabulario a partir de otro original incluyendo lasexcepciones y acrónimos contenidos en el diccionario especificado.
2.2. Descripción de los parámetros
inVcbName nombre del fichero de vocabulario original que debe ser procesado. Cada línea debecontener una palabra del vocabulario formado por una o más palabras.
outVcbName nombre del fichero que contendrá el nuevo vocabulario. Cada línea contendrá unapalabra del vocabulario formada por las palabras originales o bien poraquellas que hayan sido modificadas siguiendo las pautas del diccionario deexcepciones.
Dictionary nombre del fichero de texto que contiene las excepciones que deben considerarse.Consulte Verbio Software Reference: Guía del usuario para más información delformato que debe tener este un fichero de excepciones.
2.3. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_NOMEM OUT OF MEMORY
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID. Check the vocabulary filename and path writing permission.
EVX_DICFILE THE DICTIONARY FILE NAME IS NOT VALID. Check the dictionary file name.
2.4. Elementos relacionados
vx_prevcb, vx_prevcbex, vx_chkwrd
Capítulo 2. Descripción de las funciones
6 Referencia de las funciones del Dialogic SDK Verbio Technologies
2.5. Códigos de ejemploConsulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 7
3. vx_asr_init
FUNCION int vx_asr_init(const char *configuration, const char *defasrlng)
const char*configuration
identificador de la configuración de reconocimiento pordefecto
const char*defasrlng
identificador del idioma de reconocimiento por defecto
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
3.1. Descripción
La función vx_asr_init() inicializa la librería de reconocimiento del habla de Verbio. En nuevos desarrollos esrecomendable utilizar esta función (conjuntamente con la función vx_tts_init en caso de que también serequiera síntesis del habla) en lugar de la función vx_libinit, puesto que permite indicar al servidor losparámetros de inicialización de una manera mucho más concreta.
3.2. Descripción de los parámetros
configuration especifica la configuración por defecto con la que arrancará el servidor dereconocimiento. Por configuración de reconocimiento se entiende el idioma oidiomas soportados (en caso de configuraciones multilingües) por el servidor dereconocimiento. Cualquier proceso de reconocimiento invocado usará los modelosde reconocimiento asociados con la configuración activa en ese momento, por loque únicamente podrá reconocerse en alguno de los idiomas contenidos en dichaconfiguración. Para más información, puede consultarse el documento VerbioSoftware Reference: Guía del Usuario.
CFG_SPANISH Español castellano
CFG_SPANISH_CATALAN Español castellano +catalán
CFG_SPANISH_BASQUE Español castellano +euskera
CFG_SPANISH_GALICIAN Español castellano +gallego
CFG_SPANISH_CATALAN_BASQUE_GALICIAN Español castellano +catalán + euskera + gallego
CFG_PORTUGUESE Portugués
CFG_PORTUGUESE_BRAZILIAN Portugués brasileño
CFG_SPANISH_ARGENTINIAN Español argentino
CFG_SPANISH_CHILEAN Español chileno
CFG_SPANISH_COLOMBIAN Español colombiano
Capítulo 2. Descripción de las funciones
8 Referencia de las funciones del Dialogic SDK Verbio Technologies
CFG_SPANISH_MEXICAN Español mexicano
CFG_SPANISH_VENEZUELAN Español venezolano
CFG_FRENCH Francés
CFG_ENGLISH Inglés
defasrlng especifica el idioma por defecto con el que trabaja la configuración por defecto.En el caso de configuraciones monolingües es redundante, aunque sí esimprescindible cuando se activa una configuración multilingüe.
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_SPANISH_ARGENTINIAN Español argentino
LNG_SPANISH_CHILEAN Español chileno
LNG_SPANISH_COLOMBIAN Español colombiano
LNG_SPANISH_MEXICAN Español mexicano
LNG_SPANISH_VENEZUELAN Español venezolano
LNG_FRENCH Francés
LNG_ENGLISH Inglés
3.3. Precauciones
La función vx_asr_init() debe invocarse antes que ninguna otra de las funciones del SDK de Verbiorelacionadas con el reconocimiento del habla, a excepción de aquella destinada a establecer el servidor detrabajo por defecto en configuraciones cliente-servidor (vx_setparm).
3.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_SRERROR DIALOGIC SRL ERROR. Check ATDV_LASTERR() and ATDV_ERRMSGP().
EVX_DXERROR DIALOGIC VOICE ERROR. Check ATDV_LASTERR() andATDV_ERRMSGP().
EVX_NOBOARDS NO BOARDS DETECTED. Check Dialogic Drivers Start Up.
EVX_INVSETUP VERBIO INTERNAL ERROR. Files may be corrupted. Check disk and repeatSetup.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 9
EVX_NOMEM OUT OF MEMORY.
EVX_NOLICFILE NO LICENSE FILE WAS FOUND. Run CheckOut to obtain a license file.
EVX_INVLIC THE LICENSE FILE IS NOT VALID. Run CheckOut to obtain a valid licensefile.
EVX_SYSTEM SYSTEM ERROR.Check errno.
EVX_INVSRVER INVALID DIALOGIC SRL RELEASE (libsrlmt.dll). Check README.TXT.
EVX_INVDXVER INVALID DIALOGIC VOICE LIBRARY RELEASE (libdxxmt.dll).
3.5. Elementos relacionados
vx_libinit
vx_tts_init
vx_libclose
3.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
10 Referencia de las funciones del Dialogic SDK Verbio Technologies
4. vx_asv_addfile
FUNCION int vx_asv_addfile(int chdev, const char* id, const char* filename, const char*transcription, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
const char *id identificador del usuario
const char *filename nombre del fichero de audio a incorporar al usuario
const char*transcription
transcripción del contenido del fichero
unsigned int mode formato de las muestras de audio
RETORNA 0 si el resultado es satisfactorio
<0 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
4.1. Descripción
La función vx_asv_addfile() almacena un fichero de audio en la base de datos de usuarios para ser utilizado enel momento de crear la huella vocal del usuario indicado, mediante la invocación de la función vx_asv_train.Adicionalmente, utilizando la capacidad de reconocimiento de Verbio ASR, comprueba también que elcontenido del fichero coincide con la transcripción, de modo que pueda certificarse que el usuario hapronunciado exactamente aquello que se le ha solicitado.
4.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante lafunción dx_open().
id identificador del usuario del que se ha obtenido un nuevo fichero de audio para elentrenamiento de su huella vocal.
El identificador de un usuario es una cadena alfanumérica (dígitos o caracteresa-z,A-Z) elegida por el desarrollador de la aplicación. Debe ser única para cadausuario, siendo habitual que el identificador coincida con el identificadornumérico (cadena de dígitos) que se le solicitará al usuario para identificarse en elsistema.
filename nombre completo del fichero que contiene la locución del usuario indicado,destinado a ser utilizado en el proceso de creación de su huella vocal.
transcription transcripción del contenido del fichero de audio, para certificar que el contenidocoincide con la secuencia de dígitos solicitada.
mode especifica el formato de las muestras de audio del fichero.
MC_ALAW fichero sin cabecera, muestras de audio en formato Ley A (8bits, 8 KHz).
MC_MULAW fichero sin cabecera, muestras de audio en formato Ley Mu (8bits, 8 KHz).
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 11
MC_LIN16 fichero sin cabecera, muestras de audio en formato lineal (16bits, 8 KHz).
MC_WAVE fichero WAVE, muestras de audio en cualquiera de losformatos anteriores.
4.3. Precauciones
El contenido de los ficheros de entrenamiento debe ser, exclusivamente, cadenas de dígitos (de longitudvariable). Por lo tanto, las transcripciones proporcionadas deben ser cadenas numéricas, del tipo 12345678,952611232, etcétera. Se aconseja que las cadenas de entrenamiento tengan una longitud mínima de 8 dígitos yque se proporcionen, al menos, 20 de ellas, obtenidas en diferentes días (mínimo dos) y franjas horarias(mañana/tarde).
Alternativamente a utilizar la función vx_asv_addfile para cada nuevo fichero, también es posible invocardirectamente la función vx_asv_train especificando un listado de ficheros de audio a utilizar en elentrenamiento de la huella vocal del usuario. No obstante, se aconseja el uso de la función vx_asv_addfile amedida que se adquieren los ficheros de audio, ya que de este modo podrán tomarse acciones correctivas en casode que el proceso de validación indique que la transcripción no coincide con el contenido real del fichero.
4.4. Errores
En caso de error, la función retorna un valor negativo. Los posibles códigos de error retornados por esta funciónson:
-1 El canal especificado no es válido.
-4 Error interno de Verbio. La estructura de la base de datos está corrupta.
-6 Error al lanzar el proceso de reconocimiento del contenido del fichero de audio.
-18 Algún parámetro no ha sido especificado o bien es incorrecto.
-27 El contenido del fichero no coincide con la transcripción proporcionada, o bien no se ha podidocomprobar.
4.5. Elementos relacionados
vx_asv_init, vx_asv_spkinfo, vx_asv_train, vx_asv_verify
4.6. Códigos de ejemploConsulte el ejemplo de la Library SDK.
Capítulo 2. Descripción de las funciones
12 Referencia de las funciones del Dialogic SDK Verbio Technologies
5. vx_asv_spkinfo
FUNCION int vx_asv_spkinfo(int chdev, const char* id, ASV_SPKINFO* info)
int chdev descriptor de un canal abierto de Dialogic
const char *id identificador del usuario
ASV_SPKINFO* info puntero a una estructura del tipo ASV SpeakerInformation
RETORNA 2 si el usuario está registrado y dispone de huella vocal
1 si el usuario está registrado y no dispone de huella vocal
0 si el usuario no está registrado
<0 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
5.1. Descripción
La función vx_asv_spkinfo() permite conocer el estado del usuario indicado, es decir, si está registrado (se harealizado alguna operación sobre él) y si está listo para que se realicen sobre él operaciones de verificación (seha generado su huella vocal). Además, a través de la estructura ASV Speaker Information(ASV_SPKINFO), permite obtener información adicional acerca de las locuciones de que dispone actualmenteel usuario para el entrenamiento de su huella vocal.
5.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
id identificador del usuario del que se desea obtener información.
el identificador de un usuario es una cadena alfanumérica (dígitos o caracteres a-z,A-Z) elegida porel desarrollador de la aplicación. Debe ser única para cada usuario, siendo habitual que elidentificador coincida con el identificador numérico (cadena de dígitos) que se le solicitará alusuario para identificarse en el sistema.
info NULL si no se requiere información adicional.
puntero a una estructura de tipo ASV Speaker Information (ASV_SPKINFO) en la querecibir información acerca de las locuciones de que dispone actualmente el usuario para elentrenamiento de su huella vocal. Para más información acerca de esta estructura, consulte Capítulo3. Estructuras de datos y parámetros.
5.3. Errores
Si la función retorna -1 indicando que se ha producido un error, debe comprobarse que el canal especificadocomo primer parámetro es válido.
5.4. Elementos relacionados
vx_asv_init, vx_asv_addfile, vx_asv_train, vx_asv_verify
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 13
5.5. Códigos de ejemploConsulte el ejemplo de la Library SDK.
Capítulo 2. Descripción de las funciones
14 Referencia de las funciones del Dialogic SDK Verbio Technologies
6. vx_asv_init
FUNCION int vx_asv_init()
RETORNA 0 si el resultado es satisfactorio
<0 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
6.1. Descripción
La función vx_asv_init() inicializa la librería Verbio, preparándola para poder recibir peticiones deverificación de locutor.
6.2. Precauciones
La función vx_asv_init() debe invocarse previamente a cualquier invocación del resto de funciones asociadas ala verificación de locutor, tales como: vx_asv_addfile, vx_asv_train, vx_asv_verify y vx_asv_spkinfo.
6.3. Errores
En caso de error, la función retorna un valor negativo. Los posibles códigos de error retornados por esta funciónson:
-13 Error interno de Verbio. Probablemente la instalación de los componentes de ASV no se ha realizado ose ha hecho de forma incorrecta.
-14 No se dispone de licencias de ASV o bien éstas han caducado.
6.4. Elementos relacionados
vx_asv_addfile, vx_asv_train, vx_asv_verify, vx_asv_spkinfo
6.5. Códigos de ejemploConsulte el ejemplo de la Library SDK.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 15
7. vx_asv_train
FUNCION int vx_asv_train(int chdev, const char* id, const char* filename, int* lpiword,unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
const char *id identificador del usuario
const char *filename listado de ficheros de audio a utilizar durante el proceso deentrenamiento
int *lpiword puntero a un entero que, en caso de error en alguno de losficheros, almacenará la línea que contiene el fichero erróneo
unsigned int mode formato de las muestras de audio de los ficheros
RETORNA 0 si el resultado es satisfactorio
<0 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
7.1. Descripción
La función vx_asv_train() lanza el proceso de generación de la huella vocal del usuario indicado. Laslocuciones del usuario que se utilizarán para este proceso serán las especificadas mediante el parámetrofilename junto con todas aquellas asignadas al usuario anteriormente mediante llamadas a las funcionesvx_asv_addfile y/o vx_asv_train().
Una vez completada correctamente la función vx_asv_train(), el usuario ya estará listo para que se realicensobre él operaciones de verificación mediante la función vx_asv_verify().
En caso de que el usuario ya dispusiera de huella vocal, se generará una nueva huella vocal que reemplazará a laya existente.
7.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
id identificador del usuario al que entrenar su huella vocal.
El identificador de un usuario es una cadena alfanumérica (dígitos o caracteres a-z,A-Z)elegida por el desarrollador de la aplicación. Debe ser única para cada usuario, siendohabitual que el identificador coincida con el identificador numérico (cadena de dígitos) quese le solicitará al usuario para identificarse en el sistema.
filename NULL si todos los ficheros de audio y sus respectivas transcripciones se han proporcionadopreviamente invocando las funciones vx_asv_addfile y/o vx_asv_train().
En caso contrario, nombre completo del fichero de texto que contiene el listado de ficherosde audio a utilizar para la generación de la huella vocal, junto con sus respectivastranscripciones. El formato de este fichero debe ser el siguiente (una línea, acabada enretorno de carro, para cada fichero de audio a utilizar):
nombre_fichero_audio TAB transcripcion_cadena_digitos RC
Capítulo 2. Descripción de las funciones
16 Referencia de las funciones del Dialogic SDK Verbio Technologies
RC = Retorno de Carro, TAB = Tabulador
lpiword en caso de haber especificado un listado de ficheros mediante el parámetro filename,puntero a un entero que, en caso de error en alguno de los ficheros, recibirá el número de lalínea que contiene el fichero erróneo. Debe consultarse este valor si la función retorna elerror -27.
NULL en caso contrario.
mode en caso de haber especificado un listado de ficheros mediante el parámetro filename,indica el formato de las muestras de audio de los ficheros.
MC_ALAW fichero sin cabecera, muestras de audio en formato Ley A (8 bits, 8KHz).
MC_MULAW fichero sin cabecera, muestras de audio en formato Ley Mu (8 bits, 8KHz).
MC_LIN16 fichero sin cabecera, muestras de audio en formato lineal (16 bits, 8KHz).
MC_WAVE fichero WAVE, muestras de audio en cualquiera de los formatosanteriores.
7.3. Precauciones
El contenido de los ficheros de entrenamiento debe ser, exclusivamente, cadenas de dígitos (de longitudvariable). Por lo tanto, las transcripciones proporcionadas deben ser cadenas numéricas, del tipo 12345678,952611232, etcétera. Se aconseja que las cadenas de entrenamiento tengan una longitud mínima de 8 dígitos yque se proporcionen, al menos, 20 de ellas, obtenidas en diferentes días (mínimo dos) y franjas horarias(mañana/tarde).
En lugar de especificar conjuntamente el listado de ficheros y sus transcripciones mediante la funciónvx_asv_train, es preferible utilizar la función vx_asv_addfile individualmente para cada fichero según se vayanobteniendo las locuciones del usuario. De este modo, podrán tomarse acciones correctivas en caso de que elproceso de validación interno indique que el contenido de algún fichero no coincide con la transcripciónproporcionada.
7.4. Errores
En caso de error, la función retorna un valor negativo. Los posibles códigos de error retornados por esta funciónson:
-1 El canal especificado no es válido.
-4 Error interno de Verbio. La estructura de la base de datos está corrupta.
-5 No se dispone de suficiente memoria disponible para ejecutar la función.
-6 Error al lanzar el proceso de reconocimiento del contenido del fichero de audio.
-10 Error al lanzar el proceso de verificación del locutor.
-18 Algún parámetro no ha sido especificado o bien es incorrecto.
-21 El fichero especificado como parámetro no está disponible.
-27 El contenido de algún fichero no coincide con la transcripción proporcionada, o bien no se ha podidocomprobar.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 17
-28 No se dispone de suficiente material para entrenar. Es necesario proporcionar más locuciones numéricasdel usuario a entrenar.
7.5. Elementos relacionados
vx_asv_init, vx_asv_spkinfo, vx_asv_addfile, vx_asv_verify
7.6. Códigos de ejemploConsulte el ejemplo de la Library SDK.
Capítulo 2. Descripción de las funciones
18 Referencia de las funciones del Dialogic SDK Verbio Technologies
8. vx_asv_verify
FUNCION int vx_asv_verify(int chdev, const char* id, const char* filename, const char*transcription, float* score, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
const char *id identificador del usuario
const char *filename nombre del fichero de audio utilizado para verificar laidentidad del usuario
const char*transcription
transcripción del contenido del fichero de audio
float* score índice de confianza de la veracidad de la identidad del usuario
unsigned int mode formato de las muestras de audio
RETORNA 1 si el usario SÍ es quien dice ser
0 si el usario NO es quien dice ser
<0 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
8.1. Descripción
La función vx_asv_verify() lanza el proceso de verificación para determinar si la locución proporcionadapertenece realmente al usuario indicado. Para ello, se deberá haber generado previamente la huella vocal dedicho usuario mediante la función vx_asv_train.
8.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante lafunción dx_open().
id identificador del usuario cuya identidad pretende verificarse.
el identificador de un usuario es una cadena alfanumérica (dígitos o caracteresa-z,A-Z) elegida por el desarrollador de la aplicación. Debe ser única para cadausuario, siendo habitual que el identificador coincida con el identificadornumérico (cadena de dígitos) que se le solicitará al usuario para identificarse en elsistema.
filename nombre completo del fichero de audio que será utilizado en el proceso deverificación.
transcription transcripción del contenido del fichero de audio, para certificar que el contenidocoincide con la secuencia de dígitos solicitada.
score puntero a float que, tras el proceso de verificación, almacenará el índice deconfianza de la veracidad de la identidad del usuario.
mode especifica el formato de las muestras de audio del fichero.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 19
MC_ALAW fichero sin cabecera, muestras de audio en formato Ley A (8bits, 8 KHz).
MC_MULAW fichero sin cabecera, muestras de audio en formato Ley Mu (8bits, 8 KHz).
MC_LIN16 fichero sin cabecera, muestras de audio en formato lineal (16bits, 8 KHz).
MC_WAVE fichero WAVE, muestras de audio en cualquiera de losformatos anteriores.
8.3. Precauciones
El contenido de los ficheros de verificación debe ser, exclusivamente, cadenas de dígitos (de longitud variable).Por lo tanto, las transcripciones proporcionadas deben ser cadenas numéricas, del tipo 12345678,952611232, etcétera. Se aconseja que las cadenas de verificación tengan una longitud de entre 6 y 8 dígitos(cuanto más larga, mayor fiablidad en el proceso de verificación).
En general, la decisión de si el usuario ha sido verificado o no deberá tomarse del valor devuelto por la función,y no del valor de índice de confianza (parámetro score), el cual se proporciona principalmente a efectosestadísticos.
8.4. Errores
En caso de error, la función retorna un valor negativo. Los posibles códigos de error retornados por esta funciónson:
-1 El canal especificado no es válido.
-4 Error interno de Verbio. La estructura de la base de datos está corrupta.
-5 No se dispone de suficiente memoria disponible para ejecutar la función.
-6 Error al lanzar el proceso de reconocimiento del contenido del fichero de audio.
-10 Error al lanzar el proceso de verificación del locutor.
-18 Algún parámetro no ha sido especificado o bien es incorrecto.
-21 El fichero especificado como parámetro no está disponible.
-27 El contenido del fichero no coincide con la transcripción proporcionada, o bien no se ha podidocomprobar.
8.5. Elementos relacionados
vx_asv_init, vx_asv_spkinfo, vx_asv_train, vx_asv_addfile
8.6. Códigos de ejemploConsulte el ejemplo de la Library SDK.
Capítulo 2. Descripción de las funciones
20 Referencia de las funciones del Dialogic SDK Verbio Technologies
9. ATVX_BUILTIN
FUNCION int ATVX_BUILTIN(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA 0 para indicar que el resultado del reconocimiento no procede de una gramática built-in
1 para indicar que el resultado del reconocimiento sí procede de una gramática built-in
INCLUDES vxxxlib.h
MODO síncrono
9.1. Descripción
La función ATVX_BUILTIN() indica si la gramática que ha devuelto el resultado de reconocimiento alfinalizar la llamada a la función vx_recind() o vx_nbest() es una gramática interna (built-in) o no.
9.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
9.3. Precauciones
El valor devuelto por la función ATVX_BUILTIN() únicamente es válido después de la correcta finalizaciónde la función vx_recind() o vx_nbest().
9.4. Elementos relacionados
vx_recind, vx_nbest
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 21
10. vx_chkwrd
FUNCION int vx_chkwrd(const char *word, int language)
const char *word puntero a la palabra del vocabulario que desea verificarse
unsigned int language idioma del vocabulario
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
10.1. Descripción
La función vx_chkwrd() chequea la palabra del vocabulario especificada para garantizar que la funciónvx_prevcb() (o vx_prevcbex() o vx_prevcbex2() o vx_prevcbdev()) realizará la transcripción de texto afonema de forma correcta. Esta función es independiente del canal de Dialogic, por lo que únicamente debe serllamada una vez para cada nueva palabra de los vocabularios, independientemente de si, con posterioridad, elvocabulario se usará en varios canales.
10.2. Descripción de los parámetros
word puntero a la palabra del vocabulario (formada por una o más palabras) que deseaverificarse.
language especifica el idioma con el que se preparará el vocabulario que contiene la palabra aanalizar.
LVX_SPANISH Español
LVX_CATALAN Catalán
10.3. Precauciones
Esta función realiza una verificación más exhaustiva que la utilizada por la función vx_prevcb(). Por lo tanto,es posible que la función vx_prevcb() (o vx_prevcbex() o vx_prevcbex2() o vx_prevcbdev()) realice unacorrecta transcripción a pesar de que la función vx_chkwrd() devuelva error. No obstante, es aconsejablecorregir aquellas palabras incorrectas para conseguir una transcripción más precisa.
Esta función únicamente está disponible para los idiomas castellano y catalán.
10.4. Elementos relacionados
vx_prevcb, vx_prevcbex, vx_prevcbex2, vx_prevcbdev, vx_ApplyDictionary
10.5. Códigos de ejemploConsulte el ejemplo con barge-in.
Capítulo 2. Descripción de las funciones
22 Referencia de las funciones del Dialogic SDK Verbio Technologies
11. vx_clrrsp
FUNCION void vx_clrrsp(VX_RSP *rspp)
VX_RSP *rspp puntero a una estructura de tipo Recognition StringParameter
RETORNA Nada
INCLUDES vxxxlib.h
MODO síncrono
11.1. Descripción
La función vx_clrrsp() resetea todos los campos de la estructura VX_RSP asignándoles sus valores por defecto.Es aconsejable utilizar esta función para inicializar cualquier estructura VX_RSP antes de ser utilizada por otrasfunciones.
11.2. Descripción de los parámetros
rspp puntero a la estructura de tipo Recognition String Parameter que desea inicializarse. Estaestructura especifica parámetros y condiciones de terminación adicionales para el proceso dereconocimiento. Consulte Capítulo 3. Estructuras de datos y parámetros para obtener mésinformación acerca de las estructuras VX_RSP.
11.3. Precauciones
La estructura RSP debe ser reseteada mediante la función vx_clrrsp() antes de modificar alguno de sus campos.
11.4. Elementos relacionados
vx_recstr, vx_recstr_open
11.5. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 23
12. vx_clrvad
FUNCION void vx_clrvad(VAD_PRM *prm)
VAD_PRM *prm puntero a una estructura de tipo Voice ActivityDetection Parameter
RETORNA Nada
INCLUDES vxxxlib.h
MODO síncrono
12.1. Descripción
La función vx_clrvad() resetea todos los campos de la estructura VAD_PRM asignándoles sus valores pordefecto. Es aconsejable utilizar esta función para inicializar cualquier estructura VAD_PRM antes de ser utilizadapor otras funciones. Para conocer el contenido de la estructura y los valores por defecto que les asigna estafunción, consulte el Capítulo 3. Estructuras de datos y parámetros.
12.2. Descripción de los parámetros
prm puntero a la estructura de tipo Voice Activity Detection Parameter que desea inicializarse.Esta estructura especifica parámetros y condiciones de contorno para el proceso de detección de laactividad vocal. Consulte el Capítulo 3. Estructuras de datos y parámetros para obtener més informaciónacerca de la estructura VAD_PRM.
12.3. Precauciones
La estructura VAD_PRM debe ser reseteada mediante la función vx_clrvad antes de modificar cualquiera de suscampos.
12.4. Elementos relacionados
vx_vsd_open
12.5. Códigos de ejemploConsulte el ejemplo de detección de voz.
Capítulo 2. Descripción de las funciones
24 Referencia de las funciones del Dialogic SDK Verbio Technologies
13. vx_deactivatevcb
FUNCION int vx_deactivatevcb(int chdev, int vcbhandle, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
int vcbhandle descriptor de un vocabulario o gramática ABNF previamentecargado y activado
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA >=0 indicando el descriptor del vocabulario si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
13.1. Descripción
La función vx_deactivatevcb() desactiva un vocabulario o gramática ABNF previamente cargado y activado enel canal especificado. El descriptor del vocabulario se obtiene al cargarlo mediante la función vx_loadvcb() ytambién debe usarse para activarlo mediante la función vx_activatevcb() o para descargarlo mediante la funciónvx_unloadvcb().
13.2. Funcionamiento asíncrono
En modo asíncrono la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
13.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
vcbhandle descriptor de un vocabulario o gramática ABNF previamente cargado mediante la funciónvx_loadvcb() y activado mediante la función vx_activatevcb().
mode especifica si debe ejecutarse la función vx_deactivatevcb() en modo síncrono oasíncrono.
EV_ASYNC Ejecuta vx_deactivatevcb() asíncronamente
EV_SYNC Ejecuta vx_deactivatevcb() síncronamente (valor pordefecto)
13.4. Precauciones
En cualquier momento, pueden estar activos varios vocabularios y gramáticas. El descriptor utilizado en lafunción vx_deactivatevcb() debe ser el valor retornado por la función vx_loadvcb().
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento.
13.5. Errores
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 25
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID.
EVX_INVWORD THE VOCABULARY TRANSCRIPTION WAS OT FOUND
EVX_SYSTEM SYSTEM ERROR. Check errno.
13.6. Elementos relacionados
vx_setvcb, vx_loadvcb, vx_loadcd, vx_activatevcb, vx_unloadvcb, ATVX_IVCB
13.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
26 Referencia de las funciones del Dialogic SDK Verbio Technologies
14. vx_devclose
FUNCION int vx_devclose(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
14.1. Descripción
La función vx_devclose() libera los recursos consumidos por el canal especificado. Es aconsejable invocarlacuando la aplicación no deba hacer uso de recursos de reconocimiento ni de síntesis por el canal indicado.
14.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open()
14.3. Precauciones
En aplicaciones cuyos descriptores de canal se creen y destruyan de forma permanente (es decir, que no sonutilizados a lo largo de todo el tiempo de vida de la aplicación) es muy recomandable invocar a esta función alfinalizar el uso del cada canal. De este modo, se liberaran recursos (memoria, procesos, etc.) que pueden serrequeridos por los nuevos canales a utilizar.
14.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_NOLINE NO MORE LINES ARE AVAILABLE FOR THE SPECIFIED CHANNEL DEVICE
14.5. Elementos relacionados
vx_libclose, vx_srvclose, vx_thclose
14.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 27
15. vx_dtmf_close
FUNCION int vx_dtmf_close(int chdev, DTMF_REG* dtmfdev)
int chdev descriptor de un canal abierto de Dialogic
DTMF_REG*dtmfdev
descriptor de detección de tonos DTMF válido
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
15.1. Descripción
La función vx_dtmf_close() cierra el desciptor de detección de tonos DTMF abierto mediante la funciónvx_dtmf_open y libera los recursos utilizados durante el proceso de detección de tonos DTMF.
15.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
dtmfdev especifica el descriptor de detección de tonos DTMF válido obtenido mediante la funciónvx_dtmf_open.
15.3. Elementos relacionados
vx_dtmf_open, vx_dtmf_write
15.4. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
28 Referencia de las funciones del Dialogic SDK Verbio Technologies
16. vx_dtmf_open
FUNCION DTMF_REG* vx_dtmf_open(int chdev, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
unsigned int mode formato de las muestras (Ley A, Ley Mu o lineal)
RETORNA != -1 para indicar el descriptor de detección de tonos DTMF
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
16.1. Descripción
La función vx_dtmf_open() inicializa el detector de tonos DTMF en el canal especificado, de modo que estépreparado para empezar a recibir las muestras de audio mediante la función vx_dtmf_write(). El valor devueltopor la función es requerido por las funciones vx_dtmf_write() y vx_dtmf_close().
16.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
mode especifica el formato de las muestras de audio pasadas al detector de voz.
MC_ALAW formato PCM (Ley A) a 8 KHz.
MC_MULAW formato PCM (Ley Mu) a 8 KHz.
MC_LIN16 formato PCM (lineal 16 bits) a 8 KHz.
16.3. Precauciones
Una vez finalizado el proceso de detección de tonos DTMF, es imprescindible invocar a la funciónvx_dtmf_close para liberar los recursos de memoria utilizados durante el proceso de detección.
16.4. Elementos relacionados
vx_dtmf_write, vx_dtmf_close
16.5. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 29
17. vx_dtmf_word
FUNCION char* vx_dtmf_word(int chdev, const char *sequence)
int chdev descriptor de un canal abierto de Dialogic
const char* sequence cadena de tonos DTMF recibida en el canal.
RETORNA puntero a un vector de caracteres con el contenido de la palabra del vocabulario retornadapor la gramática, cuando se cumple una de sus alternativas.
puntero nulo si la secuencia no cumple ninguna de las opciones contempladas por lagramática DTMF.
INCLUDES vxxxlib.h
MODO síncrono
17.1. Descripción
La función vx_dtmfword() devuelve un puntero a un vector de caracteres ASCIIZ con el contenido asociado ala secuencia de tonos DTMF recibido por el canal y contenidos en el vocabulario o gramática activa en el canal.
17.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
sequence cadena de tonos DTMF recibida mediante las funciones vx_dtmf_open, vx_dtmf_write yvx_dtmf_close y de la que se desea saber si cumple la gramática DTMF cargada en el canalespecificado.
17.3. Elementos relacionados
vx_wordex, vx_recstr
17.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
30 Referencia de las funciones del Dialogic SDK Verbio Technologies
18. vx_dtmf_write
FUNCION const char* vx_dtmf_write(DTMF_REG* dtmfdev, const void *buffer, unsignedint n)
DTMF_REG*dtmfdev
descriptor de detección de tonos DTMF válido
const void *buffer vector en el que se encuentran las muestras de audio que debeprocesar el detector de tonos DTMF
unsigned int n tamaño del vector de muestras (en bytes)
RETORNA puntero a un vector de caracteres con los tonos DTMF reconocidos en el vector de muestrasacabado de procesar
0 (NULL) en caso de que no se haya detectado ningún tono DTMF en el vector de muestrasacabado de procesar
INCLUDES vxxxlib.h
MODO síncrono
18.1. Descripción
La función vx_dtmf_write() envía las muestras recibidas hacia el detector de tonos DTMF para ser procesadas.
La función retorna los identificadores de los tonos DTMF detectados dentro de la última trama de muestrasprocesada. Los posibles identificadores son: 1 2 3 4 5 6 7 8 9 0 * # A B C D.
18.2. Descripción de los parámetros
dtmfdev especifica el descriptor de detección de tonos DTMF válido obtenido mediante la funciónvx_dtmf_open.
buffer vector en el que se encuentran las muestras de audio que debe procesar el detector de tonosDTMF.
n tamaño del vector de muestras.
18.3. Precauciones
El vector de caracteres retornado es volátil, de modo que en las sucesivas invocaciones a esta función o a lasfunciones vx_dtmf_open y vx_dtmf_close su valor se verá modificado, siendo necesario su almacenamiento sise requiere un procesado posterior del resultado retornado.
18.4. Elementos relacionados
vx_dtmf_open, vx_dtmf_close
18.5. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 31
19. ATVX_ERRMSGP
FUNCION char * ATVX_ERRMSGP(int dev)
int dev descriptor de un canal abierto de Dialogic o -1 para funcionesindependientes del canal
RETORNA vector de caracteres con una descripción del error ocurrido en la última llamada a unafunción del SDK
INCLUDES vxxxlib.h
MODO síncrono
19.1. Descripción
La función ATVX_ERRMSGP() devuelve un puntero a un vector ASCIIZ que describe el motivo del errorproducido durante la última llamada a una función de la librería Verbio. Este puntero es válido a lo largo de laejecución de la aplicación. Si no se ha producido ningún error durante la última llamada a una función, el vectorcontiene el valor "NO ERROR".
Si el error se ha producido durante la llamada a una función dependiente del canal (vx_setvcb(), vx_recstr(), ...)el parámetro de entrada dev especifica el descriptor de canal de Dialogic correspondiente. Si el error se haproducido durante la llamada a una función independiente del canal (vx_libinit(), vx_prevcb(),vx_ApplyDictionary(), ...) debe utilizarse -1 como valor del parámetro dev.
19.2. Descripción de los parámetros
dev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open() o -1para funciones independientes del canal.
19.3. Elementos relacionados
ATVX_LASTERR
19.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
32 Referencia de las funciones del Dialogic SDK Verbio Technologies
20. vx_getasrlic
FUNCION int vx_getasrlic(const char *configuration)
const char*configuration
identificador de la configuración de reconocimiento de la quese desean consultar las licencias disponibles
RETORNA Número de licencias máximas disponibles (adquiridas)
INCLUDES vxxxlib.h
MODO síncrono
20.1. Descripción
La función vx_getasrlic() consulta el número de licencias de la configuración especificada disponibles en total(adquiridas) en el servidor utilizado (aquél especificado antes de invocar a la función vx_libinit o vx_asr_init).
20.2. Descripción de los parámetros
configuration especifica la configuración de reconocimiento de la que se desea conocer elnúmero de licencias disponibles. Para más información, puede consultarse eldocumento Verbio Software Reference: Guía del Usuario.
CFG_SPANISH Español castellano
CFG_SPANISH_CATALAN Español castellano +catalán
CFG_SPANISH_BASQUE Español castellano +euskera
CFG_SPANISH_GALICIAN Español castellano +gallego
CFG_SPANISH_CATALAN_BASQUE_GALICIAN Español castellano +catalán + euskera + gallego
CFG_PORTUGUESE Portugués
CFG_PORTUGUESE_BRAZILIAN Portugués brasileño
CFG_SPANISH_ARGENTINIAN Español argentino
CFG_SPANISH_CHILEAN Español chileno
CFG_SPANISH_COLOMBIAN Español colombiano
CFG_SPANISH_MEXICAN Español mexicano
CFG_SPANISH_VENEZUELAN Español venezolano
CFG_FRENCH Francés
CFG_ENGLISH Inglés
20.3. Precauciones
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 33
La función vx_getasrlic() debe invocarse una vez establecida la comunicación con el servidor dereconocimiento al que se le solicita el número de licencias disponibles, entendiendo por disponibles el númeromáximo de peticiones de reconocimiento simultáneas que pueden realizarse, en ese servidor, para laconfiguración especificada.
20.4. Elementos relacionados
vx_getusedasrlic, vx_getttslic vx_getusedttslic, vx_libinit vx_asr_init
20.5. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
34 Referencia de las funciones del Dialogic SDK Verbio Technologies
21. vx_GetDllVersion
FUNCION int vx_GetDllVersion(unsigned long *fileverp, unsigned long *prodverp)
unsigned long*fileverp
número de versión del fichero DLL de VERBIO
unsigned long*prodverp
número de versión del producto
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
21.1. Descripción
La función vx_GetDllVersion() retorna el número de versión de la DLL de VERBIO tanto del fichero como delproducto.
21.2. Descripción de los parámetros
fileverp puntero en el que se guardará la información referente a la versión del fichero.
prodverp puntero en el que se guardará la información referente a la versión del producto.
21.3. Elementos relacionados
dx_GetDllVersion, sr_GetDllVersion (consulte la documentación de Dialogic)
21.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 35
22. vx_getparm
FUNCION int vx_getparm(int dev, unsigned long parm, void *valuep)
int dev descriptor de un canal abierto de Dialogic o -1 paraparámetros globales de VERBIO (independientes del canal)
unsigned long parm parámetro del que se desea obtener el valor
void *valuep puntero a la variable en la que se almacenará el valor delparámetro solicitado
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
22.1. Descripción
La función vx_getparm() obtiene los valores actuales de los parámetros globales o dependientes del canal deVERBIO. Esta función puede obtener el valor de un único parámetro en cada invocación.
22.2. Descripción de los parámetros
dev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().Use -1 para obtener el valor de parámetros globales de VERBIO.
parm especifica el identificador del parámetro del que se desea recuperar el valor en la variableapuntada por valuep. Los identificadores de los parámetros pueden consultarse en Capítulo 3.Estructuras de datos y parámetros.
valuep puntero a la variable en la que se almacenará el valor del parámetro solicitado.
22.3. Elementos relacionados
vx_setparm, dx_getparm (consulte la documentación de Dialogic)
22.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
36 Referencia de las funciones del Dialogic SDK Verbio Technologies
23. vx_getttslic
FUNCION int vx_getttslic(const char *language)
const char *language identificador del idioma de síntesis del que se deseanconsultar las licencias disponibles
RETORNA Número de licencias máximas disponibles (adquiridas)
INCLUDES vxxxlib.h
MODO síncrono
23.1. Descripción
La función vx_getttslic() consulta el número de licencias del idioma especificado disponibles en total(adquiridas) en el servidor utilizado (aquél especificado antes de invocar a la función vx_libinit o vx_tts_init).
23.2. Descripción de los parámetros
language especifica el idioma de síntesis del que se desea conocer el número de licencias disponibles.Para más información, puede consultarse el documento Verbio SoftwareReference: Guía del Usuario.
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_SPANISH_MEXICAN Español mexicano
LNG_FRENCH Francés
LNG_ENGLISH Inglés
23.3. Precauciones
La función vx_getttslic() debe invocarse una vez establecida la comunicación con el servidor de síntesis al quese le solicita el número de licencias disponibles, entendiendo por disponibles el número máximo de peticionesde síntesis simultáneas que pueden realizarse, en ese servidor, para el idioma especificado.
23.4. Elementos relacionados
vx_getusedttslic, vx_getasrlic, vx_getusedasrlic, vx_libinit, vx_tts_init
23.5. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 37
24. vx_getusedasrlic
FUNCION int vx_getusedasrlic()
RETORNA Número de licencias disponibles en el momento de la invocación
INCLUDES vxxxlib.h
MODO síncrono
24.1. Descripción
La función vx_getusedasrlic() consulta el número de licencias de la configuración especificada disponibles enun momento determinado (libres) en el servidor utilizado (aquél especificado antes de invocar a la funciónvx_libinit o vx_asr_init).
24.2. Precauciones
La función vx_getusedasrlic() devuelve el número de licencias disponibles en un momento determinado, paracontrolar la disponibilidad de las mismas antes de realizar una petición. Puede combinarse también con lasfunciones vx_recstr_wait y vx_recstr_release.
24.3. Elementos relacionados
vx_getttslic, vx_recstr_wait, vx_recstr_release
24.4. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
38 Referencia de las funciones del Dialogic SDK Verbio Technologies
25. vx_getusedttslic
FUNCION int vx_getusedttslic()
RETORNA Número de licencias disponibles en el momento de la invocación
INCLUDES vxxxlib.h
MODO síncrono
25.1. Descripción
La función vx_getusedttslic() consulta el número de licencias de la configuración especificada disponibles enun momento determinado (libres) en el servidor utilizado (aquél especificado antes de invocar a la funciónvx_libinit o vx_tts_init).
25.2. Precauciones
La función vx_getusedttslic() devuelve el número de licencias disponibles en un momento determinado, paracontrolar la disponibilidad de las mismas antes de realizar una petición. Puede combinarse también con lasfunciones vx_playstr_wait y vx_playstr_release.
25.3. Elementos relacionados
vx_getusedasrlic, vx_playstr_wait, vx_playstr_release
25.4. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 39
26. ATVX_IVCB
FUNCION int ATVX_IVCB(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA >=0 indicando el descriptor del vocabulario afectado por el último resultado dereconocimiento
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
26.1. Descripción
La función ATVX_IVCB() retorna el descriptor del vocabulario del que se ha reconocido una secuencia duranteel último proceso de reconocimiento. Este valor está disponible después de la finalización de una llamadasíncrona o asíncrona a las funciones vx_recind() o vx_nbest().
26.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
26.3. Precauciones
El valor devuelto por la función ATVX_IVCB() sólo es válido tras la correcta finalización de la funciónvx_recind() o vx_nbest().
26.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_NORECIND NO RECIND. Call vx_recind() before calling ATVX_IVCB().
26.5. Elementos relacionados
vx_recind, vx_nbest
26.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
40 Referencia de las funciones del Dialogic SDK Verbio Technologies
27. ATVX_LASTERR
FUNCION long ATVX_LASTERR(int dev)
int dev descriptor de un canal abierto de Dialogic o -1 para funcionesindependientes del canal
RETORNA número del error
INCLUDES vxxxlib.h
MODO síncrono
27.1. Descripción
La función ATVX_LASTERR() retorna un valor long que identifica el error que se ha producido durante laúltima llamada a una función del SDK de Verbio. Los errores están definidos en vxxxlib.h. Si no se haproducido ningún error durante la última llamada a una función, el valor devuelto es 0.
Si el error se ha producido durante la llamada a una función dependiente del canal (vx_setvcb(), vx_recstr(), ...)el parámetro de entrada dev especifica el descriptor de canal de Dialogic correspondiente. Si el error se haproducido durante la llamada a una función independiente del canal (vx_libinit(), vx_prevcb(),vx_ApplyDictionary(), ...) debe utilizarse -1 como valor del parámetro dev.
27.2. Descripción de los parámetros
dev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open() o -1para funciones independientes del canal.
27.3. Elementos relacionados
ATVX_ERRMSGP
27.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 41
28. vx_libclose
FUNCION int vx_libclose()
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
28.1. Descripción
La función vx_libclose libera las conexiones con el motor de síntesis y o reconocimiento del habla iniciadasmediante la función vx_libinit, vx_asr_init o vx_tts_init y libera todos los recursos utilizados por el cliente deVerbio. Una vez finalizada la función vx_libclose, no pueden invocarse otras funciones del SDK de Verbiodesde el cliente afectado, exceptuando aquellas destinadas a establecer de nuevo la conexión con el servidor.
28.2. Elementos relacionados
vx_libinit, vx_asr_init, vx_tts_init
28.3. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
42 Referencia de las funciones del Dialogic SDK Verbio Technologies
29. vx_libinit
FUNCION int vx_libinit(int options)
int options identificador del idioma por defecto
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
29.1. Descripción
La función vx_libinit() inicializa la librería Verbio. El parámetro options especifica el idioma por defectoque utilizarán el servidor de reconocimiento y el servidor de síntesis.
Esta función está incluida por compatibilidad con versiones anteriores, aunque en nuevos desarrollos es muyrecomendable utilizar las nuevas funciones equivalentes vx_asr_init y/o vx_tts_init, según las necesidadesconcretas.
29.2. Descripción de los parámetros
options especifica el idioma de trabajo por defecto y si deben inicializarse los servidores dereconocimiento y de síntesis (por defecto, ambos se inicializan).
LVX_SPANISH Español
LVX_CATALAN Catalán
LVX_BASQUE Euskera
LVX_GALICIAN Gallego
LVX_PORTUGUESE Portugués
LVX_BRAZILIAN Portugués brasileño
OVX_NORECSTR no se inicializa el servidor de reconocimiento
OVX_NOPLAYSTR no se inicializa el servidor de síntesis
OVX_TTSLITE inicialización rápida (menores prestaciones) del sintetizador(depuración)
29.3. Precauciones
La función vx_libinit() debe invocarse antes que ninguna otra de las funciones del SDK de Verbio, aexcepción de aquella destinada a establecer el servidor de trabajo por defecto en configuracionescliente-servidor (vx_setparm).
29.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 43
EVX_SRERROR DIALOGIC SRL ERROR. Check ATDV_LASTERR() and ATDV_ERRMSGP().
EVX_DXERROR DIALOGIC VOICE ERROR. Check ATDV_LASTERR() andATDV_ERRMSGP().
EVX_NOBOARDS NO BOARDS DETECTED. Check Dialogic Drivers Start Up.
EVX_INVSETUP VERBIO INTERNAL ERROR. Files may be corrupted. Check disk and repeatSetup.
EVX_NOMEM OUT OF MEMORY.
EVX_NOLICFILE NO LICENSE FILE WAS FOUND. Run CheckOut to obtain a license file.
EVX_INVLIC THE LICENSE FILE IS NOT VALID. Run CheckOut to obtain a valid licensefile.
EVX_SYSTEM SYSTEM ERROR.Check errno.
EVX_INVSRVER INVALID DIALOGIC SRL RELEASE (libsrlmt.dll). Check README.TXT.
EVX_INVDXVER INVALID DIALOGIC VOICE LIBRARY RELEASE (libdxxmt.dll).
29.5. Elementos relacionados
vx_libclose, vx_asr_init, vx_tts_init
29.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
44 Referencia de las funciones del Dialogic SDK Verbio Technologies
30. vx_loadcd
FUNCION int vx_loadcd(int chdev, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA >=0 indicando el descriptor del vocabulario si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
30.1. Descripción
La función vx_loadcd() carga el vocabulario de dígitos conectados (consulte Sección 59 para más información)en el canal especificado. En caso satisfatorio, retorna un descriptor asociado con el vocabulario cargado paraque éste pueda ser activado, desactivado y descargado mediante las funciones vx_activatevcb(),vx_deactivatevcb() y vx_unloadvcb() respectivamente.
30.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
30.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
mode especifica si debe ejecutarse la función vx_loadcd() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_loadcd() asíncronamente
EV_SYNC Ejecuta vx_loadcd() síncronamente (valor por defecto)
30.4. Precauciones
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento.
30.5. Errores
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY
EVX_SYSTEM SYSTEM ERROR. Check errno.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 45
30.6. Elementos relacionados
vx_setcd, vx_loadvcb, vx_activatevcb, vx_deactivatevcb, vx_unloadvcb, ATVX_IVCB
Capítulo 2. Descripción de las funciones
46 Referencia de las funciones del Dialogic SDK Verbio Technologies
31. vx_loadvcb
FUNCION int vx_loadvcb(int chdev, const char *filename, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
const char *filename nombre del vocabulario o de la gramática ABNF/DTMF quedebe cargarse
unsigned int mode funcionamiento síncrono o asíncrono y/o gramática ABNF oDTMF
RETORNA >=0 indicando el descriptor del vocabulario si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
31.1. Descripción
La función vx_loadvcb() carga el vocabulario o la gramática ABNF o DTMF en el canal especificado. En casosatisfatorio, retorna un descriptor asociado con el vocabulario cargado para que éste pueda ser activado,desactivado y descargado mediante las funciones vx_activatevcb(), vx_deactivatevcb() y vx_unloadvcb()respectivamente.
31.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
31.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
filename puntero al nombre del fichero de texto que contiene el vocabulario (cada línea contiene unapalabra del vocabulario formada por una o más palabras) o la gramática ABNF.
mode indica el tipo de vocabulario o gramática y si debe ejecutarse la función vx_loadvcb() enmodo síncrono o asíncrono (pueden especificarse dos o más flag mediante el operadorlógico "|".
GVX_ISOLATED Palabras aisladas. El reconocedor espera reconocer una únicapalabra del vocabulario de este vocabulario.
GVX_CONNECTED Palabras conectadas (valor por defecto). El reconocedorespera reconocer una o más palabras delvocabulario de este vocabulario.
GVX_ABNF gramática ABNF. El reconocedor espera reconocer una o máspalabras de la gramática.
GVX_DTMF gramática DTMF. El reconocedor espera recibir uno o mástonos DTMF.
EV_ASYNC Ejecuta vx_loadvcb() asíncronamente
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 47
EV_SYNC Ejecuta vx_loadvcb() síncronamente (valor por defecto)
31.4. Precauciones
Sin la opción GVX_ABNF habilitada, la función vx_loadvcb() requiere el fichero de definiciones y el fichero detranscripciones generados mediante la función vx_prevcb() o vx_prevcbex() o vx_prevcbdev(). Si estosficheros existen y el fichero de vocabulario correspondiente no ha sido modificado desde que se llamó a lafunción vx_prevcb() (o vx_prevcbex() o vx_prevcbdev()), no es necesario volver a invocarlas antes de cargarel vocabulario mediante la función vx_loadvcb().
Con la opción GVX_ABNF habilitada, la función vx_loadvcb() requiere el fichero de estados de la gramática, elfichero de definiciones y el fichero de transcripciones generado mediante la función vx_prevcb() ovx_prevcbex() o vx_prevcbdev(). Si estos ficheros existen y la gramática ABNF correspondiente no ha sidomodificado desde que se llamó a la función vx_prevcb() (o vx_prevcbex() o vx_prevcbdev()), no es necesariovolver a invocarlas antes de cargar la gramática mediante la función vx_loadvcb().
Con la opción GVX_DTMF la gramática no crea ficheros adicionales resultados de la compilación.
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento.
La configuración de reconocimiento activa en el momento de cargar la gramática debe ser la misma que laexistente en el momento de su preparación. En caso contrario, aparecerá el error THE VOCABULARYCONTAINS AN INVALID WORD. Check and correct invalid words.
31.5. Errores
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY.
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID.
EVX_INVWORD THE VOCABULARY TRANSCRIPTION WAS NOT FOUND.
EVX_SYSTEM SYSTEM ERROR. Check errno.
31.6. Elementos relacionados
vx_setcd, vx_loadcd, vx_activatevcb, vx_deactivatevcb, vx_unloadvcb, ATVX_IVCB
31.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
48 Referencia de las funciones del Dialogic SDK Verbio Technologies
32. vx_nbest
FUNCION int vx_nbest(int chdev, int maxind, int *index, float *score, int ibest, unsignedint mode)
int chdev descriptor de un canal abierto de Dialogic
int maxind número máximo de palabras del vocabularioconectadas o de palabras de la gramática
int *index vector de enteros en el que se recibirán los índices de laspalabras reconocidas
float *score vector de float en el que se recibirán los índices deconfianza de las palabras reconocidas
int ibest número de la hipótesis de interés
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 para indicar que se ha iniciado satisfactoriamente (Asíncrono)
>=0 para indicar la cantidad de palabras reconocidas (Síncrono)
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
32.1. Descripción
La función vx_nbest() debe ser llamada al finalizar las funciones vx_recstr() o vx_recstr_open() para obtenerlos índices y niveles de confianza de las palabras reconocidas correspondientes a la hipótesis ibest-ésima. Lafunción vx_nbest() es una extensión de la función vx_recind() para permitir la obtención de múltiples hipótesisde reconocimiento de una misma locución.
El número máximo de hipótesis devuelto por el servidor de reconocimiento depende del parámetroVXCH_ACTIVE_NBEST (y VXCH_NBEST). Estos parámetros son dependientes del canal y deben serespecificados mediante la función vx_setparm() antes de iniciar el reconocimiento mediante las funcionesvx_recstr() o vx_recstr_open(). El valor por defecto de ambos parámetros es 1.
Si el número de palabras reconocidas es cero, index[0] contiene uno de los siguientes índices especiales:
IND_NOVOICE No se ha detectado voz.
IND_NOWORD No se ha reconocido ninguna palabra del vocabulario ni de la gramática.
IND_EARLY_START No se ha detectado silencio inicial.
32.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_RECIND en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
La cantidad de palabras reconocidas puede obtenerse mediante la función ATVX_NIND().
32.3. Descripción de los parámetros
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 49
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
maxind especifica el número máximo de palabras del vocabulario conectadas o palabras de lagramática que pueden reconocerse. En reconocimiento de palabras aisladas, el valor de estaparámetro debe fijarse a 1.
index puntero a un vector de enteros que recibirá los índices de las palabras reconocidas. El tamaño deeste vector debe ser mayor o igual a maxind.
score puntero a un vector de float que recibirá los niveles de confianza de las palabras reconocidas.El nivel de confianza de cada índice proporciona una medida de fiabilidad del reconocimiento,que puede ser utilizada para rechazar o pedir confirmación de las palabras reconocidas. Eltamaño de este vector debe ser mayor o igual a maxind.
ibest número de la hipótesis de interés. El valor de este parámetro puede estar entre 0 (hipótesis másfiable) y NBest-1, donde NBest es el máximo número de hipótesis activo en un canalespecificado mediante la función vx_setparm() (parámetro VXCH_ACTIVE_NBEST).
mode especifica si debe ejecutarse la función vx_nbest() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_nbest() asíncronamente
EV_SYNC Ejecuta vx_nbest() síncronamente (valor por defecto)
32.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_NORECSTR NO RECOGNITION. Use vx_recstr() to start recognition.
32.5. Elementos relacionados
vx_recstr, vx_recstr_open, vx_recind, ATVX_NIND
32.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
50 Referencia de las funciones del Dialogic SDK Verbio Technologies
33. ATVX_NIND
FUNCION int ATVX_NIND(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA >=0 para indicar el número de palabras del vocabulario o de la gramáticareconocidas
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
33.1. Descripción
La función ATVX_NIND() retorna el número de palabras del vocabulario o de la gramáticareconocidas después de la finalización de la llamada a la función vx_recind() o vx_nbest().
33.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
33.3. Precauciones
El valor devuelto por la función ATVX_NIND() únicamente es válido después de la correcta finalización de lafunción vx_recind() o vx_nbest().
33.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_NORECIND NO RECIND. Call vx_recind() before calling ATVX_NIND().
33.5. Elementos relacionados
vx_recind, vx_nbest
33.6. Códigos de ejemploConsulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 51
34. vx_playstr
FUNCION int vx_playstr(int chdev, char *string, DV_TPT *tptp, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
char *string vector ASCIIZ con el texto que debe ser sintetizado
DV_TPT *tptp puntero a una estructura del tipo TerminationParameter Table
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
34.1. Descripción
La función vx_playstr() inicia la conversión de texto a voz del texto especificado. Una vez la función esinvocada, la conversión continua hasta el final del texto, la invocación de la función dx_stopch() o elcumplimiento de alguna de las condiciones de terminación especificadas en los campos de la estructuraDV_TPT.
34.2. Funcionamiento asíncrono
Para ejecutar esta función de forma asíncrona, debe especificarse EV_ASYNC en el parámetro mode. Una vezinvocada en modo asíncrono, la función retorna 0 para indicar que se ha iniciado satisfactoriamente y generaráel evento TDX_PLAY al finalizar.
Al finalizar la función vx_playstr(), la información referente al estado del canal actual (incluyendo el motivo dela finalización) puede consultarse utiliando las funciones Extended Attribute.
NOTA: El evento TDX_PLAY puede recibirse a pesar de no haberse sintetizado todo el texto (debido a larecepción de un tono DTMF o al colgado de la línea por parte del usuario). Por lo tanto, una vez recibido elevento, debe invocarse la función vx_termplaystr() para indicar al servidor de síntesis que no se le enviará mástexto y que, por lo tanto, ya pueden liberarse todos los recursos asignados a la función vx_playstr().
34.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
string vector ASCIIZ con el texto que debe ser sintetizado. Para una óptima síntesis, es imprescindibleque el texto esté bien puntuado, acentuado, etc.
tptp puntero a una estructura de tipo Termination Parameter Table (DV_TPT) en la que seespecifican las condiciones de terminación del proceso de síntesis. Las condiciones válidas quepueden especificarse son las siguientes:
DX_DIGTYPE Digit termination for user defined tone
DX_MAXDTMF Maximum number of digits received
DX_MAXSIL Maximum silence
Capítulo 2. Descripción de las funciones
52 Referencia de las funciones del Dialogic SDK Verbio Technologies
DX_MAXNOSIL Maximum non-silence
DX_LCOFF Loop current off
DX_IDDTIME Inter-digit delay
DX_MAXTIME Function time
DX_DIGMASK Digit mask termination
DX_PMOFF Pattern match silence off
DX_PMON Pattern match silence on
DX_TONE Tone-off or Tone-on detection
Consulte la descripción de la función dx_play() en la documentación de Dialogic paraobtener más información acerca de esta estructura.
NOTA: Adicionalmente a las condiciones de terminación definidas mediante la estructuraDV_TPT, la función vx_playstr también termina al sintetizar todo el texto o al invocarse a lafunción dx_stopch(). En ambos casos, el motivo de la finalización obtenido mediante la funciónATDX_TERMMSK() será TM_EOD (End of data).
mode especifica si debe ejecutarse la función vx_playstr() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_playstr() asíncronamente
EV_SYNC Ejecuta vx_playstr() síncronamente (valor por defecto)
34.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_SRERROR DIALOGIC SRL ERROR. Check ATDV_LASTERR() and ATDV_ERRMSGP().
EVX_DXERROR DIALOGIC VOICE ERROR. Check ATDV_LASTERR() andATDV_ERRMSGP().
EVX_SYSTEM SYSTEM ERROR. Check errno.
34.5. Elementos relacionados
vx_termplaystr, dx_play (consulte la documentación de Dialogic)
34.6. Códigos de ejemplo
Consulte el ejemplo síncrono.
Consulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 53
35. vx_playstr_close
FUNCION int vx_playstr_close(int chdev, int playdev)
int chdev descriptor de un canal abierto de Dialogic
int playdev descriptor de reproducción válido
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
35.1. Descripción
La función vx_playstr_close() cierra el descriptor de reproducción abierto mediante la funciónvx_playstr_open y libera los recursos utilizados durante el proceso de síntesis.
35.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
playdev especifica el descriptor de reproducción válido obtenido mediante la funciónvx_playstr_open.
35.3. Elementos relacionados
vx_playstr_open, vx_playstr_read
35.4. Códigos de ejemploConsulte el ejemplo del Library SDK.
Capítulo 2. Descripción de las funciones
54 Referencia de las funciones del Dialogic SDK Verbio Technologies
36. vx_playstr_open
FUNCION int vx_playstr_open(int chdev, char *string, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
char *string vector ASCIIZ que contiene el texto a sintetizar
unsigned int mode formato de las muestras (Ley A o Ley Mu)
RETORNA != -1 para indicar el descriptor de reproducción
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
36.1. Descripción
La función vx_playstr_open() inicia la síntesis del texto especificado y no finaliza hasta que se haya sintetizadocompletamente. Las muestras de audio resultantes se obtendrán mediante la función vx_playstr_read(),utilizando el descriptor de reproducción devuelto por la función vx_playstr_open().
36.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
string vector ASCIIZ que contiene el texto que debe sintetizarse. Para una óptima síntesis, esimprescindible que el texto esté bien puntuado, acentuado, etc.
mode especifica el formato de las muestras de audio generadas por el sintetizador.
MC_ALAW Muestras de audio en formato de Ley A (8 bits, 8 KHz)
MC_MULAW Muestras de audio en formato de Ley Mu (8 bits, 8 KHz)
MC_LIN16 Muestras de audio en formato lineal (16 bits, 8 KHz). (valor por defecto)
36.3. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_SYSTEM SYSTEM ERROR. Check errno.
36.4. Elementos relacionados
vx_playstr_read, vx_playstr_close
36.5. Códigos de ejemploConsulte el ejemplo del Library SDK.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 55
37. vx_playstr_read
FUNCION int vx_playstr_read(int playdev, void *buffer, unsigned int count)
int playdev descriptor de reproducción válido
void *buffer vector en el que se almacenarán las muestras de audioprocedentes del sintetizador
unsigned int count número de muestras a obtener (en bytes)
RETORNA >=0 número de muestras obtenidas del sintetizador
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
37.1. Descripción
La función vx_playstr_read() obtiene las muestras de audio generadas por la función vx_playstr_open().
La función retorna un número igual al número de bytes solicitados para indicar que todavía no ha finalizado elproceso de síntesis.
La función retorna un número de muestras menor que el solicitado para indicar que el servidor de síntesis ya nodispone de más muestras de voz sintética para entregar, por lo que no debe invocarse a la funciónvx_playstr_read() nuevamente.
37.2. Descripción de los parámetros
playdev especifica el descriptor de reproducción válido obtenido mediante la funciónvx_playstr_open.
buffer vector en el que se almacenarán las muestras de audio procedentes del sintetizador. Debe tenerun tamaño igual o superior al número de muestras solicitadas mediante el parámetro n.
n cantidad de muestras solicitadas al sintetizador.
37.3. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_SYSTEM SYSTEM ERROR. Check errno.
37.4. Elementos relacionados
vx_playstr_open, vx_playstr_close
37.5. Códigos de ejemploConsulte el ejemplo del Library SDK.
Capítulo 2. Descripción de las funciones
56 Referencia de las funciones del Dialogic SDK Verbio Technologies
38. vx_playstr_release
FUNCION int vx_playstr_release(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
38.1. Descripción
La función vx_playstr_release() libera un recurso (licencia) de síntesis del habla reservado mediante la funciónvx_playstr_wait() en el canal especificado.
38.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
38.3. Elementos relacionados
vx_playstr_wait, vx_getusedttslic, vx_recstr_release, vx_recstr_wait
38.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 57
39. vx_playstr_wait
FUNCION int vx_playstr_wait(int chdev, int ms)
int chdev descriptor de un canal abierto de Dialogic
int ms tiempo máximo de espera para obtener un recurso (en milisegundos)
RETORNA 0 si el resultado es satisfactorio
-1 en caso de no poder obtener un recurso en el tiempo especificado
INCLUDES vxxxlib.h
MODO síncrono
39.1. Descripción
La función vx_playstr_wait() reserva un recurso (licencia) de síntesis del habla para el canal especificado hastaque se libere mediante la función vx_playstr_release(). La función espera un máximo de ms milisegundos ladisponibilidad de un recurso, transcurridos los cuales devuelve un error.
El uso de esta función es aconsejable para gestionar el uso de los recursos (licencias) disponibles. En entornosen los que nunca se producirán más peticiones simultáneas de síntesis que licencias disponibles no es necesariosu uso.
39.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
ms tiempo máximo de espera, en milisegundos, para obtener un recurso (licencia) de síntesis del hablapara el canal especificado.
39.3. Elementos relacionados
vx_playstr_release, vx_getusedttslic, vx_recstr_wait, vx_recstr_release
39.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
58 Referencia de las funciones del Dialogic SDK Verbio Technologies
40. vx_prevcb
FUNCION int vx_prevcb(const char *filename, unsigned int mode)
const char *filename puntero al nombre del fichero que contiene el vocabulario o lagramática ABNF a preparar
unsigned int mode funcionamiento síncrono o asíncrono e indicación de trabajarcon una gramática ABNF
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
40.1. Descripción
Sin especificar el modo GVX_ABNF (vocabulario convencional), la función vx_prevcb() realiza la transcripciónfonética del contenido del fichero, almacenándola en un nuevo fichero binario con el mismo nombre que el delvocabulario pero con extensión ".trc". Esta función es independiente del canal y debe utilizarse una vez paracada vocabulario aunque éste se utilice en distintos canales (sí es necesario invocar de nuevo a la funcióncuando se modifica dinámicamente el contenido del vocabulario).
Cuando se especifica el modo GVX_ABNF (gramática ABNF), la función vx_prevcb() compila la gramáticaespecificada. El resultado de la compilación se almacena en un nuevo fichero de texto con el mismo nombre quela gramática pero con extensión ".trx" (conteniendo el vocabulario de la gramática) y en un nuevo fichero detexto con extensión ".grm" (conteniendo los estados de la gramática). También se realiza la trancripciónfonética que se almacena en un nuevo fichero binario con el mismo nombre que el de la gramática pero conextensión ".trc". Esta función es independiente del canal y debe utilizarse una vez para cada gramáticaaunque ésta se utilice en distintos canales (sí es necesario invocar de nuevo a la función cuando se modificadinámicamente el contenido de la gramática). En caso que deba preparar gramáticas dinámicas en distintoscanales, debe utilizarse la función vx_prevcbdev para evitar conflictos entre ellos.
El vocabulario se preparará en el idioma y configuración de reconocimiento especificados mediante la funciónvx_asr_init o bien mediante la función vx_setparm (parámetros VXCH_DEFASRCFG y VXCH_DEFASRLNG ).Únicamente el idioma puede especificarse independientemente usando la función vx_prevcbex2.
40.2. Funcionamiento asíncrono
Cuando se ejecuta asíncronamente, esta función no genera ningún evento de terminación. Si deben prepararsenuevos vocabularios o gramáticas en entornos asíncronos, puede invocarse la función vx_prevcb() seguida de lafunción vx_setvcb(): el evento de terminación TVX_SETVCB indicará que ambas funciones han finalizadosatisfactoriamente.
40.3. Descripción de los parámetros
filename puntero al nombre del fichero que contiene el vocabulario (cada línea constituye unapalabra del vocabulario formada por una o más palabras) o la gramática ABNF.
mode especifica si debe ejecutarse la función vx_prevcb() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_prevcb() asíncronamente
EV_SYNC Ejecuta vx_prevcb() síncronamente (valor por defecto)
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 59
especifica si se trata de una gramática ABNF.
GVX_ABNF gramática ABNF
NOTA: puede combinar las distintas opciones mediante el operador lógico "|"
40.4. Precauciones
La función vx_prevcb() preparará el vocabulario en el idioma por defecto que se haya especificado al motor(excepto aquellas palabras que incorporen el identificador del idioma). Si desea especificarse un idioma distinto,deberá utilizarse la función vx_prevcbex2() o bien modificarlo previamente mediante la función vx_setparm.
La configuración de reconocimiento activa en el momento de cargar la gramática debe ser la misma que laexistente en el momento de su preparación. En caso contrario, aparecerá el error THE VOCABULARYCONTAINS AN INVALID WORD. Check and correct invalid words.
40.5. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_NOMEM OUT OF MEMORY
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID. Check the vocabulary filename and path writing permission.
EVX_PARSER ABNF PARSER ERROR. Check the ABNF grammar syntax.
EVX_INVWORD THE VOCABULARY CONTAINS AN INVALID WORD. Check and correctinvalid words
EVX_SYSTEM SYSTEM ERROR. Check errno.
40.6. Elementos relacionados
vx_prevcbex, vx_prevcbex2, vx_prevcbdev, vx_setvcb, vx_loadvcb
40.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
60 Referencia de las funciones del Dialogic SDK Verbio Technologies
41. vx_prevcbdev
FUNCION int vx_prevcbdev(int chdev, const char *filename, unsigned int mode, int*lpiword, const char *language)
int chdev descriptor de un canal abierto de Dialogic
const char *filename puntero al nombre del fichero que contiene el vocabulario o lagramática ABNF a preparar
unsigned int mode funcionamiento síncrono o asíncrono e indicación de trabajarcon una gramática ABNF
int *lpiword puntero que almacenará la línea errónea del fichero en caso deerror
const char *language idioma en el que se preparará el vocabulario
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
41.1. Descripción
Sin especificar el modo GVX_ABNF (vocabulario convencional), la función vx_prevcbdev() realiza latranscripción fonética del contenido del fichero en el canal indicado, almacenándola en un nuevo fichero binariocon el mismo nombre que el del vocabulario pero con extensión ".trc". Esta función está indicada parapreparar gramáticas dinámicas que no pueden haberse preparado al lanzar la aplicación mediante las funcionesvx_prevcb, vx_prevcbex o vx_prevcbex2.
Cuando se especifica el modo GVX_ABNF (gramática ABNF), la función vx_prevcbdev() compila la gramáticaespecificada en el canal indicado. El resultado de la compilación se almacena en un nuevo fichero de texto conel mismo nombre que la gramática pero con extensión ".trx" (conteniendo el vocabulario de la gramática) yen un nuevo fichero de texto con extensión ".grm" (conteniendo los estados de la gramática). También serealiza la trancripción fonética que se almacena en un nuevo fichero binario con el mismo nombre que el de lagramática pero con extensión ".trc".
Para evitar conflictos entre gramáticas preparadas simultáneamente entre distintos canales, es absolutamenteimprescindible evitar que canales distintos preparen gramáticas con el mismo nombre. En caso de que seprodujera este hecho, los resultados son imprevisibles. Por lo tanto, una estrategia recomendada es la de utilizarnombres de gramática que incluyan también el identificador del canal. De este modo, se imposibilita lacoincidencia de nombres de gramática en canales distintos.
41.2. Funcionamiento asíncrono
Cuando se ejecuta asíncronamente, esta función no genera ningún evento de terminación. Si deben prepararsenuevos vocabularios o gramáticas en entornos asíncronos, puede invocarse la función vx_prevcbdev() seguidade la función vx_setvcb(): el evento de terminación TVX_SETVCB indicará que ambas funciones han finalizadosatisfactoriamente.
41.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 61
filename puntero al nombre del fichero que contiene el vocabulario (cada línea constituye unapalabra del vocabulario formada por una o más palabras) o la gramática ABNF.
mode especifica si debe ejecutarse la función vx_prevcbdev() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_prevcbdev() asíncronamente
EV_SYNC Ejecuta vx_prevcbdev() síncronamente (valor por defecto)
especifica si se trata de una gramática ABNF.
GVX_ABNF gramática ABNF
NOTA: puede combinar las distintas opciones mediante el operador lógico "|"
lpiword en caso de error, este puntero contendrá la línea del fichero en la que se encuentra la primerapalabra incorrecta.
language idioma en el que se preparará el vocabulario, independientemente del idioma por defectoestablecido en el canal. El vocabulario se preparará en la configuración de reconocimientoespecificada mediante la función vx_asr_init o bien mediante la función vx_setparm(parámetro VXCH_DEFASRCFG).
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_FRENCH Francés
LNG_ENGLISH Inglés
LNG_SPANISH_MEXICAN Español mexicano
LNG_SPANISH_ARGENTINIAN Español argentino
LNG_SPANISH_COLOMBIAN Español colombiano
LNG_SPANISH_CHILEAN Español chileno
LNG_SPANISH_VENEZUELAN Español venezolano
41.4. Precauciones
La configuración de reconocimiento activa en el momento de cargar la gramática debe ser la misma que laexistente en el momento de su preparación. En caso contrario, aparecerá el error THE VOCABULARYCONTAINS AN INVALID WORD. Check and correct invalid words.
41.5. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)
Capítulo 2. Descripción de las funciones
62 Referencia de las funciones del Dialogic SDK Verbio Technologies
y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_NOMEM OUT OF MEMORY.
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID. Check the vocabulary filename and path writing permission.
EVX_PARSER ABNF PARSER ERROR. Check the ABNF grammar syntax.
EVX_INVWORD THE VOCABULARY CONTAINS AN INVALID WORD. Check and correctinvalid words.
EVX_SYSTEM SYSTEM ERROR. Check errno.
41.6. Elementos relacionados
vx_prevcb, vx_prevcbex, vx_prevcbex2, vx_chkwrd, vx_setvcb, vx_loadvcb
41.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 63
42. vx_prevcbex
FUNCION int vx_prevcbex(const char *filename, unsigned int mode, int *lpiword)
const char *filename puntero al nombre del fichero que contiene el vocabulario o lagramática ABNF a preparar
unsigned int mode funcionamiento síncrono o asíncrono e indicación de trabajarcon una gramática ABNF
int *lpiword puntero que almacenará la línea errónea del fichero en caso deerror
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
42.1. Descripción
Sin especificar el modo GVX_ABNF (vocabulario convencional), la función vx_prevcbex() realiza latranscripción fonética del contenido del fichero, almacenándola en un nuevo fichero binario con el mismonombre que el del vocabulario pero con extensión ".trc". Esta función es independiente del canal y debeutilizarse una vez para cada vocabulario aunque éste se utilice en distintos canales (sí es necesario invocar denuevo a la función cuando se modifica dinámicamente el contenido del vocabulario).
Cuando se especifica el modo GVX_ABNF (gramática ABNF), la función vx_prevcbex() compila la gramáticaespecificada. El resultado de la compilación se almacena en un nuevo fichero de texto con el mismo nombre quela gramática pero con extensión ".trx" (conteniendo el vocabulario de la gramática) y en un nuevo fichero detexto con extensión ".grm" (conteniendo los estados de la gramática). También se realiza la trancripciónfonética que se almacena en un nuevo fichero binario con el mismo nombre que el de la gramática pero conextensión ".trc". Esta función es independiente del canal y debe utilizarse una vez para cada gramáticaaunque ésta se utilice en distintos canales (sí es necesario invocar de nuevo a la función cuando se modificadinámicamente el contenido de la gramática). En caso que deba preparar gramáticas dinámicas en distintoscanales, debe utilizarse la función vx_prevcbdev para evitar conflictos entre ellos.
El vocabulario se preparará en el idioma y configuración de reconocimiento especificados mediante la funciónvx_asr_init o bien mediante la función vx_setparm (parámetros VXCH_DEFASRCFG y VXCH_DEFASRLNG ).Únicamente el idioma puede especificarse independientemente usando la función vx_prevcbex2.
42.2. Funcionamiento asíncrono
Cuando se ejecuta asíncronamente, esta función no genera ningún evento de terminación. Si deben prepararsenuevos vocabularios o gramáticas en entornos asíncronos, puede invocarse la función vx_prevcbex() seguida dela función vx_setvcb(): el evento de terminación TVX_SETVCB indicará que ambas funciones han finalizadosatisfactoriamente.
42.3. Descripción de los parámetros
filename puntero al nombre del fichero que contiene el vocabulario (cada línea constituye unapalabra del vocabulario formada por una o más palabras) o la gramática ABNF.
mode especifica si debe ejecutarse la función vx_prevcbex() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_prevcbex() asíncronamente
Capítulo 2. Descripción de las funciones
64 Referencia de las funciones del Dialogic SDK Verbio Technologies
EV_SYNC Ejecuta vx_prevcbex() síncronamente (valor por defecto)
especifica si se trata de una gramática ABNF.
GVX_ABNF gramática ABNF
NOTA: puede combinar las distintas opciones mediante el operador lógico "|"
lpiword en caso de error, este puntero contendrá la línea del fichero en la que se encuentra la primerapalabra incorrecta.
42.4. Precauciones
La función vx_prevcbex() preparará el vocabulario en el idioma por defecto que se haya especificado al motor(excepto aquellas palabras que incorporen el identificador del idioma). Si desea especificarse un idioma distinto,deberá utilizarse la función vx_prevcbex2() o bien modificarlo previamente mediante la función vx_setparm.
La configuración de reconocimiento activa en el momento de cargar la gramática debe ser la misma que laexistente en el momento de su preparación. En caso contrario, aparecerá el error THE VOCABULARYCONTAINS AN INVALID WORD. Check and correct invalid words.
42.5. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_NOMEM OUT OF MEMORY.
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID. Check the vocabulary filename and path writing permission.
EVX_PARSER ABNF PARSER ERROR. Check the ABNF grammar syntax.
EVX_INVWORD THE VOCABULARY CONTAINS AN INVALID WORD. Check and correctinvalid words.
EVX_SYSTEM SYSTEM ERROR. Check errno.
42.6. Elementos relacionados
vx_prevcb, vx_prevcbex2, vx_prevcbdev, vx_chkwrd, vx_setvcb, vx_loadvcb
42.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 65
43. vx_prevcbex2
FUNCION int vx_prevcbex2(const char *filename, unsigned int mode, int *lpiword, constchar *language)
const char *filename puntero al nombre del fichero que contiene el vocabulario o lagramática ABNF a preparar
unsigned int mode funcionamiento síncrono o asíncrono e indicación de trabajarcon una gramática ABNF
int *lpiword puntero que almacenará la línea errónea del fichero en caso deerror
const char *language idioma en el que se preparará el vocabulario
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
43.1. Descripción
Sin especificar el modo GVX_ABNF (vocabulario convencional), la función vx_prevcbex2() realiza latranscripción fonética del contenido del fichero, almacenándola en un nuevo fichero binario con el mismonombre que el del vocabulario pero con extensión ".trc". Esta función es independiente del canal y debeutilizarse una vez para cada vocabulario aunque éste se utilice en distintos canales (sí es necesario invocar denuevo a la función cuando se modifica dinámicamente el contenido del vocabulario).
Cuando se especifica el modo GVX_ABNF (gramática ABNF), la función vx_prevcbex2() compila la gramáticaespecificada. El resultado de la compilación se almacena en un nuevo fichero de texto con el mismo nombre quela gramática pero con extensión ".trx" (conteniendo el vocabulario de la gramática) y en un nuevo fichero detexto con extensión ".grm" (conteniendo los estados de la gramática). También se realiza la trancripciónfonética que se almacena en un nuevo fichero binario con el mismo nombre que el de la gramática pero conextensión ".trc". Esta función es independiente del canal y debe utilizarse una vez para cada gramáticaaunque ésta se utilice en distintos canales (sí es necesario invocar de nuevo a la función cuando se modificadinámicamente el contenido de la gramática). En caso que deba preparar gramáticas dinámicas en distintoscanales, debe utilizarse la función vx_prevcbdev para evitar conflictos entre ellos.
43.2. Funcionamiento asíncrono
Cuando se ejecuta asíncronamente, esta función no genera ningún evento de terminación. Si deben prepararsenuevos vocabularios o gramáticas en entornos asíncronos, puede invocarse la función vx_prevcbex2() seguidade la función vx_setvcb(): el evento de terminación TVX_SETVCB indicará que ambas funciones han finalizadosatisfactoriamente.
43.3. Descripción de los parámetros
filename puntero al nombre del fichero que contiene el vocabulario (cada línea constituye unapalabra del vocabulario formada por una o más palabras) o la gramática ABNF.
mode especifica si debe ejecutarse la función vx_prevcbex2() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_prevcbex2() asíncronamente
Capítulo 2. Descripción de las funciones
66 Referencia de las funciones del Dialogic SDK Verbio Technologies
EV_SYNC Ejecuta vx_prevcbex2() síncronamente (valor por defecto)
especifica si se trata de una gramática ABNF.
GVX_ABNF gramática ABNF
NOTA: puede combinar las distintas opciones mediante el operador lógico "|"
lpiword en caso de error, este puntero contendrá la línea del fichero en la que se encuentra la primerapalabra incorrecta.
language idioma en el que se preparará el vocabulario, independientemente del idioma por defectoestablecido en el canal. El vocabulario se preparará en la configuración de reconocimientoespecificada mediante la función vx_asr_init o bien mediante la función vx_setparm(parámetro VXCH_DEFASRCFG).
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_FRENCH Francés
LNG_ENGLISH Inglés
LNG_SPANISH_MEXICAN Español mexicano
LNG_SPANISH_ARGENTINIAN Español argentino
LNG_SPANISH_COLOMBIAN Español colombiano
LNG_SPANISH_CHILEAN Español chileno
LNG_SPANISH_VENEZUELAN Español venezolano
43.4. Precauciones
La configuración de reconocimiento activa en el momento de cargar la gramática debe ser la misma que laexistente en el momento de su preparación. En caso contrario, aparecerá el error THE VOCABULARYCONTAINS AN INVALID WORD. Check and correct invalid words.
Esta función está indicada para permitir preparar vocabularios y gramáticas en distintos idiomas de laconfiguración de reconocimiento activa en el motor. En caso de que se desee utilizar un idioma no contenido enla configuración activa, es necesario activarla primero mediante la función vx_setparm (parámetroVXCH_DEFASRCFG). Por ejemplo, en caso de que esté cargada la configuración multilingüeCFG_SPANISH_CATALAN, pueden prepararse gramáticas en ambos idiomas utilizando esta función sinnecesidad de cambiar la configuración ni de idioma por defecto mediante la función vx_setparm (parámetroVXCH_DEFASRLANG).
43.5. Errores
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 67
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_NOMEM OUT OF MEMORY.
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID. Check the vocabulary filename and path writing permission.
EVX_PARSER ABNF PARSER ERROR. Check the ABNF grammar syntax.
EVX_INVWORD THE VOCABULARY CONTAINS AN INVALID WORD. Check and correctinvalid words.
EVX_SYSTEM SYSTEM ERROR. Check errno.
43.6. Elementos relacionados
vx_prevcb, vx_prevcbex, vx_prevcbdev, vx_chkwrd, vx_setvcb, vx_loadvcb
43.7. Códigos de ejemploConsulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
68 Referencia de las funciones del Dialogic SDK Verbio Technologies
44. vx_reccfg_release
FUNCION int vx_reccfg_release(int chdev, const char * cfg)
int chdev descriptor de un canal abierto de Dialogic
const char* cfg configuración de la que se desea liberar una licencia o 0 paralicencia de motor ASR
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
44.1. Descripción
La función vx_reccfg_release() libera un recurso (licencia) de reconocimiento del habla reservado mediante lafunción vx_reccfg_wait() en el canal especificado. De este modo, otras peticiones de licencias pendientespodrán ser atendidas por el recurso liberado.
44.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
cfg Especifica el tipo de licencia de reconocimiento que debe liberarse. Los posibles valores son:
NULL o 0 Libera una licencia de motor dereconocimiento
CFG_SPANISH Español castellano
CFG_SPANISH_CATALAN Español castellano + catalán
CFG_SPANISH_BASQUE Español castellano + euskera
CFG_SPANISH_GALICIAN Español castellano + gallego
CFG_SPANISH_CATALAN_BASQUE_GALICIAN Español castellano + catalán +euskera + gallego
CFG_PORTUGUESE Portugués
CFG_PORTUGUESE_BRAZILIAN Portugués brasileño
CFG_SPANISH_MEXICAN Español mexicano
CFG_SPANISH_ARGENTINIAN Español argentino
CFG_SPANISH_CHILEAN Español chileno
CFG_SPANISH_VENEZUELAN Español venezolano
CFG_SPANISH_COLOMBIAN Español colombiano
CFG_FRENCH Francés
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 69
CFG_ENGLISH US English
44.3. Elementos relacionados
vx_reccfg_wait, vx_playstr_release, vx_playstr_wait
44.4. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
70 Referencia de las funciones del Dialogic SDK Verbio Technologies
45. vx_reccfg_wait
FUNCION int vx_reccfg_wait(int chdev, int ms, const char * cfg)
int chdev descriptor de un canal abierto de Dialogic
int ms tiempo máximo de espera para obtener un recurso (enmilisegundos)
const char* cfg configuración de la que se desea reservar una licencia o 0 paralicencia de motor ASR
RETORNA 0 si el resultado es satisfactorio
-1 en caso de no poder obtener una licencia en el tiempo especificado
INCLUDES vxxxlib.h
MODO síncrono
45.1. Descripción
La función vx_reccfg_wait() es muy útil para controlar que, en el momento de requerir una licencia dereconocimiento (ya sea de motor o de configuración), se dispondrá de una, evitándose de este modo el error enlas funciones invocadas. En la Guía del Usuario se detallan los momentos en los que se consume unalicencia aunque, a grandes rasgos, podría resumirse del siguiente modo:
1. Las licencias de motor se consumen durante el procesado de las muestras con la finalidad de obtener lapalabra o palabras del vocabulario reconocidas. Por norma general, el intervalo de uso de este tipo de licenciases pequeño.
2. Las licencias de configuración se empiezan a consumir desde que se establece un vocabulario en un canal o semanipula algún parámetro relacionado con el reconocimiento en un canal (NBEST, ACTIVE_NBEST,KLENGTH, GRMWEIGHT, GRMCONSTANT, RECMODE, DEACTWORD y ACTWORD ) hasta que secambia a otra configuración o se libera la licencia con la función miembro vx_reccfg_release(). Lógicamente, eltiempo de uso de estas licencias es superior al de las licencias de motor (el vocabulario debe haberse establecidocon anterioridad y no puede liberarse hasta finalizado el reconocimiento), llegando incluso (según laprogramación) a estar ocupadas durante gran parte de la ejecución.
En aquellos entornos que dispongan de tantas licencias como líneas atendidas, no es necesario tomar ningún tipode precaución, de modo que el uso de estas funciones no aporta ninguna ventaja. Sin embargo, para evitarerrores de funcionamiento debidos a falta de licencia en momentos puntuales en aquellos entornos que atiendanmás líneas que licencias disponen, sí es muy aconsejable tener la precaución de reservar con antelación unalicencia de motor y/o de configuración. De este modo, si no se obtiene la licencia en el momento deseado, sepodrá mantener al usuario a la espera de forma controlada (por ejemplo, haciendo sonar música ambiental hastaque se disponga del recurso).
La función vx_reccfg_wait() reserva un recurso (licencia) de reconocimiento del habla para el canalespecificado hasta que se libere mediante la función vx_reccfg_release(). La función espera un máximo de msmilisegundos la disponibilidad de un recurso, transcurridos los cuales devuelve un error.
45.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
ms tiempo máximo de espera, en milisegundos, para obtener un recurso (licencia) de reconocimientodel habla para el canal especificado.
cfg Especifica el tipo de licencia de reconocimiento que debe reservarse. Los posibles valores son:
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 71
NULL o 0 Reserva una licencia de motor dereconocimiento
CFG_SPANISH Español castellano
CFG_SPANISH_CATALAN Español castellano + catalán
CFG_SPANISH_BASQUE Español castellano + euskera
CFG_SPANISH_GALICIAN Español castellano + gallego
CFG_SPANISH_CATALAN_BASQUE_GALICIAN Español castellano + catalán +euskera + gallego
CFG_PORTUGUESE Portugués
CFG_PORTUGUESE_BRAZILIAN Portugués brasileño
CFG_SPANISH_MEXICAN Español mexicano
CFG_SPANISH_ARGENTINIAN Español argentino
CFG_SPANISH_CHILEAN Español chileno
CFG_SPANISH_VENEZUELAN Español venezolano
CFG_SPANISH_COLOMBIAN Español colombiano
CFG_FRENCH Francés
CFG_ENGLISH US English
45.3. Precauciones
A pesar de que no es necesario este control de acceso a las licencias, su práctica es altamente recomendable enaquellos entornos en los que se sobreexplotan las licencias de reconocimiento para evitar errores dereconocimiento indeseados debidos a la falta de licencias disponibles en un momento puntual.
Una vez finalizada la petición de reconocimiento, debe liberarse inmediatamente la licencia mediante la funciónvx_reccfg_release para permitir que peticiones que están esperando en cola puedan ser procesadas rápidamente.
Atención
Cuando se reserva licencia para una configuración, automáticamente se descarga la configuraciónanterior activa hasta ese momento.
45.4. Elementos relacionados
vx_reccfg_release, vx_playstr_wait, vx_playstr_release
45.5. Códigos de ejemploConsulte el ejemplo anexo.
Capítulo 2. Descripción de las funciones
72 Referencia de las funciones del Dialogic SDK Verbio Technologies
46. vx_recind
FUNCION int vx_recind(int chdev, int maxind, int *index, float *score, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
int maxind número máximo de palabras del vocabularioconectadas o de palabras de la gramática
int *index vector de enteros en el que se recibirán los índices de laspalabras reconocidas
float *score vector de float en el que se recibirán los índices deconfianza de las palabras reconocidas
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 para indicar que se ha iniciado satisfactoriamente (Asíncrono)
>=0 para indicar la cantidad de palabras reconocidas (Síncrono)
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
46.1. Descripción
La función vx_recind() debe ser llamada al finalizar las funciones vx_recstr() o vx_recstr_open() para obtenerlos índices y niveles de confianza de las palabras reconocidas.
Si el número de palabras reconocidas es cero, index[0] contiene uno de los siguientes índices especiales:
IND_NOVOICE No se ha detectado voz.
IND_NOWORD No se ha reconocido ninguna palabra del vocabulario ni de la gramática.
IND_EARLY_START No se ha detectado silencio inicial.
46.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_RECIND en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
La cantidad de palabras reconocidas puede obtenerse mediante la función ATVX_NIND().
46.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
maxind especifica el número máximo de palabras del vocabulario conectadas o palabras de lagramática que pueden reconocerse. En reconocimiento de palabras aisladas, el valor de estaparámetro debe fijarse a 1.
index puntero a un vector de enteros que recibirá los índices de las palabras reconocidas. El tamaño deeste vector debe ser mayor o igual a maxind.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 73
score puntero a un vector de float que recibirá los niveles de confianza de las palabras reconocidas.El nivel de confianza de cada índice proporciona una medida de fiabilidad del reconocimiento,que puede ser utilizada para rechazar o pedir confirmación de las palabras reconocidas. Eltamaño de este vector debe ser mayor o igual a maxind.
mode especifica si debe ejecutarse la función vx_recind() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_recind() asíncronamente
EV_SYNC Ejecuta vx_recind() síncronamente (valor por defecto)
46.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_NORECSTR NO RECOGNITION. Use vx_recstr() to start recognition.
46.5. Elementos relacionados
vx_recstr, vx_recstr_open, vx_nbest
46.6. Códigos de ejemploConsulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
74 Referencia de las funciones del Dialogic SDK Verbio Technologies
47. vx_recstr
FUNCION int vx_recstr(int chdev, DV_TPT *tptp, VX_RSP *rspp, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
DV_TPT *tptp puntero a una estructura del tipo TerminationParameter Table
VX_RSP *rspp puntero a una estructura del tipo Recognition StringParameter
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
47.1. Descripción
La función vx_recstr() inicia el reconocimiento de la señal de voz procedente del canal especificado.Adicionalmente a las condiciones de terminación de la función de grabación dx_rec(), la función vx_recstr()acepta condiciones de terminación adicionales especificadas mediante la estructura VX_RSP pasada comoparámetro.
Una vez invocada la función vx_recstr(), el proceso de reconocimiento continua hasta que se invoque a lafunción dx_stopch() o se cumpla alguna de las condiciones de terminación establecidas mediante las estructurasDV_TPT o VX_RSP.
Opcionalmente, la función vx_recstr() puede grabar la señal de voz de entrada. El formato de la grabación esPCM (ley A o ley Mu), con una frecuencia de muestreo de 8KHz y sin control automático de ganancia. Eldescriptor del fichero en el que se almacenará la grabación se especifica en la estructura VX_RSP (descrita en elCapítulo 3. Estructuras de datos y parámetros).
47.2. Funcionamiento asíncrono
Para ejecutar esta función de forma asíncrona, debe especificarse EV_ASYNC en el parámetro mode. Una vezinvocada en modo asíncrono, la función retorna 0 para indicar que se ha iniciado satisfactoriamente y generaráel evento TDX_RECORD al finalizar.
Una vez finaliza la función, el motivo de la finalización puede obtenerse mediante la funciónATDX_TERMMSK().
NOTA: El evento TDX_RECORD puede recibirse a pesar de no haberse enviado todas las muestras alreconocedor (debido a la recepción de un tono DTMF o al colgado de la línea por parte del usuario). Por lotanto, una vez recibido el evento, debe invocarse la función vx_termrecstr() para indicar al servidor dereconocimiento que no se le enviarán más muestras y que, por lo tanto, ya pueden liberarse todos los recursosasignados a la función vx_recstr().
47.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
tptp puntero a una estructura de tipo Termination Parameter Table (DV_TPT) en la que seespecifican las condiciones de terminación del proceso de reconocimiento. Las condiciones
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 75
válidas que pueden especificarse son las siguientes:
DX_DIGTYPE Digit termination for user defined tone
DX_MAXDTMF Maximum number of digits received
DX_MAXSIL Maximum silence
DX_MAXNOSIL Maximum non-silence
DX_LCOFF Loop current off
DX_IDDTIME Inter-digit delay
DX_MAXTIME Function time
DX_DIGMASK Digit mask termination
DX_PMOFF Pattern match silence off
DX_PMON Pattern match silence on
DX_TONE Tone-off or Tone-on detection
Consulte la descripción de la función dx_rec() en la documentación de Dialogic para obtenermás información acerca de esta estructura.
NOTA: Adicionalmente a las condiciones de terminación definidas mediante la estructuraDV_TPT, la función vx_recstr también termina al cumplirse alguna de las condicionesestablecidas en la estructura VX_RSP o al invocarse a la función dx_stopch(). En ambos casos,el motivo de la finalización obtenido mediante la función ATDX_TERMMSK() seráTM_USRSTOP.
rspp puntero a una estructura de tipo String Parameter Structure (VX_RSP) en la que seespecifican condiciones adicionales de terminación del proceso de reconocimiento. Si el valor deeste parámetro es NULL se utilizarán los valores por defecto de los campos de la estructura. Paramás información acerca de esta estructura, consulte el Capítulo 3. Estructuras de datos yparámetros.
mode especifica el modo de funcionamiento.
EV_ASYNC Ejecuta vx_recstr() asíncronamente
EV_SYNC Ejecuta vx_recstr() síncronamente (valor por defecto)
RM_TONE Emite un tono antes de iniciar el reconocimiento. Si no se selecciona estemodo, no se transmite ningún tono (valor por defecto).
RM_ALAW El formato de grabación se realizará en ley A. Si no se especifica, se usará elvalor por defecto (ley Mu).
NOTA: puede combinar las distintas opciones mediante el operador lógico "|"
NOTAS:
Primera La función vx_recstr() modifica el valor de la velocidad de grabación a 8 KHz.Esta velocidad será la vigente en el siguiente proceso de grabación, a menosque se especifique lo contrario modificando el parámetro DXCH_RECRDRATEmediante la función dx_setparm().
Segunda La función vx_recstr() se ejecutará en modo síncrono si no se especifica
Capítulo 2. Descripción de las funciones
76 Referencia de las funciones del Dialogic SDK Verbio Technologies
EV_ASYNC en el parámetro mode o si se especifica EV_SYNC (valor pordefecto).
Tercera Algunas tarjetas de Dialogic permiten trabajar en ley A o en ley Mu(consulte la documentación del fabricante). Por defecto, todas ellas trabajan enley Mu y volverán a trabajar automáticamente en ley Mu después de cadagrabación.
47.4. Precauciones
La función vx_setvcb() o vx_loadvcb() debe ser llamada previamente a la función vx_recstr() para establecerel vocabulario o gramática activo.
La estructura VX_RSP utilizada como argumento de la función vx_recstr() debe ser inicializada a sus valorespor defecto mediante la función vx_clrrsp() antes de modificar los valores de sus campos.
47.5. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá alguno de los siguientes motivos de error:
EVX_SRERROR DIALOGIC SRL ERROR. Check ATDV_LASTERR() and ATDV_ERRMSGP().
EVX_DXERROR DIALOGIC VOICE ERROR. Check ATDV_LASTERR() andATDV_ERRMSGP().
EVX_SYSTEM SYSTEM ERROR. Check errno.
EVX_NOSETVCB NO ACTIVE VOCABULARY. Use vx_setvcb() to set the active vocabulary.
47.6. Elementos relacionados
vx_termrecstr, dx_rec (consulte la documentación de Dialogic)
47.7. Códigos de ejemplo
Consulte el ejemplo síncrono.
Consulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 77
48. vx_recstr_open
FUNCION int vx_recstr_open(int chdev, VX_RSP *rspp, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
VX_RSP *rspp puntero a una estructura del tipo Recognition StringParameter
unsigned int mode formato de las muestras (Ley A o Ley Mu)
RETORNA != -1 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
48.1. Descripción
La función vx_recstr_open() inicializa el servidor de reconocimiento en el canal especificado, de modo queesté preparado para empezar a recibir las muestras de audio mediante la función vx_recstr_write().
48.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
rspp puntero a una estructura de tipo String Parameter Structure (VX_RSP) en la que seespecifican condiciones adicionales de terminación del proceso de reconocimiento. Si el valor deeste parámetro es NULL se utilizarán los valores por defecto de los campos de la estructura. Paramás información acerca de esta estructura, consulte Capítulo 3. Estructuras de datos y parámetros.
mode especifica el formato de las muestras de audio pasadas al reconocedor.
MC_ALAW formato PCM (Ley A) a 8 KHz.
MC_MULAW formato PCM (Ley Mu) a 8 KHz.
48.3. Elementos relacionados
vx_recstr_write
48.4. Códigos de ejemploConsulte el ejemplo con barge-in.
Capítulo 2. Descripción de las funciones
78 Referencia de las funciones del Dialogic SDK Verbio Technologies
49. vx_recstr_release
FUNCION int vx_recstr_release(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
49.1. Descripción
La función vx_recstr_release() libera un recurso (licencia) de reconocimiento del habla reservado mediante lafunción vx_recstr_wait() en el canal especificado.
Esta función se incluye por compatibilidad con versiones anteriores, aunque debería caer en desuso. Para nuevosdesarrollos es aconsejable utilizar la función vx_reccfg_release.
49.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
49.3. Elementos relacionados
vx_recstr_wait, vx_reccfg_wait, vx_reccfg_release, vx_getusedasrlic, vx_playstr_release, vx_playstr_wait
49.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 79
50. vx_recstr_wait
FUNCION int vx_recstr_wait(int chdev, int ms)
int chdev descriptor de un canal abierto de Dialogic
int ms tiempo máximo de espera para obtener un recurso (en milisegundos)
RETORNA 0 si el resultado es satisfactorio
-1 en caso de no poder obtener un recurso en el tiempo especificado
INCLUDES vxxxlib.h
MODO síncrono
50.1. Descripción
La función vx_recstr_wait() reserva un recurso (licencia) de reconocimiento del habla para el canalespecificado hasta que se libere mediante la función vx_recstr_release(). La función espera un máximo de msmilisegundos la disponibilidad de un recurso, transcurridos los cuales devuelve un error.
El uso de esta función es aconsejable para gestionar el uso de los recursos (licencias) disponibles. En entornosen los que nunca se producirán más peticiones simultáneas de reconocimiento que licencias disponibles no esnecesario su uso.
Esta función se incluye por compatibilidad con versiones anteriores, aunque debería caer en desuso. Para nuevosdesarrollos es aconsejable utilizar la función vx_reccfg_wait.
50.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
ms tiempo máximo de espera, en milisegundos, para obtener un recurso (licencia) de reconocimientodel habla para el canal especificado.
50.3. Elementos relacionados
vx_recstr_release, vx_reccfg_wait, vx_reccfg_release, vx_getusedasrlic, vx_playstr_wait, vx_playstr_release
50.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
80 Referencia de las funciones del Dialogic SDK Verbio Technologies
51. vx_recstr_write
FUNCION int vx_recstr_write(int chdev, const void *buffer, unsigned int n)
int chdev descriptor de un canal abierto de Dialogic
const void *buffer vector en el que se encuentran las muestras de audio que debeprocesar el reconocedor
unsigned int n tamaño del vector de muestras (en bytes)
RETORNA número de muestras procesadas por el motor de reconocimiento
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
51.1. Descripción
La función vx_recstr_write() envía las muestras recibidas hacia el servidor de reconocimiento.
La función retorna un número igual al número de bytes contenidos en el vector de muestras para indicar quetodavía no ha finalizado el proceso de reconocimiento y que, por lo tanto, es necesario seguir invocando a estafunción con nuevas muestras de audio.
La función retorna un número de muestras menor que el tamaño del vector de muestras para indicar que elservidor de reconocimiento ya no acepta más muestras debido a que se ha cumplido alguna de las condicionesde terminación especificadas en la función vx_recstr_open.
51.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
buffer vector en el que se encuentran las muestras de audio que debe procesar el reconocedor.
n tamaño del vector de muestras.
51.3. Elementos relacionados
vx_recstr_open
51.4. Códigos de ejemploConsulte el ejemplo con barge-in.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 81
52. vx_RegisterVVICallback
FUNCION int vx_RegisterVVICallback(int chdev, int (*function)(const char *,unsigned long, size_t))
int chdev descriptor de un canal abierto de Dialogic
int(*function)(constchar *, unsignedlong, size_t)
función de callback que será invocada cada vez que elmotor de lenguaje estadístico disponga de un nuevo resultado.
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
52.1. Descripción
La función vx_RegisterVVICallback() especifica una función de callback que será la encargada de recibirlos resultados que el motor de lenguaje natural de Verbio vaya generando durante el análisis de las muestras deaudio. Esta función es invocada automáticamente cada vez que el motor de reconocimiento dispone de nuevosresultados.
52.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante lafunción dx_open().
int (*function)(constchar *, unsigned long,size_t)
Función de callback encargada de recibir los resultados de reconocimientogenerados por el motor de reconocimiento estadístico.El resultado se entregará enel primer parámetro (const char* en modo texto. El índice de confianza delresultado se entregará en el segundo parámetro. El identificador del canal desde elque se ha definido la función de callback se entregará en el tercer parámetro.
52.3. Códigos de ejemploConsulte el ejemplo del Library SDK.
Capítulo 2. Descripción de las funciones
82 Referencia de las funciones del Dialogic SDK Verbio Technologies
53. vx_regsrvclose
FUNCION int vx_regsrvclose(VX_SRVCLOSE function)
VX_SRVCLOSEfunction
función de callback que atenderá el evento de desconexión
RETORNAINCLUDES vxxxlib.h
MODO síncrono
53.1. Descripción
La función vx_regsrvclose() permite especificar una función (opcional) que será invocada en cuanto se detecteuna desconexión entre el cliente y el servidor de síntesis y/o reconocimiento.
53.2. Descripción de los parámetros
function especifica la función de callback que se invocará en cuanto se produzca una desconexiónentre el cliente y el servidor. La definición de la función es del tipo:
typedef void (*VX_SRVCLOSE) (const char *server)
donde recibirá como parámetro el nombre o dirección IP del servidor con el que se haperdido la comunicación.
53.3. Elementos relacionados
vx_srvclose
53.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 83
54. vx_SapiClose
FUNCION int vx_SapiClose(int chdev, HSAPI pmode)
int chdev descriptor de un canal abierto de Dialogic
HSAPI pmode descriptor de un motor de síntesis compatible SAPI
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES speech.h
vxxxlib.h
MODO síncrono
54.1. Descripción
La función vx_SapiClose() cierra un motor de síntesis compatible con SAPI previamente abierto mediante lafunción vx_SapiOpen().
54.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
pmode descriptor de un motor de síntesis compatible SAPI previamente abierto mediante la funciónvx_SapiOpen().
54.3. Elementos relacionados
vx_SapiOpen, vx_SapiSelect
54.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
84 Referencia de las funciones del Dialogic SDK Verbio Technologies
55. vx_SapiOpen
FUNCION int vx_SapiOpen(int chdev, TTSMODEINO *TTSModeInfo, HSAPI *pmode,unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
TTSMODEINO*TTSModeInfo
puntero a una estructura del tipo Text-to-SpeechInformation
HSAPI *pmode puntero que recibirá el descriptor del motor de síntesis SAPIabierto
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES speech.h
vxxxlib.h
MODO síncrono/asíncrono
55.1. Descripción
La función vx_SapiOpen() abre el motor de síntesis compatible SAPI que mejor se adapta a los requisitosespecificados mediante la estructura TTSMODEINFO en caso de existir.
Una vez finalizada satisfactoriamente la función vx_SapiOpen(), el motor de síntesis abierto puede serseleccionado mediante la función vx_SapiSelect(), especificando el descriptor obtenido. El motor de síntesisdebe ser cerrado mediante la función vx_SapiClose().
55.2. Funcionamiento asíncrono
Para ejecutar esta función de forma asíncrona, debe especificarse EV_ASYNC en el parámetro mode. Una vezinvocada en modo asíncrono, la función retorna 0 para indicar que se ha iniciado satisfactoriamente y generaráel evento TVX_SELECT al finalizar.
55.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
TTSModeInfo puntero a una estructura de tipo Text-to-Speech Mode Information(TTSMODEINFO), que proporciona información detallada acerca del motor desíntesis que desea utilizarse. Si este parámetro es NULL, se seleccionará el motor desíntesis por defecto.
En http://www.microsoft.com/speech podrá obtener más información acerca de estaestructura y del estándar SAPI (Speech API).
pmode puntero que contendrá el descriptor del motor de síntesis seleccionado al término dela función.
mode especifica si debe ejecutarse la función vx_SapiOpen() en modo síncrono oasíncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 85
EV_ASYNC Ejecuta vx_SapiOpen() asíncronamente
EV_SYNC Ejecuta vx_SapiOpen() síncronamente (valor por defecto)
55.4. Errores
Si no se encuentra ningún motor de síntesis que se adapte mínimamente a las especificaciones contenidas en laestructura TTSMODEINFO, la función retorna -1 para indicar que se ha producido un error.
55.5. Elementos relacionados
vx_SapiOpenEx, vx_SapiSelect, vx_SapiClose
55.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
86 Referencia de las funciones del Dialogic SDK Verbio Technologies
56. vx_SapiOpenEx
FUNCION int vx_SapiOpenEx(int chdev, PMODEATTRIBUTES ttsattributes, HSAPI*pmode, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
PMODEATTRIBUTESttsattributes
puntero a una estructura del tipo MODEATTRIBUTES
HSAPI *pmode puntero que recibirá el descriptor del motor de síntesis SAPIabierto
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES speech.h
vxxxlib.h
MODO síncrono/asíncrono
56.1. Descripción
La función vx_SapiOpenEx() abre el motor de síntesis compatible SAPI que mejor se adapta a los requisitosespecificados mediante la estructura MODEATTRIBUTES en caso de existir.
Una vez finalizada satisfactoriamente la función vx_SapiOpenEx(), el motor de síntesis abierto puede serseleccionado mediante la función vx_SapiSelect(), especificando el descriptor obtenido. El motor de síntesisdebe ser cerrado mediante la función vx_SapiClose().
56.2. Funcionamiento asíncrono
Para ejecutar esta función de forma asíncrona, debe especificarse EV_ASYNC en el parámetro mode. Una vezinvocada en modo asíncrono, la función retorna 0 para indicar que se ha iniciado satisfactoriamente y generaráel evento TVX_SELECT al finalizar.
56.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante lafunción dx_open().
ttsattributes puntero a una estructura de tipo MODEATTRIBUTES que proporcionainformación detallada acerca del motor de síntesis que desea utilizarse. Si esteparámetro es NULL, se seleccionará el motor de síntesis por defecto.
En el Capítulo 3. Estructuras de datos y parámetros podrá obtener másinformación acerca de esta estructura.
pmode puntero que contendrá el descriptor del motor de síntesis seleccionado al términode la función.
mode especifica si debe ejecutarse la función vx_SapiOpenEx() en modo síncrono oasíncrono.
EV_ASYNC Ejecuta vx_SapiOpenEx() asíncronamente
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 87
EV_SYNC Ejecuta vx_SapiOpenEx() síncronamente (valor por defecto)
56.4. Errores
Si no se encuentra ningún motor de síntesis que se adapte mínimamente a las especificaciones contenidas en laestructura MODEATTRIBUTES, la función retorna -1 para indicar que se ha producido un error.
56.5. Elementos relacionados
vx_SapiOpen, vx_SapiSelect, vx_SapiClose
56.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
88 Referencia de las funciones del Dialogic SDK Verbio Technologies
57. vx_SapiSelect
FUNCION int vx_SapiSelect(int chdev, HSAPI pmode)
int chdev descriptor de un canal abierto de Dialogic
HSAPI pmode descriptor de un motor de síntesis compatible SAPI
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES speech.h
vxxxlib.h
MODO síncrono
57.1. Descripción
La función vx_SapiSelect() selecciona el motor de síntesis compatible SAPI abierto previamente mediante lafunción vx_SapiOpen().
Una vez invocada satisfactoriamente la función vx_SapiSelect(), el motor de síntesis compatible SAPIseleccionado estará activo en el canal hasta la siguiente llamada a esta función o a la función vx_SapiClose().
57.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
pmode descriptor de un motor de síntesis compatible SAPI previamente abierto mediante la funciónvx_SapiOpen().
57.3. Errores
Si no existe un motor de síntesis asociado con el descriptor especificado, la función retorna -1 para indicar quese ha producido un error.
57.4. Elementos relacionados
vx_SapiOpen, vx_SapiClose
57.5. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 89
58. vx_SetAbbreviations
FUNCION int vx_SetAbbreviations(int chdev, const char *mcLang, const char *filename)
int chdev descriptor de un canal abierto de Dialogic
const char *mcLang especifica el idioma asociado al diccionario personal deabreviaturas
const char *filename puntero al nombre del fichero de texto que contiene lasabreviaturas personalizadas
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
58.1. Descripción
La función vx_SetAbbreviations() establece un conjunto de abreviaturas personalizadas para ser utilizadas porel servidor de síntesis en el canal especificado, pudiendo ser modificadas dinámicamente.
El diccionario de abreviaturas personalizadas se añade al diccionario global de abreviaturas usado por elservidor de síntesis para el idioma especificado.
Para una mayor información, consulte el capítulo de síntesis del habla en Verbio Software Reference:Guía del Usuario.
58.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
mclang especifica el idioma asociado con el vocabulario de abreviaturas personalizadas.
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_FRENCH Francés
LNG_ENGLISH Inglés
LNG_SPANISH_MEXICAN Español mexicano
LNG_SPANISH_ARGENTINIAN Español argentino
LNG_SPANISH_COLOMBIAN Español colombiano
Capítulo 2. Descripción de las funciones
90 Referencia de las funciones del Dialogic SDK Verbio Technologies
LNG_SPANISH_CHILEAN Español chileno
LNG_SPANISH_VENEZUELAN Español venezolano
filename puntero al nombre del fichero de texto que contiene las abreviaturas personalizadas para elidioma seleccionado.
58.3. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá el motivo del error.
58.4. Elementos relacionados
vx_SetDictionary
58.5. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 91
59. vx_setcd
FUNCION int vx_setcd(int chdev, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
59.1. Descripción
La función vx_setcd() establece el vocabulario de dígitos conectados en el canal especificado.
59.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
59.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
mode especifica si debe ejecutarse la función vx_setcd() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_setcd() asíncronamente
EV_SYNC Ejecuta vx_setcd() síncronamente (valor por defecto)
59.4. Precauciones
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento.
59.5. Errores
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY
EVX_SYSTEM SYSTEM ERROR. Check errno.
59.6. Elementos relacionados
Capítulo 2. Descripción de las funciones
92 Referencia de las funciones del Dialogic SDK Verbio Technologies
vx_setvcb, vx_loadvcb, vx_activatevcb, vx_deactivatevcb, vx_unloadvcb, ATVX_IVCB
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 93
60. vx_SetDictionary
FUNCION int vx_SetDictionary(int chdev, const char *mcLang, const char *filename)
int chdev descriptor de un canal abierto de Dialogic
const char *mcLang especifica el idioma asociado al diccionario personal
const char *filename puntero al nombre del fichero de texto que contiene eldiccionario personalizado
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
60.1. Descripción
La función vx_SetDictionary() establece un diccionario personalizado para ser utilizado por el servidor desíntesis en el canal especificado, pudiendo ser modificado dinámicamente.
El diccionario personalizado se añade al diccionario global usado por el servidor de síntesis para el idiomaespecificado.
Para una mayor información, consulte el capítulo de síntesis del habla en Verbio Software Reference:Guía del Usuario.
60.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
mclang especifica el idioma al que afectará el diccionario personalizado.
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_FRENCH Francés
LNG_ENGLISH Inglés
LNG_SPANISH_MEXICAN Español mexicano
LNG_SPANISH_ARGENTINIAN Español argentino
LNG_SPANISH_COLOMBIAN Español colombiano
Capítulo 2. Descripción de las funciones
94 Referencia de las funciones del Dialogic SDK Verbio Technologies
LNG_SPANISH_CHILEAN Español chileno
LNG_SPANISH_VENEZUELAN Español venezolano
filename puntero al nombre del fichero de texto que contiene el diccionario personalizado para elidioma seleccionado.
60.3. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá el motivo del error.
60.4. Elementos relacionados
vx_SetAbbreviations
60.5. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 95
61. vx_setparm
FUNCION int vx_setparm(int dev, unsigned long parm, void *valuep)
int dev descriptor de un canal abierto de Dialogic o -1 paraparámetros globales de VERBIO (independientes del canal)
unsigned long parm parámetro del que se desea establecer el valor
void *valuep puntero a la variable en la que se almacena el valor delparámetro a modificar
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
61.1. Descripción
La función vx_setparm() permite modificar los valores de los parámetros globales o dependientes del canal deVERBIO. Esta función puede modificar el valor de un único parámetro en cada invocación.
61.2. Descripción de los parámetros
dev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().Use -1 para establecer el valor de parámetros globales de VERBIO (independientes del canal).
parm especifica el identificador del parámetro del que se desea modificar el valor por el de la variableapuntada por valuep. Los identificadores de los parámetros pueden consultarse en Capítulo 3.Estructuras de datos y parámetros.
valuep puntero a la variable en la que se almacena el valor del parámetro a modificar.
61.3. Elementos relacionados
vx_getparm, dx_getparm (consulte la documentación de Dialogic)
61.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
96 Referencia de las funciones del Dialogic SDK Verbio Technologies
62. vx_setvcb
FUNCION int vx_setvcb(int chdev, const char *filename, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
const char *filename puntero al nombre del fichero que contiene el vocabulario o lagramática ABNF/DTMF o bien NULL para desactivar todos losvocabularios
unsigned int mode funcionamiento síncrono o asíncrono e indicación de trabajarcon una gramática ABNF o DTMF
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
62.1. Descripción
La función vx_setvcb() establece el vocabulario o la gramática ABNF o DTMF especificado en el canalespecificado.
62.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
62.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
filename puntero al nombre del fichero que contiene el vocabulario (cada línea constituye unapalabra del vocabulario formada por una o más palabras) o la gramáticaABNF/DTMF.
NULL para desactivar todos los vocabularios y gramáticas cargados hasta ese momento ypara liberar la licencia de idioma asociada al canal.
mode indica el tipo de vocabulario o gramática y si debe ejecutarse la función vx_setvcb() enmodo síncrono o asíncrono.
GVX_ISOLATED Palabras aisladas. El reconocedor espera reconocer una únicapalabra del vocabulario de este vocabulario.
GVX_CONNECTED Palabras conectadas (valor por defecto). El reconocedorespera reconocer una o más palabras delvocabulario de este vocabulario.
GVX_ABNF gramática ABNF. El reconocedor espera reconocer una o máspalabras de la gramática.
GVX_DTMF gramática DTMF. El reconocedor espera recibir uno o mástonos DTMF.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 97
EV_ASYNC Ejecuta vx_setvcb() asíncronamente
EV_SYNC Ejecuta vx_setvcb() síncronamente (valor por defecto)
NOTA: puede combinar las distintas opciones mediante el operador lógico "|"
62.4. Precauciones
Sin la opción GVX_ABNF habilitada, la función vx_setvcb() requiere el fichero de definiciones y el fichero detranscripciones generados mediante la función vx_prevcb() o vx_prevcbex() o vx_prevcbex2() ovx_prevcbdev(). Si estos ficheros existen y el fichero de vocabulario correspondiente no ha sido modificadodesde que se llamó a la función vx_prevcb() (o vx_prevcbex() o vx_prevcbex2() o vx_prevcbdev()), no esnecesario volver a invocarlas antes de cargar el vocabulario mediante la función vx_setvcb().
Con la opción GVX_ABNF habilitada, la función vx_setvcb() requiere el fichero de estados de la gramática, elfichero de definiciones y el fichero de transcripciones generado mediante la función vx_prevcb() ovx_prevcbex() o vx_prevcbex2() o vx_prevcbdev(). Si estos ficheros existen y la gramática ABNFcorrespondiente no ha sido modificado desde que se llamó a la función vx_prevcb() (o vx_prevcbex() ovx_prevcbex2() o vx_prevcbdev()), no es necesario volver a invocarlas antes de cargar la gramática mediantela función vx_setvcb().
Con la opción GVX_DTMF la gramática no crea ficheros adicionales resultados de la compilación.
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento.
La configuración de reconocimiento activa en el momento de cargar la gramática debe ser la misma que laexistente en el momento de su preparación. En caso contrario, aparecerá el error THE VOCABULARYCONTAINS AN INVALID WORD. Check and correct invalid words.
62.5. Errores
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY.
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID.
EVX_INVWORD THE VOCABULARY TRANSCRIPTION WAS NOT FOUND.
EVX_SYSTEM SYSTEM ERROR. Check errno.
62.6. Elementos relacionados
vx_setcd, vx_loadvcb, vx_activatevcb, vx_deactivatevcb, vx_unloadvcb, ATVX_IVCB
62.7. Códigos de ejemplo
Consulte el ejemplo síncrono.
Consulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
98 Referencia de las funciones del Dialogic SDK Verbio Technologies
63. vx_srvclose
FUNCION void vx_srvclose(const char *server)
const char *server dirección IP del servidor con el que el cliente cierra laconexión
INCLUDES vxxxlib.h
MODO síncrono
63.1. Descripción
La función vx_srvclose() cierra todas las conexiones con el servidor especificado en la dirección IP.
63.2. Descripción de los parámetros
server especifica la dirección IP del servidor con el que se cerrarán todas las conexiones.
63.3. Elementos relacionados
vx_regsrvclose
63.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 99
64. vx_termplaystr
FUNCION int vx_termplaystr(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
64.1. Descripción
La función vx_termplaystr() asegura que todos los eventos recibidos como consecuencia de una llamadaasíncrona a la función vx_playstr() son eliminados de la cola de eventos.
64.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
64.3. Precauciones
Esta función debe ser llamada únicamente cuando la función vx_playstr() se ha invocado asíncronamente.
64.4. Elementos relacionados
vx_playstr
64.5. Códigos de ejemploConsulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
100 Referencia de las funciones del Dialogic SDK Verbio Technologies
65. vx_termrecstr
FUNCION int vx_termrecstr(int chdev)
int chdev descriptor de un canal abierto de Dialogic
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
65.1. Descripción
La función vx_termrecstr() indica el final del reconocimiento iniciado mediante la función vx_recstr_open() omediante la función vx_recstr() invocada asíncronamente.
65.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
65.3. Precauciones
Esta función debe ser llamada únicamente cuando la función vx_recstr() o vx_recstr_open() se ha invocadoasíncronamente.
65.4. Elementos relacionados
vx_recstr, vx_recstr_open
65.5. Códigos de ejemploConsulte el ejemplo asíncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 101
66. vx_thclose
FUNCION int vx_thclose()
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
66.1. Descripción
La función vx_thclose libera las conexiones con el motor de síntesis y o reconocimiento del habla utilizadas porel thread (hilo) que la invoca. Por lo tanto, esta función debe invocarse siempre desde cualquier thread(hilo) que haya hecho uso de síntesis o reconocimiento, justo antes del momento de su destrucción. De estemodo, se liberarán los recursos utilizados para establecer la comunicación con los servidores de síntesis y/oreconocimiento del habla.
66.2. Elementos relacionadosvx_libclose, vx_srvclose, vx_devclose
66.3. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
102 Referencia de las funciones del Dialogic SDK Verbio Technologies
67. vx_tts_init
FUNCION int vx_tts_init(const char *configuration, const char *defttslng)
const char*configuration
uso futuro. Debe tener el valor NULL.
const char*defttslng
identificador del idioma de síntesis por defecto
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
67.1. Descripción
La función vx_tts_init() inicializa la librería de síntesis del habla de Verbio. En nuevos desarrollos esrecomendable utilizar esta función (conjuntamente con la función vx_asr_init en caso de que también serequiera reconocimiento del habla) en lugar de la función vx_libinit, puesto que permite indicar al servidor losparámetros de inicialización de una manera mucho más concreta.
67.2. Descripción de los parámetros
configuration parámetro destinado a usos futuros. El valor debe ser fijado a NULL.
defttslng especifica el idioma por defecto con el que trabajará el servidor de síntesis.
LNG_SPANISH Español castellano
LNG_CATALAN Catalán
LNG_BASQUE Euskera
LNG_GALICIAN Gallego
LNG_PORTUGUESE Portugués
LNG_PORTUGUESE_BRAZILIAN Portugués brasileño
LNG_FRENCH Francés
LNG_ENGLISH Inglés
LNG_SPANISH_MEXICAN Español mexicano
LNG_SPANISH_ARGENTINIAN Español argentino
LNG_SPANISH_COLOMBIAN Español colombiano
LNG_SPANISH_CHILEAN Español chileno
LNG_SPANISH_VENEZUELAN Español venezolano
67.3. Precauciones
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 103
La función vx_tts_init() debe invocarse antes que ninguna otra de las funciones del SDK de Verbiorelacionadas con la síntesis del habla, a excepción de aquella destinada a establecer el servidor de trabajo pordefecto en configuraciones cliente-servidor (vx_setparm).
67.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR(-1)y ATVX_ERRMSGP(-1) obtendrá alguno de los siguientes motivos de error:
EVX_SRERROR DIALOGIC SRL ERROR. Check ATDV_LASTERR() and ATDV_ERRMSGP().
EVX_DXERROR DIALOGIC VOICE ERROR. Check ATDV_LASTERR() andATDV_ERRMSGP().
EVX_NOBOARDS NO BOARDS DETECTED. Check Dialogic Drivers Start Up.
EVX_INVSETUP VERBIO INTERNAL ERROR. Files may be corrupted. Check disk and repeatSetup.
EVX_NOMEM OUT OF MEMORY.
EVX_NOLICFILE NO LICENSE FILE WAS FOUND. Run CheckOut to obtain a license file.
EVX_INVLIC THE LICENSE FILE IS NOT VALID. Run CheckOut to obtain a valid licensefile.
EVX_SYSTEM SYSTEM ERROR.Check errno.
EVX_INVSRVER INVALID DIALOGIC SRL RELEASE (libsrlmt.dll). Check README.TXT.
EVX_INVDXVER INVALID DIALOGIC VOICE LIBRARY RELEASE (libdxxmt.dll).
67.5. Elementos relacionados
vx_libinit, vx_asr_init, vx_libclose
67.6. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
104 Referencia de las funciones del Dialogic SDK Verbio Technologies
68. vx_ttsSetAbbreviations
FUNCION int vx_ttsSetAbbreviations(int chdev, int mcLang, const char *filename)
int chdev descriptor de un canal abierto de Dialogic
int mcLang especifica el idioma asociado al diccionario personal deabreviaturas
const char *filename puntero al nombre del fichero de texto que contiene lasabreviaturas personalizadas
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
68.1. Descripción
La función vx_ttsSetAbbreviations() establece un conjunto de abreviaturas personalizadas para ser utilizadaspor el servidor de síntesis en el canal especificado, pudiendo ser modificadas dinámicamente.
El diccionario de abreviaturas personalizadas se añade al diccionario global de abreviaturas usado por elservidor de síntesis para el idioma especificado.
Esta función está obsoleta y se mantiene por compatibilidad con desarrollos antiguos. Para nuevos desarrollos,es aconsejable utilizar la función vx_SetAbbreviations.
Para una mayor información, consulte el capítulo de síntesis del habla en Verbio Software Reference:Guía del Usuario.
68.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
mclang especifica el idioma asociado con el vocabulario de abreviaturas personalizadas.
LVX_SPANISH Español
LVX_CATALAN Catalán
filename puntero al nombre del fichero de texto que contiene las abreviaturas personalizadas para elidioma seleccionado.
68.3. Precauciones
La función vx_ttsSetAbbreviations() está incluida por compatibilidad con antiguos desarrollos. Para nuevosproyectos es aconsejable utilizar la función equivalente vx_SetAbbreviations().
68.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() y
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 105
ATVX_ERRMSGP() obtendrá el motivo del error.
68.5. Elementos relacionados
vx_ttsSetDictionary, vx_SetAbbreviations
68.6. Códigos de ejemploConsulte el ejemplo con barge-in.
Capítulo 2. Descripción de las funciones
106 Referencia de las funciones del Dialogic SDK Verbio Technologies
69. vx_ttsSetDictionary
FUNCION int vx_ttsSetDictionary(int chdev, int mcLang, const char *filename)
int chdev descriptor de un canal abierto de Dialogic
int mcLang especifica el idioma asociado al diccionario personal
const char *filename puntero al nombre del fichero de texto que contiene eldiccionario personalizado
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
69.1. Descripción
La función vx_ttsSetDictionary() establece un diccionario personalizado para ser utilizado por el servidor desíntesis en el canal especificado, pudiendo ser modificado dinámicamente.
El diccionario personalizado se añade al diccionario global usado por el servidor de síntesis para el idiomaespecificado.
Esta función está obsoleta y se mantiene por compatibilidad con desarrollos antiguos. Para nuevos desarrollos,es aconsejable utilizar la función vx_SetDictionary.
Para una mayor información, consulte el capítulo de síntesis del habla en Verbio Software Reference:Guía del Usuario.
69.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
mclang especifica el idioma al que afectará el diccionario personalizado.
LVX_SPANISH Español
LVX_CATALAN Catalán
filename puntero al nombre del fichero de texto que contiene el diccionario personalizado para elidioma seleccionado.
69.3. Precauciones
La función vx_ttsSetDictionary() está incluida por compatibilidad con antiguos desarrollos. Para nuevosproyectos es aconsejable utilizar la función equivalente vx_SetDictionary().
69.4. Errores
Si la función retorna -1 indicando que se ha producido un error, mediante las funciones ATVX_LASTERR() yATVX_ERRMSGP() obtendrá el motivo del error.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 107
69.5. Elementos relacionados
vx_ttsSetAbbreviations, vx_SetDictionary
69.6. Códigos de ejemploConsulte el ejemplo con barge-in.
Capítulo 2. Descripción de las funciones
108 Referencia de las funciones del Dialogic SDK Verbio Technologies
70. vx_unloadvcb
FUNCION int vx_unloadvcb(int chdev, int vcbhandle, unsigned int mode)
int chdev descriptor de un canal abierto de Dialogic
int vcbhandle descriptor de un vocabulario o gramática ABNF previamentecargado
unsigned int mode funcionamiento síncrono o asíncrono
RETORNA >=0 indicando el descriptor del vocabulario si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono/asíncrono
70.1. Descripción
La función vx_unloadvcb() descarga un vocabulario o gramática ABNF previamente cargado en el canalespecificado. El descriptor del vocabulario se obtiene al cargarlo mediante la función vx_loadvcb() y tambiéndebe usarse para activarlo mediante la función vx_activatevcb() o para descactivarlo mediante la funciónvx_deactivatevcb(). Si el descriptor del vocabulario es -1, la función vx_unloadvcb() descarga todos losvocabularios y gramáticas ABNF cargados previamente.
70.2. Funcionamiento asíncrono
En modo asíncrono, la función retorna de inmediato, generándose el evento TVX_SETVCB una vez hafinalizado. En caso de error, se genera el evento TVX_ERROR.
70.3. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la funcióndx_open().
vcbhandle descriptor de un vocabulario o gramática ABNF previamente cargado mediante la funciónvx_loadvcb().
mode especifica si debe ejecutarse la función vx_unloadvcb() en modo síncrono o asíncrono.
EV_ASYNC Ejecuta vx_unloadvcb() asíncronamente
EV_SYNC Ejecuta vx_unloadvcb() síncronamente (valor por defecto)
70.4. Precauciones
Si se establece el vocabulario o la gramática activa mediante la función vx_setvcb() o vx_setcd(), sedescargarán automáticamente todos los vocabularios y gramáticas cargados hasta ese momento (equivale ainvocar la función vx_unloadvcb() con el parámetro vcbhandle fijado al valor -1).
A diferencia de invocar a la función vx_setvcb() con el parámetro filename a valor NULL, si se descargantodos los vocabularios mediante la función vx_unloadvcb() con el parámetro vcbhandle fijado al valor -1,no se libera la licencia de idioma asociada al canal.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 109
70.5. Errores
En modo asíncrono, la función retorna de forma inmediata, generándose el evento TVX_SETVCB en cuantofinalice. Si se produce un error, el evento recibido será TVX_ERROR. En este caso, utilice la funciónATVX_LASTERR() para conocer el motivo del error.
En modo síncrono, si la función retorna -1 indicando que se ha producido un error, la funciónATVX_LASTERR() devolverá alguno de los siguientes motivos:
EVX_NOMEM OUT OF MEMORY
EVX_VCBFILE THE VOCABULARY FILE NAME IS NOT VALID.
EVX_INVWORD THE VOCABULARY TRANSCRIPTION WAS OT FOUND
EVX_SYSTEM SYSTEM ERROR. Check errno.
70.6. Elementos relacionados
vx_setvcb, vx_loadvcb, vx_loadcd, vx_activatevcb, vx_deactivatevcb, ATVX_IVCB
70.7. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
110 Referencia de las funciones del Dialogic SDK Verbio Technologies
71. vx_vsd_close
FUNCION int vx_vsd_close(int chdev, VAD_PARAM* vsddev)
int chdev descriptor de un canal abierto de Dialogic
VAD_PARAM*vsddev
descriptor de detección de voz válido
RETORNA 0 si el resultado es satisfactorio
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
71.1. Descripción
La función vx_vsd_close() cierra el desciptor de detección de voz abierto mediante la función vx_vsd_open ylibera los recursos utilizados durante el proceso de detección de voz.
71.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
vsddev especifica el descriptor de detección de voz válido obtenido mediante la función vx_vsd_open.
71.3. Elementos relacionados
vx_vsd_open, vx_vsd_write
71.4. Códigos de ejemploConsulte el ejemplo de detección de voz.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 111
72. vx_vsd_open
FUNCION VAD_PARAM* vx_vsd_open(int chdev, int recdev, VAD_PRM *prm, unsignedint mode)
int chdev descriptor de un canal abierto de Dialogic
int recdev descriptor del proceso de reconocimiento paralelo en caso deexistir
VAD_PRM *prm puntero a una estructura del tipo Voice ActivityDetection Parameter
unsigned int mode formato de las muestras (Ley A o Ley Mu)
RETORNA != -1 para indicar el descriptor de detección de la voz
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
72.1. Descripción
La función vx_vsd_open() inicializa el detector de voz en el canal especificado, de modo que esté preparadopara empezar a recibir las muestras de audio mediante la función vx_vsd_write(). El valor devuelto por lafunción es requerido por las funciones vx_vsd_write() y vx_vsd_close().
Con la finalidad de reducir el coste computacional en el servidor de reconocimiento, es una práctica aconsejableutilizar el detector de voz en la parte cliente de la aplicación, de modo que únicamente se mandan alreconocedor muestras de voz, liberando a éste de la tarea de separar la señal de voz de la señal supérflua. Paraello, debe obtenerse previamente un descriptor de reconocimiento mediante la función vx_recstr_open, queserá necesario especificar como segundo parámetro de la función vx_vsd_open.
72.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
recdev en caso de lanzar un proceso de reconocimiento utilizando el VAD en el cliente, es necesarioespecificar el descriptor de reconocimiento obtenido mediante la función vx_recstr_open en esteparámetro. De este modo, el servidor de reconocimiento se verá liberado de la tarea de separar laseñal de voz del silencio, reduciéndose así el coste computacional de la parte servidora. En casode que la estrategia de detección de voz no esté ligada a un proceso de reconocimiento, el valorde este parámetro debe ser 0.
prm puntero a una estructura de tipo Voice Activity Detection Structure (VAD_PRM)en la que se especifican las variables de entorno que condicionarán el comportamiento deldetector de voz. Si el valor de este parámetro es NULL se utilizarán los valores por defecto de loscampos de la estructura. Para más información acerca de esta estructura, consulte el Capítulo 3.Estructuras de datos y parámetros.
mode especifica el formato de las muestras de audio pasadas al detector de voz.
MC_ALAW formato PCM (Ley A) a 8 KHz.
MC_MULAW formato PCM (Ley Mu) a 8 KHz.
Capítulo 2. Descripción de las funciones
112 Referencia de las funciones del Dialogic SDK Verbio Technologies
72.3. Precauciones
Una vez finalizado el proceso de detección de voz, es imprescindible invocar a la función vx_vsd_close paraliberar los recursos de memoria utilizados durante el proceso de detección.
72.4. Elementos relacionados
vx_vsd_write, vx_vsd_close
72.5. Códigos de ejemploConsulte el ejemplo de detección de voz.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 113
73. vx_vsd_write
FUNCION int vx_vsd_write(VAD_PARAM* vsddev, const void *buffer, unsigned int n)
VAD_PARAM*vsddev
descriptor de detección de voz válido
const void *buffer vector en el que se encuentran las muestras de audio que debeprocesar el detector de voz
unsigned int n tamaño del vector de muestras (en bytes)
RETORNA estado en el que se encuentra el proceso de detección de voz.
-1 en caso de error
INCLUDES vxxxlib.h
MODO síncrono
73.1. Descripción
La función vx_vsd_write() envía las muestras recibidas hacia el detector de voz para ser procesadas.
La función retorna el estado en el que se ha quedado el algoritmo de detección de voz después de procesar elbuffer de muestras actual. Para conocer los posibles estados y las transiciones permitidas entre ellos, consulteel Capítulo 3. Estructuras de datos y parámetros. Es posible también especificar una función de callbackque se ejecute al finalizar el procesado de cada bloque de muestras, instante en el cual informará del estadoactual y de otros parámetros de interés. Encontrará más detalles en la definición del campo callback de laestructura VAD_PRM. Los parámetros también pueden consultarse de forma directa e individualmente mediantela función vx_getparm mediante los identificadores VXCH_INITSIL, VXCH_FINALSIL y VXCH_VOICE.Para más detalles, consulte el Capítulo 3. Estructuras de datos y parámetros.
73.2. Descripción de los parámetros
vsddev especifica el descriptor de detección de voz válido obtenido mediante la función vx_vsd_open.
buffer vector en el que se encuentran las muestras de audio que debe procesar el detector de voz.
n tamaño del vector de muestras.
73.3. Elementos relacionados
vx_vsd_open, vx_vsd_close
73.4. Códigos de ejemploConsulte el ejemplo de detección de voz.
Capítulo 2. Descripción de las funciones
114 Referencia de las funciones del Dialogic SDK Verbio Technologies
74. vx_word
FUNCION char* vx_word(int chdev, int ind)
int chdev descriptor de un canal abierto de Dialogic
int ind índice asociado con la palabra del vocabulario o gramática que sedesea obtener
RETORNA puntero a un vector de caracteres con el contenido de la palabra del vocabulario apuntadapor el índice (fila) especificado
puntero a un vector vacío ("") si el índice especificado no es válido
INCLUDES vxxxlib.h
MODO síncrono
74.1. Descripción
La función vx_word() devuelve un puntero a un vector de caracteres ASCIIZ con el contenido asociado alíndice (fila) especificado del vocabulario o gramática activa en el canal.
74.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
ind índice asociado con la palabra del vocabulario o gramática que se desea obtener. Generalmente, losíndices de interés son aquellos devueltos por la función vx_recind o vx_nbest. En el caso de quererobtener toda la información posible ofrecida por el servidor de reconocimiento (reglas, valores,locuciones, niveles de confianza e intervalos temporales), debe utilizarse el valor IND_STREAM, encuyo caso el vector de caracteres ASCIIZ contiene toda la información estructurada siguiendo elformato especificado en Sección 5.
74.3. Elementos relacionados
vx_wordex, vx_recstr
74.4. Códigos de ejemploConsulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 115
75. vx_wordex
FUNCION char* vx_wordex(int chdev, int ind, int pos)
int chdev descriptor de un canal abierto de Dialogic
int ind índice asociado con la palabra del vocabulario o gramática que sedesea obtener
int pos columna del vocabulario de la que se desea obtener el contenido
RETORNA puntero a un vector de caracteres con el contenido de la palabra del vocabulario apuntadapor el índice (fila) y columna especificados
puntero a un vector vacío ("") si el índice o la columna especificados no son válidos
INCLUDES vxxxlib.h
MODO síncrono
75.1. Descripción
La función vx_wordex() devuelve un puntero a un vector de caracteres ASCIIZ con el contenido asociado alíndice (fila) y columna especificados del vocabulario o gramática activa en el canal .
75.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
ind índice asociado con la palabra del vocabulario o gramática que se desea obtener. Generalmente, losíndices de interés son aquellos devueltos por la función vx_recind o vx_nbest. En el caso de quererobtener toda la información posible ofrecida por el servidor de reconocimiento (reglas, valores,locuciones, niveles de confianza e intervalos temporales), debe utilizarse el valor IND_STREAM, encuyo caso el vector de caracteres ASCIIZ contiene toda la información estructurada siguiendo elformato especificado en Sección 5.
pos columna del vocabulario de la que se desea obtener el contenido. Consulte Verbio SoftwareReference: Guía del usuario para más detalles acerca del contenido de cada una de las columnasque constituyen un vocabulario.
75.3. Elementos relacionados
vx_word, vx_recstr
75.4. Códigos de ejemploConsulte el ejemplo con barge-in.
Capítulo 2. Descripción de las funciones
116 Referencia de las funciones del Dialogic SDK Verbio Technologies
76. vx_wordrule
FUNCION const char* vx_wordrule(int chdev, const char* rule, int pos, float * score)
int chdev descriptor de un canal abierto de Dialogic
const char* rule nombre de la regla de la gramática de la que se desea obtenerinformación
int pos tipo de información que se desea obtener de la regla
float* score índice de confianza del resultado asociado a la reglaespecificada
RETORNA NULL en caso de error
array de caracteres con la información solicitada en caso satisfactorio
INCLUDES vxxxlib.h
MODO síncrono
76.1. Descripción
La función vx_wordrule() permite obtener la información del resultado de reconocimiento desglosado paracada una de las reglas que constituyen la gramática ABNF utilizada en el proceso de reconocimiento. Para ello,es necesario indicar el nombre de la regla del que se desea obtener la información y el tipo de información quese desea: valor, utterance o peso. El ínidice de confianza (score) se devuelve en todos los casos.ConsulteVerbio Software Reference: Guía del usuario para más detalles acerca del contenido que puede devolverse paracada una de las reglas.
76.2. Descripción de los parámetros
chdev especifica el descriptor de canal válido obtenido al abrir el canal mediante la función dx_open().
rule nombre completo de la regla del que se desea obtener la información. En caso de reglas de segundonivel o superiores, debe especificarse también las reglas inferiores hasta llegar a la regla de interés.Por ejemplo: "regla1.subregla2.subsubregla3".
pos especifica la información que devolverá la función (junto con el índice de confianza)
0 Valor (value) del resultado de reconocimiento
1 Locución (utterance) del resultado de reconocimiento
2 Peso aplicado a la regla
score índice de confianza del resultado parcial asociado a la regla especificada
76.3. Errores
Si la función retorna 0 (nulo) indicando que se ha producido un error puede ser debido a que se ha especificadoun nombre de regla incorrecto (o de tipo de resultado), o a que dicha regla no ha generado ningún resultado dereconocimiento.
76.4. Elementos relacionados
Capítulo 2. Descripción de las funciones
Verbio Technologies Referencia de las funciones del Dialogic SDK 117
vx_word, vx_wordex
76.5. Códigos de ejemplo
Consulte el ejemplo síncrono.
Capítulo 2. Descripción de las funciones
118 Referencia de las funciones del Dialogic SDK Verbio Technologies
Capítulo 3. Estructuras de datos yparámetros
1. VX_RSP - Recognize String Parameter
La estructura VX_RSP incluye condiciones de terminación y parámetros adicionales para las funcionesvx_recstr() o vx_recstr_open().
El contenido (typedef) de la estructura se muestra a continuación:
typedef struct vx_rsp {/* Maximum silence after voice detection */int maxsil;/* Maximum initial silence (before detecting voice) */int initsil;/* File descriptor */int io_fhandle;/* Ignored initial samples */int skip_samples;/* Callback function */VX_RSP_CALLBACK callback;
} VX_RSP;
donde:
maxsil especifica la duración máxima, en unidades de 10 ms, del silencio final. Una vezdetectada señal de voz, la función vx_recstr() detiene el proceso dereconocimiento si se detecta un intervalo de silencio superior a este valor. (Valorpor defecto: 20).
initsil especifica la duración máxima, en unidades de 10 ms, del silencio inicial. Si antesde detectar señal de voz transcurre un tiempo superior al valor especificado, sedetiene el proceso de reconocimiento. (Valor por defecto: 350).
io_fhandle contiene un descriptor de fichero obtenido mediante la invocación de la funcióndx_fileopen(). Si el valor es distinto de -1, la función vx_recstr() grabará laseñal de entrada en este fichero. El formato de la grabación está fijado a PCM (leyA o ley Mu), con una frecuencia de muestreo de 8 KHz y sin Control Automáticode Ganancia. (Valor por defecto: -1).
skip_samples número de muestras iniciales que serán ignoradas por el reconocedor. Esespecialmente útil en aquellos casos en los que las muestras proceden de unfichero de audio con cabecera, debido a la necesidad de no procesar los primerosbytes, puesto que éstos pertenecen a la cabecera. (Valor por defecto: 0).
callback función que será invocada en cuanto finalice el reconocimiento. Debe seguir lasintaxis int (*VX_RSP_CALLBACK) (int);, en el que el parámetrorecibido (entero) es el descriptor del canal abierto mediante la función dx_open.Es especialmente útil cuando se implementan funcionalidades de barge-in, taly como se muestra en el ejemplo con barge-in.
Nota
Si no desea grabarse la señal de entrada, el campo io_fhandle debe tener el valor -1. Este es elvalor por defecto establecido mediante la función vx_clrrsp().
Capítulo 3. Estructuras de datos yparámetros
120 Referencia de las funciones del Dialogic SDK Verbio Technologies
2. VAD_PRM - Voice Activity Detection Parameters
La estructura VAD_PRM contiene los parámetros de configuración del detector de voz de Verbio. Estosparámetros condicionarán el comportamiento del VAD durante el procesado de las muestras de audio.
El contenido (typedef) de la estructura se muestra a continuación:
typedef struct {unsigned short frame_len;unsigned short frame_step;float sil_req_ms;float voice_req_ms;float low_factor;float high_factor;float final_factor;float final_high_factor;float max_ref_factor;float min_high_thresh;float aam_min;float aam_max;
int (*callback)(int state, unsigned long initsil, unsigned long finalsil, unsigned long voice);}VAD_PRM;
donde:
frame_len especifica el tamaño, en muestras, de cada uno de los bloques de audio en los quese fragmentará la señal entrante antes de ser procesada. A mayor tamaño delbloque, menor coste computacional pero también menor precisión a la hora deobtenerse el instante en el que se empieza a recibir voz. Por el contrario, a menortamaño, mayor precisión incrementándose por contra el coste computacional. Elvalor por defecto tras la invocación de la función vox_clrvad es de 512.
frame_step especifica el tamaño, en muestras, de la ventana utilizada para el procesado decada uno de los bloques en los que se ha dividido la señal de audio a analizar. Aligual que en el caso del parámetro frame_len, a mayor tamaño menor precisióny coste computacional. Por el contrario, a menor tamaño mayor precisión y costecomputacional. El valor de este parámetro no puede ser nunca superior al deframe_len, siendo habitual que coincidan ambos valores. El valor por defectotras la invocación de la función vox_clrvad es de 512.
sil_req_ms especifica el tiempo de silencio mínimo, en milisegundos, para determinar que seha detectado voz en las muestras anteriores. Intervalos menores de silencio seentenderá que forman parte de la señal de voz previa. En función del uso al quevaya destinado el VAD puede usarse este valor para segmentar la señal enfragmentos de voz más o menos amplios. El valor por defecto tras la invocaciónde la función vox_clrvad es de 180.
voice_req_ms especifica la duración mínima, en milisegundos, de un segmento de voz para queel VAD la detecte como tal. De este modo, se evita que ruidos, etc. puedanocasionar numerosas falsas alarmas. El valor por defecto tras la invocación de lafunción vox_clrvad es de 120.
low_factor especifica un umbral a partir del cual se inicia el procesado de la señal paradeterminar si las muestras siguientes corresponden a voz o no. Por debajo de esteumbral se considera que la señal es de silencio, de modo que en función delentorno (más o menos ruidoso), la modificación de este valor permitirá ajustar ladetección de voz de la manera más precisa posible. El valor por defecto tras lainvocación de la función vox_clrvad es de 2.5.
high_factor especifica un segundo umbral (junto con low_factor) para determinar si laseñal recibida es voz o no. El detector de voz requiere que se superen ambosumbrales para determinar que se ha recibido voz. Su valor debe ser siempresuperior al especificado para low_factor. El valor por defecto tras lainvocación de la función vox_clrvad es de 4.5.
final_factor especifica el umbral que determina si, una vez detectada voz, la señal recibida acontinuación sigue siendo señal de voz o no. Si no lo es, empieza a contar el
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 121
tiempo máximo de silencio (sil_req_ms) que puede formar parte de unfragmento de voz. El valor por defecto tras la invocación de la funciónvox_clrvad es de 0.8.
final_high_factor especifica un segundo umbral (junto con final_factor) que gestiona el fin dela detección de voz una vez detectada. Si, una vez detectada voz, el nivel de laseñal es inferior a final_factor i no ha transcurrido el tiempo especificadopor sil_req_ms, puede volverse al estado de voz siempre y cuando el nivel dela señal sea superior al valor especificado para este parámetro. Si ésto ocurre,vuelve a empezar el contador de sil_req_ms. El valor por defecto tras lainvocación de la función vox_clrvad es de 2.5.
max_ref_factor Uso futuro. El valor por defecto tras la invocación de la función vox_clrvad es de0.
min_high_thresh Valor mínimo que puede tener el umbral interno que gestiona la detección de voz.El valor por defecto tras la invocación de la función vox_clrvad es de 500.
aam_min Valor mínimo de la amplitud de la señal a analizar . Si la amplitud de la señal nosupera este valor, a efectos de detección se trabajará con el valor mínimo para esefragmento de sonido. El valor por defecto tras la invocación de la funciónvox_clrvad es de 50.
aam_max Valor máximo de la amplitud de la señal a analizar . Si la amplitud de la señalsupera este valor, a efectos de detección se trabajará con el valor máximo para esefragmento de sonido. El valor por defecto tras la invocación de la funciónvox_clrvad es de 200.
callback
Diagrama de flujo de los estados del detector de voz.
Función de callback que se ejecutará cada vez que se procese un bloque demuestras (de tamaño frame_len). Por defecto no se especifica ninguna funciónde callback, de modo que no se ejecutará ningún código adicional trasprocesarse un bloque de muestras. Los parámetros que recibirá esta funcióncontendrán la siguiente información:
state estado en el que se encuentra el detector de voz en el instanteactual. Los posibles valores son:
VVX_INIT Estado inicial. Únicamente se estáen este estado antes de procesar elprimer bloque de muestras. De ésteestado únicamente puede pasarseal estado VVX_SILENCE y nunca
Capítulo 3. Estructuras de datos yparámetros
122 Referencia de las funciones del Dialogic SDK Verbio Technologies
puede volverse a él.
VVX_SILENCE Estado de silencio. A él se llegadesde el estado inicial o bien desdeel estado VVX_LOW (no se harecibido señal de suficienteamplitud como para pasar alestado VVX_HIGH) o bien desdeel estado VVX_FINAL (laduración de señal de nivel alto noha sido suficiente como paradeterminar que se ha detectadovoz) o bien desde el estadoVVX_VOICE (se ha recibidosuficiente señal de alta amplitudcomo para decidir que se harecibido voz).
Es posible mantenerse en esteestado durante el procesado devarios bloques de muestrasconsecutivos.
VVX_LOW Estado de inicio de detección devoz. Mientras la amplitud de laseñal de audio esté comprendidaentre los dos umbrales de decisión,el estado puede permanecer enVVX_LOW. A él se puede llegardesde el estado VVX_SILENCE(se ha recibido un bloque demuestras de amplitud intermedia)o bien desde el estadoVVX_VOICE (se ha detectado vozen un bloque anterior y el siguienteya empieza con un nivelintermedio de señal sin pasar porel estado de silencio).
Es posible mantenerse en esteestado durante el procesado devarios bloques de muestrasconsecutivos.
VVX_HIGH Estado de nivel alto de energía dela señal. Si se mantiene un tiemposuficiente en este estado, sedecidirá que se ha recibido voz. Aeste estado se puede llegar desde elestado VVX_SILENCE oVVX_LOW (se ha recibido unbloque de muestras de amplitudelevada) o bien desde el estadoVVX_FINAL (se ha pasadopreviamente por este estado perola llegada de bloques con energíaelevada provoca que se vuelva aél) o bien desde el estadoVVX_VOICE (se ha detectado vozen un bloque anterior y el siguienteya empieza con un nivel alto de
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 123
señal sin pasar por el estado desilencio ni de nivel intermedio).
Es posible mantenerse en esteestado durante el procesado devarios bloques de muestrasconsecutivos.
VVX_FINAL Estado en el que se decide si haexistido voz en los bloques previoso no. A él se llega exclusivamentedesde el estado VVX_HIGH.Transcurrido el tiempo de guarda,en función del número de bloquesque hayan superado el umbral denivel de señal asociado a voz, sedecidirá que se ha recibido voz (sepasa al estado VVX_VOICE ) ono (se pasa al estadoVVX_SILENCE).
Es posible mantenerse en esteestado durante el procesado devarios bloques de muestrasconsecutivos.
VVX_VOICE Estado al que se llega cuando sedecide que en los bloques previosde señal había muestras de voz. Aeste estado únicamente puedellegarse desde el estadoVVX_FINAL.
initsil cantidad de muestras (de silencio) acumuladas desde el iniciode la locución sin que se haya detectado voz.
finalsil cantidad de muestras (se silencio) acumuladas desde que seprocesó la última trama de voz.
voice número de fragmentos de la locución que contienen muestrasde voz. Cuanto mayor sea el silencio final exigido para dar porfinalizado un fragmento de voz, menor número de fragmentosdeberían aparecer.
Nota
Es imprescindible invocar a la función vox_clrvad para inicializar toda variable del tipo VAD_PRM.
Capítulo 3. Estructuras de datos yparámetros
124 Referencia de las funciones del Dialogic SDK Verbio Technologies
3. MODEATTRIBUTES - SAPI Speaker Id
La estructura MODEATTRIBUTES es utilizada para especificar las características deseadas para un locutorSAPI. Pretende ser un medio más directo que la estructura TTSMODEINFO (Text-to-SpeechInformation) definida en el estandar SAPI. En http://www.microsoft.com/speech podrá obtener másinformación acerca de esta estructura y del estándar SAPI.
Verbio intentará encontrar al locutor que mejor se adapte a las especificaciones, no siendo necesario, por lotanto, rellenarlas todas, aunque la búsqueda será más precisa cuanto más se detallen las características dellocutor deseado.
El contenido (typedef) de la estructura se muestra a continuación:
typedef struct {
char age[SAPI_AGE_SIZE]; //Child, Teen, Adult, Seniorchar gender[SAPI_GENDER_SIZE]; //Male, Femaleunsigned short int language;char name[SAPI_NAME_SIZE];char vendor[SAPI_VENDOR_SIZE];
} MODEATTRIBUTES, *PMODEATTRIBUTES;
donde:
age especifica la edad del locutor deseado. Las posibilidades son:
Child Infantil
Teen Adolescente
Adult Adulto
Senior Tercera edad
gender especifica el sexo del locutor deseado. Las posibilidades son:
Male Masculino
Female Femenino
language identificador análogo al del campo language.LanguageID de la estructuraTTSMODEINFO, que especifica el idioma (y dialecto en algunos casos) del locutor deseado.
name nombre bajo el que se registra el locutor deseado. Suele ser la manera más directa de hacerreferencia a un locutor.
vendor nombre de la empresa que ha desarrollado el locutor deseado.
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 125
4. Definición de parámetros para vx_getparm() y vx_setparm()
El fichero vxxxlib.h contiene los parámetros que pueden ser consultados y modificados mediante lasfunciones vx_getparm() y vx_setparm() respectivamente. Existen parámetros globales (independientes delcanal) y parámetros dependientes del canal.
Tabla 3.1. Parámetros globales en el SDK de Dialogic
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
VXGB_RECSTRLIC int R - Licencias de reconocimientodisponibles, i.e., número máximo dellamadas simultáneas a las funciones
vx_recstr() o vx_recstr_open().
VXGB_PLAYSTRLIC int R - Licencias de síntesis disponibles, i.e.,número máximo de llamadas
simultáneas a la función vx_playstr().
VXGB_LICMODE int R - Tipo de licencias, i.e., disponibilidad deidiomas adicionales, Lite (prestacioneslimitadas) o versiones de evaluación.
VXGB_RECSAMPFREQ float R - Frecuencia de muestreo a la que trabajael motor de reconocimiento.
VXGB_VSDMAXREF float R/W 200 Gestión de la amplitud máximapermitida para señal de voz. Condicionael comportamiento del detector de voz(VAD) del motor de reconocimiento.
VXGB_VSDMINREF float R/W 50 Gestión de la amplitud mínimapermitida para señal de voz. Condicionael comportamiento del detector de voz(VAD) del motor de reconocimiento.Para entornos ruidosos, es necesario
incrementar el valor de este parámetropara que el ruido de fondo no se
confunda por señal de voz. El valor deeste parámetro no podrá nunca superarel especificado mediante el parámetro
VXGB_VSDMAXREF.
VXGB_NETTIMEOUT int R/W 5 Intervalo de guarda (en segundos) entrelas comunicaciones cliente-servidor.
Transcurrido este intervalo, se produceun error para indicar que la
comunicación entre el cliente y elservidor se ha perdido. En la fase dedepuración es conveniente poner estevalor a -1 para evitar que se produzcaun error al ejecutarse la aplicación paso
a paso.
VXGB_DEFSERVER char* R/W "127.0.0.1" Nombre o dirección IP del equipo en elque está operativo el servidor de síntesisy/o reconocimiento al que se conecta el
Capítulo 3. Estructuras de datos yparámetros
126 Referencia de las funciones del Dialogic SDK Verbio Technologies
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
cliente. Es necesario especificarlo antesde invocar a la función vx_libinit o
vx_asr_init o vx_tts_init.
VXGB_LOCALADDR char* R - Nombre o dirección IP del equipo en elque está ejecutándose el cliente.
VXGB_TTSSPKINFO char* R - Listado de todos los locutoresdisponibles junto con sus características
principales. El formato del vector decaracteres obtenido es el siguiente(contiene información de todos loslocutores encontrados sin espaciosintermedios): Identificador:
Nombre: Sexo: Edad: Idioma;Identificador2: Nombre2:
Sexo2: Edad2: Idioma2; ...
VXGB_TUNNING_ACT int R/W 0 Habilita (1) o deshabilita (0) lagrabación de todas las locuciones
enviadas al reconocedor junto con losresultados de reconocimiento asociados.
Es especialmente últil en la fase depruebas para poder evaluar la calidad dereconocimiento y actuar, si cabe, sobre
las gramáticas o los diálogos paramejorar el rendimiento.
VXGB_TUNNING_DIR char* R/W "" Directorio en el que se almacenarán laslocuciones y los resultados de
reconocimiento si se ha habilitado elparámetro VXGB_TUNNING_ACT.
VXGB_VVI_ARQ char* W - Especifica el modelo estadístico queserá utilizado por la aplicación. Para
ello, el valor del parámetro debe ser elnombre de la arquitectura que contienelos modelos deseados. Para más detalles
acerca de cómo utilizar elreconocimiento basado en modelosestadísticos, consulte los ejemplos ocontacte con [email protected].
VXGB_START_SPK char* R - Permite obtener el listado de locutoresdisponibles en el motor de síntesis paraser utilizados desde la aplicación. Estafunción devuelve los códigos internosde los locutores, separados por comas.Los códigos internos de los locutores
siguen la siguiente nomenclatura:languageNAME (identificador de
idioma en minúscula seguido de dosletras mayúsculas que identifican al
locutor). Para obtener un listadocompleto de los identificadores de
idioma, consulte la función vx_tts_init yel fichero vxxxlib.h.
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 127
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
VXGB_START_CONF char* R - Permite obtener el listado deconfiguraciones de reconocimiento
disponibles en el motor dereconocimiento para ser utilizadosdesde la aplicación. Esta función
devuelve los códigos internos de lasconfiguraciones, separados por comas.
Los códigos internos de lasconfiguraciones siguen la siguientenomenclatura: LANGUAGE (paraconfiguraciones monolingües) oLANGUAGE-LANGUAGE.... -
LANGUAGE (para configuracionesmultilingües). Para obtener un listado
completo de los identificadores deidioma (de 2 o 5 caracteres), consulte la
función vx_asr_init y el ficherovxxxlib.h.
VXGB_START_VIT char* R - Permite obtener el listado arquitecturasque contienen modelos estadísticos
(SLM) disponibles para ser utilizadasdesde el motor de reconocimiento
estadístico. El listado contiene cada unode los identificadores de las
arquitecturas, separados por comas. Elnombre de las arquitecturas es fijado
por el integrador durante laconstrucción de los modelos
estadísticos. Para más detalles acerca decómo utilizar el reconocimiento basado
en modelos estadísticos, consulte losejemplos o contacte [email protected].
VXGB_START_SLM char* R - Permite obtener el listado de modelosestadísticos (SLM) disponibles dentro
de la arquitectura cargada para serutilizadas desde el motor de
reconocimiento estadístico. El listadocontiene cada uno de los identificadoresde los modelos estadísticos, separados
por comas. El nombre de los modelos esfijado por el integrador durante la
construcción de los mismos. Para másdetalles acerca de cómo utilizar el
reconocimiento basado en modelosestadísticos, consulte los ejemplos ocontacte con [email protected].
VXGB_MAXFRAMES int W 2500 Permite definir la longitud máxima de larespuesta ante un proceso de
reconocimiento. El valor son la cantidadde unidades de 20ms permitidas a lo
largo de todo el proceso, de modo que,con el valor por defecto, la longitudmáxima de audio (antes de lanzar un
nuevo reconocimiento) que puede
Capítulo 3. Estructuras de datos yparámetros
128 Referencia de las funciones del Dialogic SDK Verbio Technologies
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
procesarse es de 50 segundos. El valorde este parámetro es un entero, de modo
que no debe ser superior a 32767.
Tabla 3.2. Parámetros de canal en el SDK de Dialogic
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
VXCH_NBEST int R/W 1 Número máximo de hipótesis generadaspor las funciones de reconocimientovx_recstr() y vx_recstr_open(). Es
muy importante tener en cuenta que unamodificación de este parámetro implicatener que volver a cargar y activar todos
los vocabularios y gramáticapreviamente activos. Por lo tanto, esaconsejable fijar este valor desde un
principio al valor máximo de hipótesisque vayan a requerirse durante el
funcionamiento de toda la aplicación y,según las necesidades de cada
momento, ir solicitando más o menoshipótesis mediante la modificación delparámetro VXCH_ACTIVE_NBEST.
VXCH_ACTIVE_NBEST int R/W 1 Número de hipótesis generadas por lasfunciones de reconocimiento
vx_recstr() y vx_recstr_open(). Adiferencia del parámetro
VXCH_NBEST, la modificación de esteparámetro no afecta a los vocabularios ygramáticas activos, sino únicamente a lacantidad de hipótesis devueltas por losmismos. Sí hay que tener en cuenta, sinembargo, que nunca se podrán solicitarmás hipótesis mediante este parámetro
que las especificadas mediante elparámetro VXCH_NBEST.
VXCH_TTSFREQUENCY int R - Frecuencia de muestreo a la que trabajael motor de síntesis.
VXCH_TTSSPEED int R/W - Velocidad de la conversión de texto avoz en palabras por minuto. El valor por
defecto depende de cada locutor.
VXCH_TTSSPKNAME char* R/W - Nombre del locutor de síntesis activo.El valor inicial dependerá de cómo se
haya configurado el servidor de síntesismediante el Verbio Server
Configuration Manager. Este mismoconfigurador permite ver el nombre de
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 129
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
los locutores asociados a cada uno delos idiomas disponibles.
VXCH_TTSLNG int R/W - Especifica el idioma de síntesismediante una constante (véasevxxxlib.h) que se usará en el
próximo proceso de conversión de textoa habla. Se mantiene por compatibilidad
con versiones anteriores. Para nuevosdesarrollos debería utilizarse el
parámetro VXCH_DEFTTSLANG. Elvalor inicial dependerá de cómo se haya
configurado el servidor de síntesismediante el Verbio ServerConfiguration Manager.
VXCH_DEFTTSLANG char* R/W - Especifica el idioma de síntesis enformato texto (véase vxxxlib.h) que
se usará en el próximo proceso deconversión de texto a habla. En nuevosdesarrollos es la opción recomendadafrente al obsoleto VXCH_TTSLNG. El
valor inicial dependerá de cómo se hayaconfigurado el servidor de síntesis
mediante el Verbio ServerConfiguration Manager.
VXCH_TTSPITCH int R/W - Tono medio de la voz sintetizada. Lasvoces femeninas tienen un tono superiorque el de las voces masculinas. El valor
por defecto depende del locutor.
VXCH_TTSVOLUME int R/W - Volumen de la voz sintetizada. Laamplitud se amplifica
proporcionalmente a la relación entre elnuevo valor y el valor por defecto. Por
lo tanto, la estrategia recomendadaconsiste en consultar el valor actual del
locutor, manipular el valorproporcionalmente para obtener el
volumen deseado y fijarloposteriormente. Se desaconseja puesfijar un valor aleatorio sin conocer el
valor actual de funcionamiento.
VXCH_DEFASRCFG char* R/W - Configuración de reconocimiento pordefecto que se utilizará en cualquier
proceso de reconocimiento hasta que seespecifique lo contrario. El valor inicialdependerá de cómo se haya configuradoel servidor de reconocimiento mediante
el Verbio Server ConfigurationManager.
VXCH_DEFASRLNG char* R/W - Idioma por defecto que usarán lasfunciones vx_prevcb() y
vx_prevcbex() para procesar losficheros de vocabulario. El valor inicial
Capítulo 3. Estructuras de datos yparámetros
130 Referencia de las funciones del Dialogic SDK Verbio Technologies
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
dependerá de cómo se haya configuradoel servidor de reconocimiento mediante
el Verbio Server ConfigurationManager.
VXCH_SERVER char* R/W - Servidor de síntesis y/o reconocimientoal que se conecta el canal (nombre o IP
del equipo). El valor por defectodepende del parámetro
VXGB_DEFSERVER, aunque puedemodificarse con posterioridad para quecada línea pueda especificar su propio
servidor.
VXCH_VOICEDETECTED int R - Indica si se ha detectado voz durante elproceso de reconocimiento (el valor
devuelto en el parámatro es 1).Típicamente la consulta de este
parámetro se realiza entre llamadassucesivas a la función
vx_recstr_write() para conocer elmomento en el que el usuario haempezado a hablar, de modo quepuedan aplicarse, por ejemplo,
estrategias de Barge-in.
VXCH_GRMWEIGHT float R/W 1 Parámetro utilizado para calcular lapenalización que sufre una palabra a lahora de poder ser reconocida. A mayorpenalización, más dificultad para que la
palabra forme parte de la cadenareconocida. La penalización es una
función de tres parámetros: el peso decada palabra especificado en la
gramática (si no se especifica ningunoes 1), el valor de este parámetro y elvalor de VXCH_GRMCONSTANT.
El valor especificado en este parámetrodebe utilizarse cuando se quiera
acentuar la diferencia entre los pesos delas palabras, puesto que la penalizaciónes proporcional a su valor y al peso de
las palabras.
VXCH_GRMCONSTANT float R/W 0 Parámetro utilizado para calcular lapenalización que sufre una palabra a lahora de poder ser reconocida. A mayorpenalización, más dificultad para que la
palabra forme parte de la cadenareconocida. La penalización es una
función de tres parámetros: el peso decada palabra especificado en la
gramática (si no se especifica ningunoes 1), el valor de este parámetro y el
valor de VXCH_GRMWEIGHT.
El valor de este parámetro puede
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 131
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
utilizarse para reducir la aparición deinserciones (aunmentar el valor reducela cantidad de palabras devueltas por elreconocedor) o bien para priorizar las
palabras largas respecto a las másbreves.
VXCH_INITSIL int R - cantidad de muestras (de silencio)acumuladas desde el inicio de la
locución sin que se haya detectado voz,siempre y cuando se estén utilizando las
funciones de detección de actividadvocal vx_vsd_open, vx_vsd_write y
vx_vsd_close
VXCH_FINALSIL int R - cantidad de muestras (de silencio)acumuladas desde que se procesó la
última trama de voz, siempre y cuandose estén utilizando las funciones de
detección de actividad vocalvx_vsd_open, vx_vsd_write y
vx_vsd_close
VXCH_VOICE int R - número de fragmentos de la locuciónque contienen muestras de voz. Cuantomayor sea el silencio final exigido paradar por finalizado un fragmento de voz,menor número de fragmentos deberían
aparecer. Para que esta información estédisponible, deben utilizarse las
funciones de detección de actividadvocal vx_vsd_open, vx_vsd_write y
vx_vsd_close
VXCH_DEACTWORD char* W - permite deshabilitar una regla de unagramática o de todas las gramáticas
activas en un momento determinado. Deeste modo, en entornos en los que se
parta de una gramática compleja que, enbase al diálogo, pueda irse acotando, noes necesario desglosarla en gramáticasmás sencillas a medida que el usuarionavega las opciones, sino que pueden
irse desactivando aquellas reglas que yano aplican en la siguiente posible
respuesta. Con ello se mejora la rapidezy la calidad del reconocimiento sin
apenas coste computacional, puesto queno hay que descargar ni cargar nuevas
gramáticas. El valor del parámetro debeser el nombre de la regla de la gramáticaABNF que debe desactivarse. En caso deque ese nombre pueda estar presentes enotras gramáticas activas en ese instante,puede especificarse el identificador de
la gramática de interés mediante elsiguiente formato:
Capítulo 3. Estructuras de datos yparámetros
132 Referencia de las funciones del Dialogic SDK Verbio Technologies
Define Tipo Lectura(R)/
Escritura(R)
Defecto Descripción
nombre_regla#identificador,donde identificador es el valordevuelto por la función vx_setvcb o
vx_activatevcb. Si se desea desactivaresa regla en todas las gramáticas activas
que la contengas, el parámetro debecontener únicamente el nombre de la
regla.
VXCH_ACTWORD char* W - permite habilitar de nuevo una regla deuna gramática o de todas las gramáticasactivas en un momento determinado quehubiera sido desactivada, previamente,
mediante VXCH_DEACTWORD. Elformato del parámetro debe ser idéntico
al especificado en la descripción deVXCH_DEACTWORD.
VXCH_MINTHRESHOLD float R/W 55 Valor que regula el nivel de poda delmotor de reconocimiento. Cuantomayor es el valor, menos descartes
realiza el motor de reconocimiento, porlo que puede afinarse algo más el
resultado de reconocimiento, aunque acosta de un incremento sustancial delcoste computacional. No se aconsejamodificar el valor de este parámetro,salvo consejo del personal de Verbio.
VXCH_MSSPEECH int R - Permite consultar los milisegundos devoz (excluído el silencio) que se han
recibido en el anterior proceso dereconocimiento.
VXCH_RECSAMPLES int R - Permite consultar los milisegundos deaudio que se han recibido en el anterior
proceso de reconocimiento.
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 133
5. Obtención de información adicional mediante vx_word ovx_wordex
El servidor de reconocimiento, a parte de la palabra o palabras reconocidas y del nivel de confianza de lasmismas, puede proporcionar más datos que pueden resultar de interés en algunos casos: reglas, valores ,locuciones, niveles de confianza y tiempos. Antes de proceder con la explicación de cada uno de estoselementos, es importante que el lector se familiarice con los aspectos relacionados con los vocabulariosconvencionales y las gramáticas ABNF, que encontrará detallados en Verbio Software Reference: Guía delusuario. A continuación se dará una explicación del significado de cada uno de estos campos para poder haceruso de ellos en caso de considerarse necesario.
Tabla 3.3. Elementos de un vocabulario o gramática ABNF
Elemento Descripción
Regla En vocabularios convencionales no se especifica explícitamente, de modo que se leasignará siempre el valor root.
En gramáticas ABNF las reglas ayudan a diseñar, compartir y clarificar el contenido delas mismas. En el ejemplo siguiente, existen 3 reglas: color (regla principal), rgb ycomp.
Valor Los valores son los items que devuelve el servidor como resultado delreconocimiento.
En vocabularios convencionales suele ser el contenido de la primera columna. En elejemplo inferior, alguno de los posibles valores devueltos son: Comercial o Técnico.
En gramáticas ABNF los valores se especifican entre llaves si difieren de la palabra delvocabulario. En el ejemplo siguiente, alguno de los posibles valores devueltos son:COLOR=R o color pero no rojo porque se le ha asociado explícitamente el valorCOLOR=R.
Locución Las locuciones se corresponden con lo que el usuario realmente ha dicho.
En vocabularios convencionales suele ser el contenido de la segunda columna (si sólohay una columna, valor y locución coinciden). En el ejemplo inferior, alguna de lasposibles locuciones devueltas son: Eduardo Campillo o Asunción Chinea.
En gramáticas ABNF son el texto que no tenga asociado ningún valor vacío {}. En elejemplo siguiente, alguna de las posibles locuciones devueltas son: rojo o color perono COLOR=R (se ha especificado como valor) ni por favor (se le ha asociado el valorvacío {}).
Confianza El nivel de confianza es un valor numérico que indica el grado de fiabilidad que se leda al resultado. A mayor valor, mayor probabilidad de que la secuencia reconocida seala correcta.
Intervalo El intervalo de tiempo en el que se ha pronunciado la locución es otro de los datosofrecidos por el servidor de reconocimiento. Concretamente, proporciona el instantede inicio y el instante de finalización de la locución.
El formato del vector de caracteres ASCIIZ devuelto por las funciones vx_word() o vx_wordex es el siguiente:
regla:"locución"(confianza,instante_inicial,instante_final)["valor1" "valor2" "..."]
En caso de no tratarse de una gramática ABNF, el nombre de la regla será root. En caso de tratarse de unagramática ABNF con subreglas (no únicamente una regla principal), el formato del vector de caracteres tendráun formato parecido al siguiente, en el que cada regla termina en ";" y cada subregla está contenida entre
Capítulo 3. Estructuras de datos yparámetros
134 Referencia de las funciones del Dialogic SDK Verbio Technologies
llaves "{}", y en el que debe sustituirse "regla" por todo el texto asociado a cada regla (según se haespecificado en el párrafo anterior).
regla_principal{regla1{regla1_1;regla1_2;};regla2;regla3{regla3_1{regla3_1_1;};};};
La gramática ABNF asociada al ejemplo anterior podría ser parecida a:
#ABNF 1.0 ISO8859-1;root regla_principal = ... $regla1 ... $regla2 ... $regla3;
$regla1 = ... $regla1_1 ... $regla1_2 ...;$regla1_1 = ... ;$regla1_2 = ... ;
$regla2 = ... ;
$regla3 = ... $regla3_1 ... ;$regla3_1 = ... $regla3_1_1 ... ;$regla3_1_1 = ... ;
Vocabulario convencional.
Comercial Eduardo CampilloComercial Asunción ChineaTécnico Marta CuencaAdministración Emilio DobladoAdministración Guillermo EstradaTécnico Sergio Galíndez
Gramática ABNF de múltiples reglas.
#ABNF 1.0 ISO8859-1;$rgb = rojo {COLOR=R} | // se utiliza la palabra "rojo" y devuelve la palabra COLOR=R
verde {COLOR=G} | // se utiliza la palabra "verde" y devuelve la palabra COLOR=Gazul {COLOR=B}; // se utiliza la palabra "verde" y devuelve la palabra COLOR=G
$comp = marino {COMP=D} |osuro {COMP=D} |claro {COMP=L};
root $color = [color | "el color" | el] $rgb [$comp] ["por favor"{}];
Ejemplo 3.1. Información devuelta por el servidor de reconocimiento
Locución dictada: "Eduardo Campillo"
root:"Eduardo Campillo"(158.29,0.50,1.28)["Eduardo Campillo"];
Locución dictada: "El color rojo por favor"
color:"el color rojo"(127.59,0.26,1.00)["el color" "COLOR=R"]{rgb:"rojo"(168.40,0.76,1.00)["COLOR=R"];comp:;};
Locución dictada: "El azul marino"
color:"el azul marino"(185.46,0.56,1.37)["el" "COLOR=B" "COMP=D"]{rgb:"azul"(93.27,0.76,1.00)["COLOR=B"];comp:"marino"(318.19,1.00,1.37)["COMP=D"];};
Capítulo 3. Estructuras de datos yparámetros
Verbio Technologies Referencia de las funciones del Dialogic SDK 135
Capítulo 4. Código de ejemplos enC/C++
NotaEl Apéndice A contiene los ficheros de vocabularios, gramáticas y diccionarios utilizados en losejemplos de esta sección.
1. Ejemplo Síncrono
Ejemplo 4.1. Ejemplo síncrono de Verbio Dialogic
/******************************************************************************* DESCRIPTION: Verbio Synchronous Sample* Copyright (C) 2003 ATLAS-CTI********************************************************************************/
#include <stdio.h>#include <string.h>#include <fcntl.h>#include <direct.h>#include <signal.h>
#include <windows.h>#include <speech.h>#include <srllib.h>#include <dxxxlib.h>#include <vxxxlib.h>
/* Maximum number of channels */#define MAXCHAN 12
/* For the recognition part */#define TN_DISC 116#define NBEST 10
//Thread processDWORD WINAPI ThreadProc(LPVOID);
//Validate NIF formatint validate(const char *number);
//ASR & TTS functionlong PlayStr(int chdev, const char *str);long RecStr(int chdev, const char *filename, int maxsil);
//Error functionsvoid vx_error(const char *function, int chdev);void dx_error(const char *function, int chdev);
//Global variablesint nASR = 0, nTTS = 0, NoOfThreads = 0;int connected = -1;int active = 1;
//Interrupted Signal (CTRL+C) functionstatic void intr_hdlr(void){
printf("*******Received User Interrupted Signal*******\n");active = 0;
}
//Client-Server disconnection functionvoid srvclose(const char *server) {
connected = -1;
vx_libclose();
do {Sleep(2000);vx_setparm(-1, VXGB_DEFSERVER, server);
} while (vx_libinit(LVX_SPANISH) < 0);
connected = 0;}
int main(int argc, char *argv[]){
int i, chdev, error, mode;char channel[16];int chdevmain[MAXCHAN];
HANDLE hThread[MAXCHAN];unsigned long dwThreadId;unsigned long dwfilever, dwprodver;
signal(SIGINT, (void (__cdecl*)(int)) intr_hdlr);signal(SIGTERM, (void (__cdecl*)(int)) intr_hdlr);
int NoOfChannels = 1;
const char *DefServer = "127.0.0.1";
//Application parametersif (argc > 1) NoOfChannels = abs(atoi(argv[1])); //Number of channels to openif (argc > 2) DefServer = argv[2]; //Verbio Server IP Address
/********************************//* CLIENT - SERVER & STARTUP *//********************************/
Capítulo 4. Código de ejemplos en C/C++
138 Referencia de las funciones del Dialogic SDK Verbio Technologies
#ifdef _DEBUGint timeout = -1;
#elseint timeout = 5;
#endif
//Set callback function to process disconnection events
vx_regsrvclose((VX_SRVCLOSE*) srvclose);
do {
vx_setparm(-1, VXGB_DEFSERVER, DefServer);
if (ATVX_LASTERR(-1) == EVX_NETWORK)return -1;
vx_setparm(-1, VXGB_NETTIMEOUT, &timeout);
connected = vx_asr_init(CFG_SPANISH_CATALAN, LNG_SPANISH);
if (connected >= 0)
connected = vx_tts_init(0, LNG_SPANISH);
} while (connected < 0);
// Get Verbio Product Version
vx_GetDllVersion(&dwfilever, &dwprodver);printf("SAMPLE. Verbio %d.%02d\n\n", HIWORD(dwprodver), LOWORD(dwprodver));
// Get number of licenses for vx_recstr
nASR = vx_getasrlic(CFG_SPANISH_CATALAN);printf(" * ASR licenses: %2d\n", nASR);
// Get number of licenses for vx_playstr
nTTS = vx_getttslic(LNG_SPANISH);printf(" * TTS licenses: %2d\n\n", nTTS);
vx_getparm(-1, VXGB_LICMODE, &mode);
if (mode & LIC_ASR_CATALAN) printf(" * ASR Catalan : Yes\n");else printf(" * ASR Catalan : No\n");if (mode & LIC_TTS_CATALAN) printf(" * TTS Catalan : Yes\n");else printf(" * TTS Catalan : No\n");if (mode & LIC_EVALUATION) printf(" * Evaluation\n");if (mode & LIC_LITE) printf(" * Lite\n");
/************************************//* PREPARING VOCABULARIES *//************************************/
if (nASR) {
if (vx_prevcbex("comandos.txt", EV_SYNC, &error) < 0) {if (ATVX_LASTERR(-1) == EVX_INVWORD)
return error;}
if (vx_prevcb("nif_numeric.bnf", EV_SYNC | GVX_ABNF) <0 ) {if (ATVX_LASTERR(-1) == EVX_PARSER)
return -1;}
}
/************************************//* LAUNCHING TRHREADS *//************************************/for (i=0; i<NoOfChannels; i++) {
//Open channelsprintf(channel, "dxxxB%1dC%1d", (i/4)+1, (i%4)+1);if ((chdev = dx_open(channel, 0)) == -1)
break;
chdevmain[NoOfThreads++] = chdev;
// Stop active I/O functionsif (dx_stopch(chdev, EV_SYNC) == -1)
dx_error("dx_stopch", chdev);
// Deletes all previous tone templatesif (dx_deltones(chdev) == -1)
dx_error("dx_deltones", chdev);
// Generate Disconnect tone templateif (dx_bldstcad(TN_DISC, 425, 10, 20, 2, 20, 2, 2) == -1)
dx_error("dx_bldstcad", chdev);
// Add tone templateif (dx_addtone(chdev, 0, 0) == -1)
dx_error("dx_addtone", chdev);
// Disable TONE OFF Detectionif (dx_distone(chdev, TN_DISC, DM_TONEOFF) == -1)
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 139
dx_error("dx_distone", chdev);
hThread[i] = CreateThread(NULL, 8096, ThreadProc,(LPVOID) &(chdevmain[i]), CREATE_SUSPENDED, &dwThreadId);
SetThreadPriority(hThread[i], THREAD_PRIORITY_NORMAL);}
for (i=0; i<NoOfThreads; i++) {ResumeThread(hThread[i]);Sleep(1500);
}
WaitForMultipleObjects(NoOfThreads, hThread, TRUE, INFINITE);
for (i=0; i<NoOfThreads; i++) {CloseHandle(hThread[i]);
vx_devclose(chdevmain[i]);}
//Free ASR+TTS resources
vx_srvclose(DefServer);
vx_libclose();
return 0;}
DWORD WINAPI ThreadProc(LPVOID ichdev){
int i, nind, ibest, error, nbest = NBEST, hNIF, hVOC;float score[32], filename[_MAX_PATH], mscore;int index[32];char string[256], nif[256];
int chdev = * (int *) ichdev;
TTSMODEINFO TTSModeInfo;HSAPI english = NULL;
//Set Dictionary and Abbreviations
if (vx_SetDictionary(chdev, LNG_SPANISH, "dictionary.txt") != 0) {vx_error("vx_SetDictionary", chdev);return ATVX_LASTERR(chdev);
}
if (vx_SetAbbreviations(chdev, LNG_SPANISH, "abbreviations.txt") != 0) {vx_error("vx_SetAbbreviations", chdev);return ATVX_LASTERR(chdev);
}
sprintf(filename, "grammar%d.bnf", chdev);
if (vx_prevcbdev(chdev, filename, EV_SYNC, &error, LNG_SPANISH) < 0) {vx_error("vx_prevcbdev", chdev);
return ATVX_LASTERR(chdev);}
while (active) {while (connected < 0)
Sleep(200);
if (vx_reccfg_wait(chdev, 500, CFG_SPANISH_CATALAN) < 0)continue;
if (vx_setparm(chdev, VXCH_NBEST, (void *) &nbest) != 0)continue;
//COMMAND vocabularies (always active): help, repeat...
if (vx_setvcb(chdev, "comandos.txt", EV_SYNC | GVX_ISOLATED) != 0)continue;
//ABNF Grammar
if ((hNIF = vx_loadvcb(chdev, "nif_numeric.bnf", EV_SYNC | GVX_ABNF)) < 0)continue;
// Open English TTS Modememset(&TTSModeInfo, 0, sizeof(TTSModeInfo));TTSModeInfo.dwFeatures = TTSFEATURE_PHONEOPTIMIZED;TTSModeInfo.language.LanguageID = MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL);
if (vx_SapiOpen(chdev, &TTSModeInfo, &english, EV_SYNC) != 0 || !english)continue;
while (active) {// Stop active I/O functionsdx_stopch(chdev, EV_SYNC);dx_sethook(chdev, DL_ONHOOK, EV_SYNC);
printf("\n%s: ONHOOK -------------------\n\n", ATDV_NAMEP(chdev));
if (connected < 0)break;
Capítulo 4. Código de ejemplos en C/C++
140 Referencia de las funciones del Dialogic SDK Verbio Technologies
do {dx_wtring(chdev, 1, DL_OFFHOOK, 1);
} while (active && ATDX_HOOKST(chdev) != DX_OFFHOOK);
if (!active)break;
printf("%s: OFFHOOK -------------------\n", ATDV_NAMEP(chdev));
if (vx_activatevcb(chdev, hNIF, EV_SYNC) < 0)break;
if (vx_SapiSelect(chdev, english) != 0)break;
strcpy(string, "Welcome to this demonstration of connected number's recognition.");if (PlayStr(chdev, string) & (TM_LCOFF | TM_TONE))
break;
if (vx_SapiSelect(chdev, NULL) != 0)break;
strcpy(string, "Bienvenido al sistema de reconocimiento de números nif en castellano.");
if (PlayStr(chdev, string) & (TM_LCOFF | TM_TONE))break;
while(active) {
strcpy(string, "Por favor, dicte su NIF dígito a dígito.");repeat:
if (PlayStr(chdev, string) & (TM_LCOFF | TM_TONE))break;
if (RecStr(chdev, "record.esu", 150) & (TM_LCOFF | TM_TONE))break;
for (ibest = 0; ibest < nbest; ++ibest) {
if ((nind = vx_nbest(chdev, 10, index, score, ibest, EV_SYNC)) < 0)continue;
if ((hVOC = ATVX_IVCB(chdev)) < 0)continue;
if (hVOC != hNIF) { //COMMANDfor (i = 0; i < nind; ++i) {
if (!strcmp(vx_word(chdev, index[i]), "REPEAT") && score[i] > 25.0) {strcpy(string, "Por favor, diga, dígito a dígito, el número de su nif, \junto con la letra correspondiente");goto repeat;
}else if (!strcmp(vx_word(chdev, index[i]), "HELP") && score[i] > 25.0) {
strcpy(string, "Debe dictar su Número de Identificación Fiscal, \dígito a dígito y luego la letra. Por ejemplo: <RATE SPEED=\"-20%\"> \3 2 4 2 5 5 6 0 B. </RATE>. <BREAK MSEC=500> ¿Cuál es su nif?");goto repeat;
}else if (!strcmp(vx_word(chdev, index[i]), "HOME") && score[i] > 25.0)
goto repeat;}continue;
}else { //NIF
*nif = 0;mscore = 0;for (i = 0; i < nind; ++i) {
if (score[i] < 5.0)continue;
mscore += score[i];strcat(nif, vx_word(chdev, index[i]));
}mscore /= nind;printf("%s\t%d\t", nif, (int)mscore);
if (validate(nif)) {printf("VALID\n");
printf("La letra se ha pronunciado como %s y ha tenido confianza %f\n", vx_wordrule(chdev, "nif.letra", 1, $mscore), mscore);break;
} else {printf("INVALID\n");*nif = 0;
}}
}
if (nind <= 0)strcpy(string, "Lo siento, no se ha reconocido nada");
else if (*nif == 0)strcpy(string, "Lo siento, no se ha reconocido ningún número de nif válido.");
elsesprintf(string, "El número de nif reconocido, es el <RATE SPEED=150> %s </RATE>", nif);
if (PlayStr(chdev, string) & (TM_LCOFF | TM_TONE))break;
}
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 141
if (vx_deactivatevcb(chdev, hNIF, EV_SYNC) < 0)break;
}
vx_SapiClose(chdev, english);
vx_unloadvcb(chdev, -1, EV_SYNC);
vx_reccfg_release(chdev, CFG_SPANISH_CATALAN);}
vx_thclose();
return 0;}
int validate(const char *number) {
const char *letter = "TRWAGMYFPDXBNJZSQVHLCKET";const char *n = number;char dni[9];int ndigits;
for (ndigits = 0; ndigits < 8; ++n) {if (*n == 0)
return 0;if (*n >= 'A' && *n <= 'Z')
break;if (*n >= '0' && *n <= '9')
dni[ndigits++] = *n;}dni[ndigits] = 0;if (ndigits < 7) return 0;
for (; *n < 'A' || *n > 'Z'; ++n)if (*n == 0) return 0;
return (letter[atoi(dni) % 23] == *n);}
long PlayStr(int chdev, const char *string){
DV_TPT ptpt[3];
ptpt[0].tp_type = IO_CONT;ptpt[0].tp_termno = DX_MAXDTMF;ptpt[0].tp_length = 1;ptpt[0].tp_flags = TF_MAXDTMF;
ptpt[1].tp_type = IO_CONT;ptpt[1].tp_termno = DX_TONE;ptpt[1].tp_length = TN_DISC;ptpt[1].tp_flags = TF_TONE;ptpt[1].tp_data = DX_TONEON;
ptpt[2].tp_type = IO_EOT;ptpt[2].tp_termno = DX_LCOFF;ptpt[2].tp_length = 1;ptpt[2].tp_flags = TF_LCOFF;
if (vx_getusedttslic() < 1)return -1;
if (NoOfThreads > nTTS) {
if (vx_playstr_wait(chdev, 500)) return -1;}
if (vx_playstr(chdev, string, ptpt, EV_SYNC) < 0) {vx_error("vx_playstr", chdev);return -1;
}
if (NoOfThreads > nTTS) {
if (vx_playstr_release(chdev)) return -1;}
printf("%s: %s\n", ATDV_NAMEP(chdev), string);
return ATDX_TERMMSK(chdev);}
long RecStr(int chdev, const char *filename, int maxsil){
DV_TPT ptpt[4];VX_RSP rsp;
ptpt[0].tp_type = IO_CONT;ptpt[0].tp_termno = DX_MAXTIME;ptpt[0].tp_length = 100;ptpt[0].tp_flags = TF_MAXTIME;
ptpt[1].tp_type = IO_CONT;ptpt[1].tp_termno = DX_MAXDTMF;ptpt[1].tp_length = 1;ptpt[1].tp_flags = TF_MAXDTMF;
Capítulo 4. Código de ejemplos en C/C++
142 Referencia de las funciones del Dialogic SDK Verbio Technologies
ptpt[2].tp_type = IO_CONT;ptpt[2].tp_termno = DX_TONE;ptpt[2].tp_length = TN_DISC;ptpt[2].tp_flags = TF_TONE;ptpt[2].tp_data = DX_TONEON;
ptpt[3].tp_type = IO_EOT;ptpt[3].tp_termno = DX_LCOFF;ptpt[3].tp_length = 1;ptpt[3].tp_flags = TF_LCOFF;
vx_clrrsp(&rsp);rsp.io_fhandle = dx_fileopen(filename, (O_CREAT | O_WRONLY | O_BINARY | O_TRUNC), 0666);rsp.maxsil = maxsil;
if (vx_getusedasrlic() < 1)return -1;
if (NoOfThreads > nASR) {
if (vx_recstr_wait(chdev, 500))return -1;
}
if (vx_recstr(chdev, ptpt, &rsp, RM_TONE | EV_SYNC) < 0) {vx_error("vx_recstr", chdev);if (rsp.io_fhandle != -1) {
dx_fileclose(rsp.io_fhandle);rsp.io_fhandle = -1;
}return -1;
}if (rsp.io_fhandle != -1) {
dx_fileclose(rsp.io_fhandle);rsp.io_fhandle = -1;
}
if (NoOfThreads > nASR) {
if (vx_recstr_release(chdev))return -1;
}
return ATDX_TERMMSK(chdev);}
/********************************************//* ERROR FUNCIONS *//********************************************/void vx_error(const char *function, int chdev){
const char *msg;int ierror = ATVX_LASTERR(chdev);
if (chdev == -1) {
printf("*** ERROR: %s failed. %s ***\n", function, ATVX_ERRMSGP(chdev));}else {
if ((ierror == EVX_SRERROR) || (ierror == EVX_DXERROR))msg = ATDV_ERRMSGP(chdev);
elsemsg = ATVX_ERRMSGP(chdev);
printf("%s *** ERROR: %s failed. %s ***\n", ATDV_NAMEP(chdev), function, msg);}
}
void dx_error(const char *function, int chdev){
printf("%s *** ERROR: %s failed. %s ***\n", ATDV_NAMEP(chdev), function, ATDV_ERRMSGP(chdev));}
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 143
2. Ejemplo Asíncrono
Ejemplo 4.2. Ejemplo asíncrono de Verbio Dialogic
/******************************************************************************* DESCRIPTION: Verbio Asynchronous Sample* Copyright (C) 2003 ATLAS-CTI********************************************************************************/
#include <windows.h>#include <stdio.h>
#include <srllib.h>#include <dxxxlib.h>#include "vxxxlib.h"
#define NOMBRES1 "nombres1.txt"#define NOMBRES2 "nombres2.txt"#define DICTIONARY "dic.txt"#define TN_DISC 116
static int numrings = 1;static int nASR = 0;static int nTTS = 0;
int process_event(unsigned long);char *strcatdig(char *str, const char *dig);void vx_error(const char *function, int chdev);void dx_error(const char *function, int chdev);int vx_getlicmode();void init_tpt(void);void print_event(unsigned long ehandle);char *EVENTP(long event);char *CST_EVENTP(unsigned short cst_event);char *HOOK_EVENTP(unsigned short cst_event);void printf_term(long term);
DV_TPT playstr_ptpt[1];DV_TPT recstr_ptpt[2];DV_TPT getdig_ptpt[3];
struct {int index[32];float score[32];DV_DIGIT digit;VX_RSP rsp;int state;
} chinfo[64];
typedef enum {ST_NULL,ST_RESET,ST_ONHOOK,ST_RINGS,ST_OFFHOOK,ST_WELCOME,ST_PROMPT,ST_THANKS,ST_SEQUENCE,ST_RECIND,ST_RESULT,ST_DIGIT,ST_GETDIG,ST_END,
} app_states;
void info_reset(int chdev){
if (ATDX_STATE(chdev) != CS_IDLE)dx_stopch(chdev, EV_ASYNC);
chinfo[chdev].state = ST_NULL;vx_clrrsp(&chinfo[chdev].rsp);
}
int main(int argc, char *argv[]){
int chdev[32];const char *speaker = "carlos";const char *server = "127.0.0.1";int language = LVX_SPANISH;unsigned long evt_handle;int i, nchannels = 2;char channel[16];unsigned long dwfilever = 0, dwprodver = 0;
if (argc > 1)nchannels = abs(atoi(argv[1]));
if (argc > 2)server = argv[2];
init_tpt();
vx_setparm(-1, VXGB_DEFSERVER, server);
Capítulo 4. Código de ejemplos en C/C++
144 Referencia de las funciones del Dialogic SDK Verbio Technologies
// Init Verbio libraryprintf("Initializing Verbio. Please wait ...\n\n");if (vx_libinit(LVX_SPANISH) == -1) {
vx_error("vx_libinit", -1);printf("\nPress any key to continue");getchar();return ATVX_LASTERR(-1);
}
// Get Verbio Product Versionvx_GetDllVersion(&dwfilever, &dwprodver);printf("TESTVX_EVT. Verbio %d.%02d\n", HIWORD(dwprodver), LOWORD(dwprodver));printf("------------------------------------------\n");
// Get number of licenses for vx_recstrif (vx_getparm(-1, VXGB_RECSTRLIC, &nASR) == -1) {
vx_error("vx_getparm", -1);return ATVX_LASTERR(-1);
}printf(" * ASR licenses: %2d\n", nASR);
// Get number of licenses for vx_playstrif (vx_getparm(-1, VXGB_PLAYSTRLIC, &nTTS) == -1) {
vx_error("vx_getparm", -1);return ATVX_LASTERR(-1);
}printf(" * TTS licenses: %2d\n", nTTS);printf(" * TTS speaker : %s\n\n", speaker);
vx_getlicmode();
if (nASR) {
if (vx_ApplyDictionary(NOMBRES1, NOMBRES2, DICTIONARY)) {printf("*** ERROR: vx_ApplyDictionary(...) failed. %s ***\n", ATVX_ERRMSGP(-1));return ATVX_LASTERR(-1);
}
if (vx_prevcbex2(NOMBRES2, EV_SYNC, &error, LNG_SPANISH) < 0) {printf("*** ERROR: vx_prevcbex2(\"%s\") failed. %s ***\n", NOMBRES2, ATVX_ERRMSGP(-1));return ATVX_LASTERR(-1);
}}
printf("\nDevice Event\n");printf("--------------------------------------------\n");
for (i=0; i<nchannels; i++) {sprintf(channel, "dxxxB%1dC%1d", (i/4)+1, (i%4)+1);if ((chdev[i] = dx_open(channel, 0)) == -1) {
printf("*** ERROR: dx_open(\"%s\") failed. ***\n", channel);break;
}
// Set servervx_setparm(chdev[i], VXCH_SERVER, server);
// Stop active I/O functionsif (dx_stopch(chdev[i], EV_SYNC) == -1)
dx_error("dx_stopch", chdev[i]);
// Deletes all previous tone templatesif (dx_deltones(chdev[i]) == -1)
dx_error("dx_deltones", chdev[i]);
// Generate Disconnect tone templateif (dx_bldstcad(TN_DISC, 425, 10, 20, 2, 20, 2, 2) == -1)
dx_error("dx_bldstcad", chdev[i]);
// Add tone templateif (dx_addtone(chdev[i], 0, 0) == -1)
dx_error("dx_addtone", chdev[i]);
// Disable TONE OFF Detectionif (dx_distone(chdev[i], TN_DISC, DM_TONEOFF) == -1)
dx_error("dx_distone", chdev[i]);
// Set number of ringsdx_setparm(chdev[i], DXCH_RINGCNT, &numrings);
// Reset stateinfo_reset(chdev[i]);
// Set TTS Speakerif (vx_setparm(chdev[i], VXCH_TTSSPKNAME, speaker) == -1)
vx_error("vx_setparm", chdev[i]);
// Set TTS Languageif (vx_setparm(chdev[i], VXCH_TTSLNG, &language) == -1)
vx_error("vx_setparm", chdev[i]);
// Set Active Vocabulary
if (vx_setvcb(chdev[i], NOMBRES2, EV_ASYNC | GVX_ISOLATED) == -1)vx_error("vx_setvcb", chdev[i]);
// Next statechinfo[chdev[i]].state = ST_RESET;
}
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 145
while (1) {sr_waitevtEx((long *) chdev, nchannels, -1, (long *) &evt_handle);process_event(evt_handle);
}
return 0;}
int process_event(unsigned long ehandle){
int chdev = sr_getevtdev(ehandle);char string[256];DX_EBLK *eblk;int nind;
print_event(ehandle);
switch(sr_getevttype(ehandle)) {case TDX_SETHOOK:
break;
case TDX_PLAY:
if (vx_termplaystr(chdev) < 0)vx_error("vx_termplaystr", chdev);
if (ATDX_TERMMSK(chdev) & TM_MAXDTMF)chinfo[chdev].state = ST_DIGIT;
if (ATDX_TERMMSK(chdev) & TM_ERROR)info_reset(chdev);
break;
case TDX_RECORD:
if (vx_termrecstr(chdev) < 0)vx_error("vx_termrecstr", chdev);
if (ATDX_TERMMSK(chdev) & TM_MAXDTMF)chinfo[chdev].state = ST_DIGIT;
if (ATDX_TERMMSK(chdev) & TM_ERROR)info_reset(chdev);
break;
case TDX_GETDIG:if (ATDX_TERMMSK(chdev) & TM_ERROR)
info_reset(chdev);break;
case TDX_CST:eblk = (DX_EBLK *) sr_getevtdatap(ehandle);switch(eblk->ev_event) {case DE_RINGS:
chinfo[chdev].state = ST_RINGS;break;
default:info_reset(chdev);return 0;break;
}break;
case TDX_ERROR:info_reset(chdev);break;
default:break;
}
switch(chinfo[chdev].state++) {case ST_RESET:
if (dx_clrdigbuf(chdev) == -1)dx_error("dx_clrdigbuf", chdev);
else if (dx_sethook(chdev, DL_ONHOOK, EV_ASYNC) == -1)dx_error("dx_sethook", chdev);
break;
case ST_ONHOOK:if (dx_setevtmsk(chdev, DM_RINGS | DM_LCOFF) == -1)
dx_error("dx_setevtmsk", chdev);break;
case ST_RINGS:if (dx_sethook(chdev, DL_OFFHOOK, EV_ASYNC) == -1)
dx_error("dx_sethook", chdev);break;
case ST_OFFHOOK:strcpy(string, "Bienvenido a la demostración de los sistemas de ");strcat(string, "reconocimiento y conversión texto a voz en castellano. ");
if (vx_playstr(chdev, string, playstr_ptpt, EV_ASYNC) < 0)vx_error("vx_playstr", chdev);
break;
case ST_WELCOME:strcpy(string, "Tras oir la señal indique un nombre o departamento de la lista");if (vx_playstr(chdev, string, playstr_ptpt, EV_ASYNC) < 0)
vx_error("vx_playstr", chdev);break;
case ST_PROMPT:
Capítulo 4. Código de ejemplos en C/C++
146 Referencia de las funciones del Dialogic SDK Verbio Technologies
vx_clrrsp(&chinfo[chdev].rsp);chinfo[chdev].rsp.maxsil = 50;
if (vx_recstr(chdev, recstr_ptpt, &chinfo[chdev].rsp, RM_TONE | EV_ASYNC) < 0)vx_error("vx_recstr", chdev);
break;
case ST_THANKS:if (vx_playstr(chdev, "Gracias", playstr_ptpt, EV_ASYNC) < 0)
vx_error("vx_playstr", chdev);break;
case ST_SEQUENCE:
if (vx_recind(chdev, 1, chinfo[chdev].index, chinfo[chdev].score, EV_ASYNC) == -1)vx_error("vx_recind", chdev);
break;
case ST_RECIND:
nind = ATVX_NIND(chdev);if ((nind > 0) && (chinfo[chdev].score[0] > 35.0)) {
sprintf(string, "El nombre reconocido es %s",vx_word(chdev, chinfo[chdev].index[0]));
}else if ((nind > 0) && (chinfo[chdev].score[0] > 25.0)) {
sprintf(string, "El nombre más parecido de la lista es %s",vx_word(chdev, chinfo[chdev].index[0]));
}else if ((nind > 0) || (chinfo[chdev].index[0] == IND_NOWORD)) {
strcpy(string, "Lo siento, no se ha reconocido ningún nombre de la lista");}else {
strcpy(string, "Lo siento, no se ha reconocido nada");}
case ST_RESULT:if (vx_playstr(chdev, string, playstr_ptpt, EV_ASYNC) < 0)
vx_error("vx_playstr", chdev);else
chinfo[chdev].state = ST_WELCOME;break;
case ST_DIGIT:if (dx_getdig(chdev, getdig_ptpt, &chinfo[chdev].digit, EV_ASYNC) < 0)
dx_error("dx_getdig", chdev);break;
case ST_GETDIG:strcpy(string, "La secuencia de tonos detectada es");strcatdig(string, chinfo[chdev].digit.dg_value);dx_clrdigbuf(chdev);if (dx_clrdigbuf(chdev) == -1)
dx_error("dx_clrdigbuf", chdev);else if (vx_playstr(chdev, string, playstr_ptpt, EV_ASYNC) < 0)
vx_error("vx_playstr", chdev);else
chinfo[chdev].state = ST_WELCOME;break;
case ST_END:case ST_NULL:default:
info_reset(chdev);break;
}
if (chinfo[chdev].state == 0) {info_reset(chdev);if (vx_setvcb(chdev, NOMBRES2, EV_ASYNC | GVX_ISOLATED) != 0)
vx_error("vx_setvcb", chdev);chinfo[chdev].state = ST_RESET;
}
return 0;}
char * strcatdig(char *str, const char *dig){
static char *table[10] = {" cero"," uno"," dos"," tres"," cuatro"," cinco"," seis"," siete"," ocho"," nueve"};
unsigned int i;
for (i=0; i<strlen(dig); i++) {if ((dig[i]>='0') && (dig[i]<='9')) {
strcat(str, table[dig[i]-'0']);}
}return str;
}
void vx_error(const char *function, int chdev){
const char *msg;int ierror = ATVX_LASTERR(chdev);
if (chdev == -1) {printf("*** ERROR: %s failed. %s ***\n", function, ATVX_ERRMSGP(chdev));
}else {
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 147
if ((ierror == EVX_SRERROR) || (ierror == EVX_DXERROR))msg = ATDV_ERRMSGP(chdev);
elsemsg = ATVX_ERRMSGP(chdev);
printf("%s *** ERROR: %s failed. %s ***\n", ATDV_NAMEP(chdev), function, msg);}info_reset(chdev);
}
void dx_error(const char *function, int chdev){
printf("%s *** ERROR: %s failed. %s ***\n", ATDV_NAMEP(chdev), function, ATDV_ERRMSGP(chdev));info_reset(chdev);
}
void init_tpt(void){
/* playstr */playstr_ptpt[0].tp_type = IO_EOT;playstr_ptpt[0].tp_termno = DX_MAXDTMF;playstr_ptpt[0].tp_length = 1;playstr_ptpt[0].tp_flags = TF_MAXDTMF;
/* recstr */recstr_ptpt[0].tp_type = IO_CONT;recstr_ptpt[0].tp_termno = DX_MAXTIME;recstr_ptpt[0].tp_length = 100;recstr_ptpt[0].tp_flags = TF_MAXTIME;
recstr_ptpt[1].tp_type = IO_EOT;recstr_ptpt[1].tp_termno = DX_MAXDTMF;recstr_ptpt[1].tp_length = 1;recstr_ptpt[1].tp_flags = TF_MAXDTMF;
/* getdig */getdig_ptpt[0].tp_type = IO_CONT;getdig_ptpt[0].tp_termno = DX_MAXTIME;getdig_ptpt[0].tp_length = 30;getdig_ptpt[0].tp_flags = TF_MAXTIME;
getdig_ptpt[1].tp_type = IO_CONT;getdig_ptpt[1].tp_termno = DX_MAXSIL;getdig_ptpt[1].tp_length = 20;getdig_ptpt[1].tp_flags = TF_MAXSIL;
getdig_ptpt[2].tp_type = IO_EOT;getdig_ptpt[2].tp_termno = DX_MAXDTMF;getdig_ptpt[2].tp_length = 3;getdig_ptpt[2].tp_flags = TF_MAXDTMF;
}
static void print_event(unsigned long ehandle){
int evtdev = sr_getevtdev(ehandle);long evttype = sr_getevttype(ehandle);long term = -1;DX_EBLK *eblk;
printf("%s %s ", ATDV_NAMEP(evtdev), EVENTP(evttype));
switch (evttype) {case TDX_GETDIG:case TDX_PLAY:case TDX_RECORD:
term = ATDX_TERMMSK(evtdev);printf_term(term);break;
case TDX_CST:eblk = (DX_EBLK *) sr_getevtdatap(ehandle);printf("%s", CST_EVENTP(eblk->ev_event));break;
case TDX_SETHOOK:eblk = (DX_EBLK *) sr_getevtdatap(ehandle);printf("%s", HOOK_EVENTP(eblk->ev_event));break;
case TVX_RECIND:printf("%d", ATVX_NIND(evtdev));// printf(" (%d)", *((int *) sr_getevtdatap(ehandle)));break;
default:break;
}printf("\n");
}
char *EVENTP(long event){
switch (event) {case TDX_PLAY: return "TDX_PLAY ";case TDX_PLAYTONE: return "TDX_PLAYTONE";case TDX_RECORD: return "TDX_RECORD ";case TDX_GETDIG: return "TDX_GETDIG ";case TDX_DIAL: return "TDX_DIAL ";case TDX_CALLP: return "TDX_CALLP ";case TDX_CST: return "TDX_CST ";case TDX_SETHOOK: return "TDX_SETHOOK ";case TDX_WINK: return "TDX_WINK ";
Capítulo 4. Código de ejemplos en C/C++
148 Referencia de las funciones del Dialogic SDK Verbio Technologies
case TDX_ERROR: return "TDX_ERROR ";
case TVX_SETVCB: return "TVX_SETVCB ";case TVX_RECIND: return "TVX_RECIND ";case TVX_SELECT: return "TVX_SELECT ";case TVX_ERROR: return "TVX_ERROR ";
default: return "????????????";}
}
char *CST_EVENTP(unsigned short cst_event){
switch (cst_event) {case DE_DIGITS: return "DE_DIGITS ";case DE_LCOFF: return "DE_LCOFF ";case DE_LCON: return "DE_LCON ";case DE_LCREV: return "DE_LCREV ";case DE_RINGS: return "DE_RINGS ";case DE_RNGOFF: return "DE_RNGOFF ";case DE_SILOFF: return "DE_SILOFF ";case DE_SILON: return "DE_SILON ";case DE_TONEOFF: return "DE_TONEOFF ";case DE_TONEON: return "DE_TONEON ";case DE_WINK: return "DE_WINK ";default: return "????????????";}
}
char *HOOK_EVENTP(unsigned short cst_event){
switch (cst_event) {case DX_OFFHOOK: return "DX_OFFHOOK ";case DX_ONHOOK: return "DX_ONHOOK ";default: return "????????????";}
}
void printf_term(long term){
if (term == AT_FAILURE) {printf("AT_FAILURE ");return;
};
if (term == TM_NORMTERM) printf("TM_NORMTERM ");if (term & TM_MAXDTMF) printf("TM_MAXDTMF ");if (term & TM_MAXSIL) printf("TM_MAXSIL ");if (term & TM_MAXNOSIL) printf("TM_MAXNOSIL ");if (term & TM_LCOFF) printf("TM_LCOFF ");if (term & TM_IDDTIME) printf("TM_IDDTIME ");if (term & TM_MAXTIME) printf("TM_MAXTIME ");if (term & TM_DIGIT) printf("TM_DIGIT ");if (term & TM_PATTERN) printf("TM_PATTERN ");if (term & TM_USRSTOP) printf("TM_USRSTOP ");if (term & TM_EOD) printf("TM_EOD ");if (term & TM_TONE) printf("TM_TONE ");if (term & TM_ERROR) printf("TM_ERROR ");
}
int vx_getlicmode() {// Get license modeint mode;if (vx_getparm(-1, VXGB_LICMODE, &mode) == 0) {
if (mode & LIC_ASR_CATALAN)printf(" * ASR Catalan : Yes\n");
elseprintf(" * ASR Catalan : No\n");
if (mode & LIC_TTS_CATALAN)printf(" * TTS Catalan : Yes\n");
elseprintf(" * TTS Catalan : No\n");
if (mode & LIC_EVALUATION)printf(" * Evaluation\n");
if (mode & LIC_LITE)printf(" * Lite\n");
}return 0;
}
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 149
3. Ejemplo con Barge-in
Ejemplo 4.3. Ejemplo con barge-in de Verbio Dialogic
/******************************************************************************* FILE: testvx_csp.c* DESCRIPTION: Verbio Barge-in Demo* Copyright (C) 2003 ATLAS-CTI********************************************************************************/
#include <stdio.h>#include <string.h>#include <fcntl.h>
#include "windows.h"#include "srllib.h"#include "dxxxlib.h"#include "vxxxlib.h"#include "eclib.h"
void vxec_setup(int dev);int vxec_wait(long ec_dev, long timeout, long maxspeechtimeout);int vxec_recstr(int chdev, DV_TPT *tptp, DX_XPB *xpbp, unsigned int mode);int vxec_stopch(int chdev, unsigned int mode);
/* Maximum number of channels */#define MAXCHAN 32
/* For the recognition part */#define NOMBRES "nombres.txt"#define TN_DISC 116
DWORD WINAPI ThreadProc(LPVOID);long PlayStr(int dev, const char *str);long PlayRecStr(int chdev, const char *string);int CheckWords(const char *vcb, int language);void vx_error(const char *function, int chdev);void dx_error(const char *function, int chdev);int vx_getlicmode();
int chdevmain[MAXCHAN];
int main(int argc, char *argv[]){
int nASR = 0;int nTTS = 0;int i, chdev;char channel[16];HANDLE hThread[MAXCHAN];unsigned long dwThreadId;unsigned long dwfilever, dwprodver;int NoOfChannels = 1, NoOfThreads = 0;const char *DefServer = "127.0.0.1";
if (argc > 1)NoOfChannels = abs(atoi(argv[1]));
if (argc > 2) {DefServer = argv[2];vx_setparm(-1, VXGB_DEFSERVER, DefServer);
}
// Init Verbio libraryprintf("Initializing Verbio. Please wait ...\n\n");
#ifdef _DEBUGint timeout = -1;vx_setparm(-1, VXGB_NETTIMEOUT, &timeout);
if (vx_libinit(LVX_SPANISH | OVX_TTSLITE) == -1) {#else
if (vx_libinit(LVX_SPANISH) == -1) {#endif
vx_error("vx_libinit", -1);return ATVX_LASTERR(-1);
}
// Get Verbio Product Versionvx_GetDllVersion(&dwfilever, &dwprodver);printf("TESTVX_CSP. Verbio %d.%02d\n", HIWORD(dwprodver), LOWORD(dwprodver));printf("--------------------\n");
// Get number of licenses for vx_recstrif (vx_getparm(-1, VXGB_RECSTRLIC, &nASR) == -1) {
vx_error("vx_getparm", -1);return ATVX_LASTERR(-1);
}printf(" * ASR licenses: %2d\n", nASR);
// Get number of licenses for vx_playstrif (vx_getparm(-1, VXGB_PLAYSTRLIC, &nTTS) == -1) {
vx_error("vx_getparm", -1);return ATVX_LASTERR(-1);
}printf(" * TTS licenses: %2d\n\n", nTTS);
Capítulo 4. Código de ejemplos en C/C++
150 Referencia de las funciones del Dialogic SDK Verbio Technologies
if (!(nASR && nTTS)) {printf("ERROR: ASR and TTS licenses are required\n");return -1;
}vx_getlicmode();
// Check vocabulary contentif ((i = CheckWords(NOMBRES, LVX_SPANISH)) != 0) {
printf("*** ERROR: invalid word in line %d. ***\n", i);return -1;
}
if (vx_prevcb(NOMBRES, EV_SYNC)) {printf("*** ERROR: vx_prevcb(\"%s\") failed. %s ***\n", NOMBRES, ATVX_ERRMSGP(-1));return ATVX_LASTERR(-1);
}
// Open all channelsfor (i=0; i<NoOfChannels; i++) {
/*Voice handle */sprintf(channel, "dxxxB%1dC%1d", (i/4)+1, (i%4)+1);if ((chdev = dx_open(channel, 0)) == -1) break;chdevmain[NoOfThreads++] = chdev;printf("\nChannel %s opened\n", channel);
// Stop active I/O functionsif (vxec_stopch(chdev, EV_SYNC) == -1)
dx_error("vxec_stopch", chdev);
// Deletes all previous tone templatesif (dx_deltones(chdev) == -1)
dx_error("dx_deltones", chdev);
// Generate Disconnect tone templateif (dx_bldstcad(TN_DISC, 425, 10, 20, 2, 20, 2, 2) == -1)
dx_error("dx_bldstcad", chdev);
// Add tone templateif (dx_addtone(chdev, 0, 0) == -1)
dx_error("dx_addtone", chdev);
// Disable TONE OFF Detectionif (dx_distone(chdev, TN_DISC, DM_TONEOFF) == -1)
dx_error("dx_distone", chdev);
hThread[i] = CreateThread(NULL, 8096, ThreadProc,(LPVOID) i, CREATE_SUSPENDED, &dwThreadId);
SetThreadPriority(hThread[i], THREAD_PRIORITY_NORMAL);}printf("\n");
for (i=0; i<NoOfThreads; i++) {ResumeThread(hThread[i]);Sleep(1500);
}
WaitForMultipleObjects(NoOfThreads, hThread, TRUE, INFINITE);
for (i=0; i<NoOfThreads; i++)CloseHandle(hThread[i]);
vx_srvclose(DefServer);vx_libclose();
return 0;}
DWORD WINAPI ThreadProc(LPVOID _ichdev){
int nind, nothing, niter;int ichdev = (int) _ichdev;int chdev = chdevmain[ichdev];int index[32];float score[32];char string[256];
//Set Dictionary and Abbreviations
if (vx_ttsSetDictionary(chdev, LVX_SPANISH, "dictionary.txt") != 0) {vx_error("vx_ttsSetDictionary", chdev);return ATVX_LASTERR(chdev);
}
if (vx_ttsSetAbbreviations(chdev, LVX_SPANISH, "abbreviations.txt") != 0) {vx_error("vx_ttsSetAbbreviations", chdev);return ATVX_LASTERR(chdev);
}
// Set Active Vocabularyif (vx_setvcb(chdev, NOMBRES, EV_SYNC | GVX_ISOLATED) != 0) {
vx_error("vx_setvcb", chdev);return ATVX_LASTERR(chdev);
} else {printf("%s: Active vocabulary is %s\n", ATDV_NAMEP(chdev), NOMBRES);
}
while (1) {nothing = 0;
if (vxec_stopch(chdev, EV_SYNC) == -1)
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 151
dx_error("vxec_stopch", chdev);
if (dx_sethook(chdev, DL_ONHOOK, EV_SYNC) < 0)dx_error("dx_sethook", chdev);
printf("\n%s: ONHOOK -------------------\n\n", ATDV_NAMEP(chdev));
if (dx_wtring(chdev, 1, DL_OFFHOOK, -1) < 0)dx_error("dx_wtring", chdev);
printf("%s: OFFHOOK -------------------\n", ATDV_NAMEP(chdev));
vxec_setup(chdev);dx_setevtmsk(chdev, DM_LCOFF);
niter = 0;
while(1) {
if (niter == 0) {strcpy(string, "Bienvenido a la demostración de los sistemas de ");strcat(string, "reconocimiento y conversión texto a voz en castellano. ");
}else {
strcpy(string, "");}strcat(string, "Por favor indique un nombre o departamento de la lista.");
if (PlayRecStr(chdev, string) & (TM_LCOFF | TM_TONE))break;
if (PlayStr(chdev, "Gracias") & (TM_LCOFF | TM_TONE))break;
if ((nind = vx_recind(chdev, 1, index, score, EV_SYNC)) < 0) {vx_error("vx_recind", chdev);break;
}
printf("%s: ", ATDV_NAMEP(chdev), string);if (nind > 0) {
strcpy(string, vx_wordex(chdev, index[0], 0));printf("%s (%d) pertencese al departamento %s\n", vx_wordex(chdev, index[0], 1), (int) score[0], string);
}else
printf("%s\n", vx_wordex(chdev, index[0], 1));
if ((nind > 0) && (score[0] > 35.0)) {sprintf(string, "El nombre reconocido es %s", vx_wordex(chdev, index[0], 1));nothing = 0;
}else if ((nind > 0) && (score[0] > 25.0)) {
sprintf(string, "El nombre más parecido de la lista es %s", vx_wordex(chdev, index[0], 1));nothing = 0;
}else if ((nind > 0) || (index[0] == IND_NOWORD)) {
strcpy(string, "Lo siento, no se ha reconocido ningún nombre de la lista");if (++nothing >= 10)
break;}else {
strcpy(string, "Lo siento, no se ha reconocido nada");if (++nothing >= 10)
break;}
if (PlayStr(chdev, string) & (TM_LCOFF | TM_TONE))break;
niter++;}
}}
long PlayRecStr(int chdev, const char *string){
int timeout = 3000; // msec of silence after play completeint maxspeechtimeout = 8000; // msec of speech recognition after play complete
DV_TPT ptpt[3];DV_TPT rec_tpt;DX_XPB rec_xpb;
/* Set up rec DV_TPT */rec_tpt.tp_type = IO_EOT;rec_tpt.tp_termno = DX_MAXTIME;rec_tpt.tp_length = 60000;rec_tpt.tp_flags = TF_MAXTIME;
/* Set up DX_XPB */rec_xpb.wFileFormat = FILE_FORMAT_VOX;rec_xpb.wDataFormat = DATA_FORMAT_ALAW;rec_xpb.nSamplesPerSec = DRT_8KHZ;rec_xpb.wBitsPerSample = 8;
/* Set up play DV_TPT */ptpt[0].tp_type = IO_CONT;ptpt[0].tp_termno = DX_MAXDTMF;ptpt[0].tp_length = 1;
Capítulo 4. Código de ejemplos en C/C++
152 Referencia de las funciones del Dialogic SDK Verbio Technologies
ptpt[0].tp_flags = TF_MAXDTMF;
ptpt[1].tp_type = IO_CONT;ptpt[1].tp_termno = DX_TONE;ptpt[1].tp_length = TN_DISC;ptpt[1].tp_flags = TF_TONE;ptpt[1].tp_data = DX_TONEON;
ptpt[2].tp_type = IO_EOT;ptpt[2].tp_termno = DX_LCOFF;ptpt[2].tp_length = 1;ptpt[2].tp_flags = TF_LCOFF;
vxec_setup(chdev);
if (vxec_recstr(chdev, &rec_tpt, &rec_xpb, RM_ALAW | EV_ASYNC))return -1;
if (vx_playstr(chdev, string, ptpt, PM_ALAW | EV_ASYNC) < 0) {vx_error("vx_playstr", chdev);return -1;
}printf("%s: %s\n", ATDV_NAMEP(chdev), string);
if (vxec_wait(chdev, timeout, maxspeechtimeout))return -1;
return ATDX_TERMMSK(chdev);}
long PlayStr(int chdev, const char *string){
DV_TPT ptpt[3];
ptpt[0].tp_type = IO_CONT;ptpt[0].tp_termno = DX_MAXDTMF;ptpt[0].tp_length = 1;ptpt[0].tp_flags = TF_MAXDTMF;
ptpt[1].tp_type = IO_CONT;ptpt[1].tp_termno = DX_TONE;ptpt[1].tp_length = TN_DISC;ptpt[1].tp_flags = TF_TONE;ptpt[1].tp_data = DX_TONEON;
ptpt[2].tp_type = IO_EOT;ptpt[2].tp_termno = DX_LCOFF;ptpt[2].tp_length = 1;ptpt[2].tp_flags = TF_LCOFF;
if (vx_playstr(chdev, string, ptpt, EV_SYNC) < 0) {vx_error("vx_playstr", chdev);return -1;
}printf("%s: %s\n", ATDV_NAMEP(chdev), string);return ATDX_TERMMSK(chdev);
}
int CheckWords(const char *vcb, int language){
FILE *fp = NULL;int line = 0, lang = 0;char word[260], *tmp, *pword;
if ((fp = fopen(vcb, "rt")) == NULL) return -1;while (fgets(word, 260, fp)) {
if (tmp = strchr(word, '\n')) *tmp = '\0';if (pword = strchr(word, '\t')) {
++pword;if (tmp = strchr(pword, '\t')) *tmp = '\0';
} elsepword = word;
line++;
if ((*pword != '[') && vx_chkwrd(pword, lang)) {fclose(fp);return line;
}}fclose(fp);return 0;
}
void vx_error(const char *function, int chdev){
const char *msg;int ierror = ATVX_LASTERR(chdev);
if (chdev == -1) {printf("*** ERROR: %s failed. %s ***\n", function, ATVX_ERRMSGP(chdev));
}else {
if ((ierror == EVX_SRERROR) || (ierror == EVX_DXERROR))msg = ATDV_ERRMSGP(chdev);
elsemsg = ATVX_ERRMSGP(chdev);
printf("%s *** ERROR: %s failed. %s ***\n", ATDV_NAMEP(chdev), function, msg);}
}
void dx_error(const char *function, int chdev)
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 153
{printf("%s *** ERROR: %s failed. %s ***\n", ATDV_NAMEP(chdev), function, ATDV_ERRMSGP(chdev));
}
int vx_getlicmode() {// Get license modeint mode;if (vx_getparm(-1, VXGB_LICMODE, &mode) == 0) {
if (mode & LIC_ASR_CATALAN)printf(" * ASR Catalan : Yes\n");
elseprintf(" * ASR Catalan : No\n");
if (mode & LIC_TTS_CATALAN)printf(" * TTS Catalan : Yes\n");
elseprintf(" * TTS Catalan : No\n");
if (mode & LIC_EVALUATION)printf(" * Evaluation\n");
if (mode & LIC_LITE)printf(" * Lite\n");
}return 0;
}
/******************************************************************************* FILE: vxec.c* DESCRIPTION: Verbio Barge-in Demo* Copyright (C) 2003 ATLAS-CTI********************************************************************************/
#ifdef _DEBUGstatic int fileid = 0;static FILE* fp = 0;
#endif
/*--------------------------------------*//* Set up EC parameters *//*--------------------------------------*/void vxec_setup(int ec_dev){
int VADinit = 1;int BargeIn = 1;int XferSize = 2048;int NLP = 1;int TapLength = 128;int Threshold1 = -35; // Default = -40int Trigg1 = 5; // Default = 10int Window1 = 10; // Default = 10int Threshold2 = -35; // Default = -40int Trigg2 = 5; // Default = 10int Window2 = 10; // Default = 10
int ret;
/* set the event mask to send the VAD events up to the application */dx_setevtmsk(ec_dev, DM_VADEVTS);
/* Set DXCH_EC_TAP_LENGTH. This parm should be the first CSP parm to set* since it will reset all other parms to default.*/ret = ec_setparm(ec_dev, DXCH_EC_TAP_LENGTH, (void *) &TapLength);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));printf("\nPlease check if the current board and channel are CSP enabled.\n\n");
}ret = ec_getparm(ec_dev, DXCH_EC_TAP_LENGTH, (void *) &TapLength);
/* Set ECCH_XFERBUFFERSIZE */ret = ec_setparm(ec_dev, ECCH_XFERBUFFERSIZE, (void *) &XferSize);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));printf("\nPlease check if the current board and channel are CSP enabled.\n\n");
}ret = ec_getparm(ec_dev, ECCH_XFERBUFFERSIZE, (void *) &XferSize);
/* Turn off non-linear processing(comfort noise) *//* For ASR applications, you must turn this feature off; that is, set ECCH_NLP = 1. */ret = ec_setparm(ec_dev, ECCH_NLP, (void *) &NLP);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));printf("\nPlease check if the current board and channel are CSP enabled.\n\n");
}ret = ec_getparm(ec_dev, ECCH_NLP, (void *) &NLP);
/* Enable VADINITIATED for EC record */ret = ec_setparm(ec_dev, ECCH_VADINITIATED, (void *) &VADinit);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, ECCH_VADINITIATED, (void *) &VADinit);
/* Enable Barge In */ret = ec_setparm(ec_dev, DXCH_BARGEIN, (void *) &BargeIn);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
Capítulo 4. Código de ejemplos en C/C++
154 Referencia de las funciones del Dialogic SDK Verbio Technologies
}ret = ec_getparm(ec_dev, DXCH_BARGEIN, (void *) &BargeIn);
/* Set threshold value for barge-in during a prompt */ret = ec_setparm(ec_dev, DXCH_SPEECHPLAYTHRESH, (void *) &Threshold1);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, DXCH_SPEECHPLAYTHRESH, (void *) &Threshold1);
/* set DXCH_SPEECHPLAYTRIGG to adjust sensitivity. */ret = ec_setparm(ec_dev, DXCH_SPEECHPLAYTRIGG, (void *) &Trigg1);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, DXCH_SPEECHPLAYTRIGG, (void *) &Trigg1);
/* set DXCH_SPEECHPLAYWINDOW to adjust sensitivity. */ret = ec_setparm(ec_dev, DXCH_SPEECHPLAYWINDOW, (void *) &Window1);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, DXCH_SPEECHPLAYWINDOW, (void *) &Window1);
/* Set threshold value for barge-in after the prompt */ret = ec_setparm(ec_dev, DXCH_SPEECHNONPLAYTHRESH, (void *) &Threshold2);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, DXCH_SPEECHNONPLAYTHRESH, (void *) &Threshold2);
/* set DXCH_SPEECHNONPLAYTRIGG to adjust sensitivity. */ret = ec_setparm(ec_dev, DXCH_SPEECHNONPLAYTRIGG, (void *) &Trigg2);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, DXCH_SPEECHNONPLAYTRIGG, (void *) &Trigg2);
/* set DXCH_SPEECHNONPLAYWINDOW to adjust sensitivity. */ret = ec_setparm(ec_dev, DXCH_SPEECHNONPLAYWINDOW, (void *) &Window2);if (ret == -1) {
printf("Error in ec_setparm(). Err Msg = %s, Lasterror = %d\n",ATDV_ERRMSGP(ec_dev), ATDV_LASTERR(ec_dev));
}ret = ec_getparm(ec_dev, DXCH_SPEECHNONPLAYWINDOW, (void *) &Window2);
#ifdef _DEBUGprintf("DXCH_EC_TAP_LENGTH = %4d\n", TapLength);printf("ECCH_XFERBUFFERSIZE = %4d\n", XferSize);printf("ECCH_NLP = %4d\n", NLP);printf("ECCH_VADINITIATED = %4d\n", VADinit);printf("DXCH_BARGEIN = %4d\n", BargeIn);printf("DXCH_SPEECHPLAYTHRESH = %4d\n", Threshold1);printf("DXCH_SPEECHPLAYTRIGG = %4d\n", Trigg1);printf("DXCH_SPEECHPLAYWINDOW = %4d\n", Window1);printf("DXCH_SPEECHNONPLAYTHRESH = %4d\n", Threshold2);printf("DXCH_SPEECHNONPLAYTRIGG = %4d\n", Trigg2);printf("DXCH_SPEECHNONPLAYWINDOW = %4d\n", Window2);
#endif}
/*------------------------------------------*//* Wait for events to come. *//*------------------------------------------*/int vxec_wait(long ec_dev, long timeout, long maxspeechtimeout){
int evttype = 0;int retv = 0;long ehandle;int tec_stream = 0;int tmout = -1;
/* Get out of the loop after EC record complete event received:** - speech recognition completed, or* - timeout msec of silence after play complete event received, or* - maxspeechtimeout msec after voice activity detection (VAD)*/while (!tec_stream){
if (sr_waitevtEx(&ec_dev, 1, tmout, &ehandle) == -1) {ec_stopch(ec_dev, RECEIVING, EV_ASYNC);continue;
}
evttype = sr_getevttype(ehandle);switch(evttype) {
case TEC_VAD:printf("TEC_VAD\n");ec_stopch(ec_dev, SENDING, EV_ASYNC);tmout = maxspeechtimeout;if ( ATDX_TERMMSK(ec_dev) & (TM_LCOFF | TM_TONE) ){
retv = -1;tmout = 1;
}
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 155
break;
case TDX_BARGEIN:printf("TDX_BARGEIN\n");break;
case TDX_CST:printf("TDX_CST\n");ec_stopch(ec_dev, FULLDUPLEX, EV_ASYNC);tmout = 1;retv = -1;break;
case TDX_PLAY:printf("TDX_PLAY\n");tmout = timeout;if ( ATDX_TERMMSK(ec_dev) & (TM_LCOFF | TM_TONE) ){
retv = -1;tmout = 1;
}break;
case TEC_STREAM:printf("TEC_STREAM\n");ec_stopch(ec_dev, SENDING, EV_ASYNC);tec_stream = 1;break;
case TDX_ERROR:printf("TDX_ERROR\n");break;
default:printf("Unexpected event 0x%x\n", evttype);break;
}}
#ifdef _DEBUGif (fp) {
fclose(fp);fp = NULL;
}#endif
vx_termrecstr(ec_dev);
return retv;}
int vxec_callback(int chdev, char *buffer, unsigned int length){#ifdef _DEBUG
if (fp) fwrite(buffer, 1, length, fp);#endif
return vx_recstr_write(chdev, buffer, length);}
int vxec_term(int chdev){
return ec_stopch(chdev, FULLDUPLEX, EV_ASYNC);}
int vxec_stopch(int chdev, unsigned int mode){
vx_termrecstr(chdev);return ec_stopch(chdev, FULLDUPLEX, (unsigned short) mode);
}
int vxec_recstr(int chdev, DV_TPT *tptp, DX_XPB *xpbp, unsigned int mode){
VX_RSP rsp;
#ifdef _DEBUGchar filename[256];if (fp != NULL) fclose(fp);sprintf(filename, "EC%06d.esa", fileid++);fp = fopen(filename, "wb");
#endif
vx_clrrsp(&rsp);rsp.initsil = -1;rsp.callback = vxec_term;
if (vx_recstr_open(chdev, &rsp, mode) == -1)return -1;
return ec_stream(chdev, tptp, xpbp, vxec_callback, (unsigned short) (mode | MD_NOGAIN));}
Capítulo 4. Código de ejemplos en C/C++
156 Referencia de las funciones del Dialogic SDK Verbio Technologies
4. Ejemplo de Detección de voz y de tonos DTMF
Ejemplo 4.4. Ejemplo de Detección de voz y de tonos DTMF
Este fragmento de código pretende ilustrar un posible uso del detector de voz y de tonos DTMF. En él,únicamente se mandan muestras al reconocedor cuando se ha detectado algo de señal, evitando que el servidorde reconocimiento malgaste recursos rechazando la parte de silencio inicial. Por simplicidad, se ha omitido lacomprobación de errores y se ha programado en pseudo-código.
static UIOParm callbackParmsWrite;static bool bVoice = false;
( . . . )
DX_UIO VerbioUIO;DV_TPT pTPT[2];VX_RSP rsp;VAD_PRM vad;
VerbioUIO.u_write = UIOWrite;
dx_setdevuio(chdev, &VerbioUIO, NULL);
pTPT[0].tp_type = IO_CONT;pTPT[1].tp_type = IO_EOT;dx_clrtpt(pTPT,2);
pTPT[0].tp_termno = DX_MAXTIME;pTPT[0].tp_length = 300;pTPT[0].tp_flags = TF_MAXTIME;
pTPT[1].tp_termno = DX_LCOFF;pTPT[1].tp_length = 1;pTPT[1].tp_flags = TF_LCOFF;
vx_clrrsp(&rsp);rsp.io_fhandle = -1;rsp.maxsil = 30;rsp.initsil = 5;rsp.callback = 0;
vx_clrvad(&vad);
callbackParmsWrite.chdev = chdev;callbackParmsWrite.recdev = vx_recstr_open(dev, &rsp, MC_MULAW);callbackParmsWrite.vsddev = vx_vsd_open(dev, callbackParmsWrite.recdev, &vad, MC_MULAW);callbackParmsWrite.dtmfdev = vx_dtmf_open(dev, MC_MULAW);
memset(&iott, 0, sizeof( DX_IOTT ) );iott.io_fhandle = (int) &callbackParmsWrite;iott.io_type = IO_DEV | IO_UIO |IO_EOT;iott.io_bufp = 0;iott.io_offset = 0;iott.io_length = -1;
dx_rec(chdev, &iott, pTPT, MD_PCM | RM_SR8 | MD_NOGAIN | EV_SYNC);dx_stopch(chdev, EV_SYNC);vx_termrecstr(dev);vx_vsd_close(dev, callbackParmsWrite.vsddev);vx_dtmf_close(dev, callbackParmsWrite.dtmfdev);
( . . . )
int UIOWrite (int fd, char *ptr, unsigned cnt){
UIOParm *parm = (UIOParm *) fd;int state, n;char *result;
const char *dtmf = vx_dtmf_write(parm->dtmfdev, ptr, cnt);if (dtmf) {
if ((result = vx_dtmf_word(chdev, dtmf))) { //A previously loaded and activated DTMF grammar is requiredprintf("DTMF tone valid: %s returned\n", result);
}dx_stopch(parm->chdev, EV_ASYNC);
}
if (!parm->bVoice) {state = vox_vsd_write(parm->vsddev, ptr, cnt);if (!parm->bVoice && state!=VVX_INIT && state!= VVX_SILENCE)
bVoice = true;}
if (parm->bVoice && n>0) {if (vox_recstr_write(parm->recdev, ptr, cnt) < (int) cnt)
dx_stopch(parm->chdev, EV_ASYNC);}
return cnt;}
Capítulo 4. Código de ejemplos en C/C++
Verbio Technologies Referencia de las funciones del Dialogic SDK 157
Capítulo 4. Código de ejemplos en C/C++
158 Referencia de las funciones del Dialogic SDK Verbio Technologies
Apéndice A. Ficheros utilizados por losejemplos
Importante
Atención, utilice el tabulador para separar las columnas de los ficheros de texto que contengan más deuna.
Ficheros utilizados en el ejemplo síncrono.
comandos.txt
REPEAT Repetir //Repetirá la preguntaHOME Inicio //Empezará de nuevo el diálogoHELP Ayuda //Dictará un mensaje más preciso
nif_numeric.bnf
#ABNF 1.0 ISO8859-1;
$digito =uno {1} |dos {2} |tres {3} |cuatro {4} |cinco {5} |seis {6} |siete {7} |ocho {8} |nueve {9} |cero {0};
$letra ="[A_es][_A_es]" {A} | // a
"[B_es][_E_es]" {B} | // be"[C_es][_E_es]" {C} | // ce"[D_es][_E_es]" {D} | // de"[E_es][_E_es]" {E} | // e"[E__es][F_es][_e_es]" {F} | // efe"[G_es][_E_es]" {G} | // ge"[H_es]" {H} | // hache"[I_es]" {I} | // i"[Il_es]" {I} | // i latina"[J_es]" {J} | // jota"[K_es][_A_es]" {K} | // ca"[E__es][L_es][_e_es]" {L} | // ele"[E__es][M_es][_e_es]" {M} | // eme"[E__es][N_es][_e_es]" {N} | // ene"[O_es]" {O} | // o"[P_es][_E_es]" {P} | // pe"[Q_es][_U_es]" {Q} | // cu"[E__es][R_es][_e_es]" {R} | // erre"[E__es][r_es][_e_es]" {R} | // ere"[E__es][S_es][_e_es]" {S} | // ese"[T_es][_E_es]" {T} | // te"[U_es][_U_es]" {U} | // u"[V_es]" {V} | // uve"[W_es]" {W} | // uve doble"[dV_es]" {W} | // doble uve"[X_es]" {X} | // equis"[Y_es]" {Y} | // y griega"[Z_es]" {Z}; // zeta
root $nif = $digito+ $letra;
Ficheros utilizados en el ejemplo asíncrono.
nombres1.txt
Eduardo Campillo
Asunción ChineaMarta CuencaEmilio DobladoGuillermo EstradaMª FríasSergio GalíndezEloy de la FuenteEnrique HurtadoPablo JiménezFrancisco LunaFernando MayoralSusana MartínezGermán MoralesAlfonso MorilloJuan OlivaInmaculada SánchezGloria MachadoPilar ZaragozaIrene PonsaJosé RiveiroMarcial RodríguezJorge SánchezAlberto SalvadorHéctor OsorioCarmen PuenteCarolina SegoviaAlejandro TarridaLeonardo TorontoJesús UrrubietaDpto. ComercialDpto. TécnicoProveedoresAdministraciónDirección
dic.txt
Mª MaríaDpto. Departamento
Ficheros utilizados en el ejemplo de barge-in.
nombres.txt
Comercial Eduardo CampilloComercial Asunción ChineaTécnico Marta CuencaAdministración Emilio DobladoAdministración Guillermo EstradaTécnico Sergio Galíndez
dictionary.txt
Mª = "María"nº = "número"airlines = "érlains"airwais = "érgüeis"backup = "bacap"bye = "bai"catalunya = "cataluña"EEUU = "Estados Unidos"méxico = "méjico"on-line = "onlain"stop = "estop"web = "güeb"word = "guord"
abbreviations.txt
Apéndice A. Ficheros utilizados por losejemplos
160 Referencia de las funciones del Dialogic SDK Verbio Technologies
etc = "etcétera"izda = "izquierda"izqda = "izquierda"dcha = "derecha"km = "quilómetros"kg = "quilogramos"pta = "peseta"ptas = "pesetas"Dr. = "doctor"Dra. = "doctora"ej. = "ejemplo"excmo. = "excelentísimo"hnos. = "hermanos"num. = "número"pag. = "página"pags. = "páginas"SR. = "señor"Sr. = "señor"SRA. = "señora"Sra. = "señora"SRES. = "señores"Sres. = "señores"SRS. = "señores"Srs. = "señores"SRTA. = "señorita"Srta. = "señorita"St. = "san"Sta. = "santa"Sto. = "santo"telef. = "teléfono"tfno. = "teléfono"
Apéndice A. Ficheros utilizados por losejemplos
Verbio Technologies Referencia de las funciones del Dialogic SDK 161
ÍndiceC
Cliente-Servidorcerrar conexión, 99desconexiones, 83
DDefinición de parámetros, 126Detección de la voz
ejecución, 114finalización, 111inicialización, 112parámetros, 24
Detección de tonos DTMFejecución, 31finalización, 28inicialización, 29
EErrores
obtención, 32, 41
GGramáticas
activación, 4carga, 45, 47desactivación, 25descarga, 109establecimiento, 97preparación, 22, 59, 61, 64, 66
IInicialización
recursos ASR, 8recursos ASR y TTS, 43Recursos ASV, 15recursos TTS, 103
LLiberación
recursos ASR y TTS, 42, 102Licencias
reconocimiento, 33, 38síntesis, 37, 39
PParámetros
asignación, 96obtención, 36
RRecognize String Parameter
VX_RSP , 120Reconocimiento
detener, 101ejecución, 75, 81función de callback, 82
información adicional, 134inicialización, 78liberación de recursos, 69, 79número de resultados, 51obtención de los resultados, 30, 115, 116obtención de resultados, 49, 73parámetros, 23reserva de un recurso, 71, 80tipo de gramática, 21vocabulario, 40
Reconocimiento del hablaobtención de los resultados, 117
Recursosliberación, 27, 42, 102
SSAPI
MODEATTRIBUTES, 125SAPI 4.0
abrir, 85, 87cerrar, 84seleccionar, 89
Síntesisejecución, 56finalización, 54inicialización, 55
Síntesis del hablaconfiguración, 90, 94, 105, 107detener, 100ejecución, 52liberación de recursos, 57reserva de un recurso, 58
VVAD, Voice Activity Detection
VAD_PRM, 121VAD_PRM
inicialización, 24Verificación del locutor
Creación de la huella vocal, 16Entrenamiento, 11Usuarios registrados, 13Verificación, 19
Versiónobtención, 35
Vocabulariosactivación, 4carga, 45, 47desactivación, 25descarga, 109establecimiento, 92, 97obtención, 40preparación, 6, 22, 59, 61, 64, 66
VX_RSPinicialización, 23