117
Invest Apl Innov 2(2), 2008
Acceso a servicios en una pbx utilizando comandos de voz con asterisk
Access to services in a pbx using voice commands with asterisk
Renatto Gonzales
Resumen
Implementar soluciones tecnológicas modernas es vital
para que las compañías puedan competir actualmente.
Mejorar la forma de comunicarse obedece a la necesidad
de acortar distancias, acortar tiempos y por consiguiente,
reducir costos y brindar un mejor servicio.
Actualmente los menús de voz interactiva o IVRs son muy
populares en las compañías porque permiten al usuario
interactuar, mediante el envío de tonos, con las opciones
de la central telefónica para acceder a los servicios que
esta entrega. Los IVRs permiten, en muchos casos, auto-
matizar totalmente el acceso a los servicios, un ejemplo
podría ser: realizar una recarga virtual en un celular.
Entre otras alternativas de interacción encontramos el
uso de reconocimiento de voz. Lo que se puede utilizar
principalmente en dos tipos de aplicaciones: reconoci-
miento de quién habla, pues se utilizan en autenticación
de usuarios y en qué es lo que se habla, ya que podemos
reconocer letras, palabras o frases completas. Esta última
aplicación tiene múltiples usos y uno de ellos es el reco-
nocimiento de comandos de voz.
El de comandos de voz puede ser agregado a las imple-
mentaciones de IVR adicionándole una interface de co-
municación humana más natural, teniendo como ventaja,
además, el disponer de las manos libres al no tener que
marcar dígitos, lo que haría que esta aplicación sea parti-
cularmente útil para usuarios que quieren acceder a ser-
vicios desde un automóvil u otro vehículo.
Los costos de una solución de este tipo pueden ser muy
altos dependiendo del hardware y software a utilizar; en
nuestro caso, para mantener los costos lo más bajo po-
sible, recurriremos al software libre. Utilizaremos el ser-
vidor de comunicaciones asterisk como plataforma de
implementación sobre la cual se configurará el IVR y lo
integraremos con una librería de reconocimiento de voz
para el reconocimiento de comandos hablados a través
del teléfono.
Como resultado, obtendremos una central telefónica as-
terisk que recibirá comandos de voz de los usuarios a tra-
vés de la línea telefónica y los convertirá en acciones que
serán ejecutadas por el servidor; para, luego, ser converti-
dos en respuestas que le llegarán al usuario por el mismo
medio. De esta manera nos acercamos más al despliegue
de interfaces de comunicación que sean más fáciles de
utilizar y más naturales para los seres humanos.
Abstract
Deploy modern technological solutions is vital for compa-
nies to compete today. Improve the way you communica-
te due to the need to shorten distances, shorten time and
therefore reduce costs and provide a better service.
Currently, the voice interactive menus or IVRs are very
popular in companies because allow users to interact,
by sending tones, with the options for the telephone to
access the services that this release. In many cases, IVRs
allow fully automate access to services; an example might
be to perform a virtual recharge to a cell phone.
Another option for interaction is using speech recogni-
tion. Speech recognition can be used in two main types
of applications: recognition of who speaks, these applica-
tions are used in user authentication, and in recognition
of what he speaks, we can recognize letters, words or
phrases. This latest application has multiple uses and one
of them is recognizing voice commands.
The recognition of voice commands can be added to the
implementations of IVR adding a more human-like inter-
CompendioT2_nov 2008_p56_p63.indd 117 12/1/08 10:59:17 PM
118
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
face, taking the advantage of having free hands by not
having to dial digits. this would make this application par-
ticularly useful for users who want access to services from
a car or other vehicle.
The costs of such a solution can be very high depending
on the hardware and software that is used; in our case
to keep costs as low as possible we are going to use free
software. We use asterisk as a communications server pla-
tform on which to implement the IVR will be set up and
integrate it with a library of speech recognition to recog-
nize spoken commands over the telephone.
As a result we get an asterisk pbx that will receive voice
commands from users through the telephone line and
convert them into actions that will be implemented by
the server, and then be converted into answers that will
reach the user through the same medium. In this way, we
get closer to deploying more communication interfaces
that are easier to use and more human-like.
palabras claves
Telefonía Ip, telefonía con asterisk, reconocimiento de voz,
comandos de voz, IVR.
Key words
Ip Telephony, telephony with asterisk, voice recognition,
voice commands, hybrid telephony, IVR.
INTRODUCCIÓN
Los primeros sistemas de reconocimiento de voz apare-
cieron a fines de los años 80 y permitían introducir infor-
mación a la computadora utilizando sintetizadores, pero
su desempeño no era suficiente para satisfacer a los con-
sumidores.
El reconocimiento de voz permite convertir las palabras
habladas por una persona en una entrada que pueda
ser utilizada por una máquina. Las aplicaciones del reco-
nocimiento de voz son variadas y van desde el marcado
(utilizado por ejemplo en los celulares), ingreso de datos,
conversión de voz a texto (utilizado en programas de dic-
tado para procesadores de textos o correos electrónicos),
aplicaciones para personas discapacitadas hasta su uso
para controlar aeronaves en aplicaciones militares.
A pesar de que los programas de reconocimiento de voz
son actualmente bastante avanzados y los encontramos
con facilidad en los dispositivos móviles, no son emplea-
dos todavía de manera masiva por las personas en sus ta-
reas comunes. Algunos programas comerciales son poco
accesibles debido a su costo lo que aleja más a las perso-
nas y compañías de utilizar este tipo de tecnología.
En este proyecto se presenta una alternativa de código
abierto para implementar una aplicación de reconoci-
miento de voz, en particular el reconocimiento de co-
mandos de voz, utilizando como plataforma un servidor
de comunicaciones asterisk y un sistema de reconoci-
miento de voz desarrollado por la Universidad Carnegie
Mellon, conocido comúnmente como Sphinx. Aunque se
ha planteado como escenario posible una aplicación en
particular es posible extenderla a otras aplicaciones apro-
vechando la flexibilidad de la plataforma escogida.
Escenario propuesto
El escenario planteado para este proyecto consiste en
proporcionar una interface basada en reconocimiento de
comandos de voz para la fuerza de ventas de una empre-
sa que se encuentra constantemente en el campo y re-
quiere conocer en tiempo real las citas programadas, así
como escuchar los mensajes de su correo de voz.
La fuerza de ventas cuenta con celulares convencionales
que utilizarán para acceder a los servicios de agenda de ci-
tas y correo de voz. Una persona en la compañía, agendará
durante el día, nuevas citas o modificará las existentes.
El objetivo de esta implementación es que la fuerza de
ventas no necesite regresar a la oficina y se mantenga
todo el día en el campo, monitoreando en tiempo real sus
mensajes y su agenda. Un gráfico que describe el escena-
rio planteado lo vemos en la Figura 1.
FUNDAMENTOS
para cumplir el objetivo planteado en el escenario pro-
puesto, utilizaremos como plataforma de implementa-
ción un servidor de comunicaciones Asterisk, una base de
datos MySQL para almacenar la información relacionada
con las agendas de los vendedores, Festival como servidor
de TTS y Sphinx como sistema de reconocimiento de voz.
CompendioT2_nov 2008_p56_p63.indd 118 12/1/08 10:59:17 PM
119
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
Se implementaran cuatro sistemas base:
- Central telefónica basada en asterisk.
- Sistema de reconocimiento de comandos de voz.
- Sistema de correo de voz.
- Sistema de agenda de ventas, utilizará un motor TTS
para convertir en palabras habladas la información
en la base de datos.
Asterisk actuará como central telefónica y, aprovechando
su flexibilidad para integrarse con otros sistemas y len-
guajes de programación, lo utilizaremos, además, como la
plataforma sobre la cual implementaremos el sistema de
correo de voz y el sistema de agenda de ventas.
El sistema de reconocimiento de comandos de voz será
implementado utilizando el sistema Sphinx sobre aste-
risk, su función es reconocer los comandos de voz ingre-
sados por el usuario a través del teléfono. Este sistema, a
su vez, se integrará con asterisk para comunicar al usuario
con cualquiera de los dos servicios que solicite: correo de
voz o agenda.
para este proyecto se definirán dos comandos de voz
que activaran las aplicaciones: CORREO y AGENDA. Cabe
resaltar que el reconocimiento de comandos de voz será
independiente del hablante.
El sistema de correo de voz recibirá los mensajes de voz
que dejen los clientes cuando llaman a los anexos de los
vendedores en las oficinas de la compañía y éstos no se
encuentran. Esta aplicación cuenta además con una inter-
face para que los vendedores puedan ingresar a su buzón
de voz y consultar sus mensajes. para implementar este
sistema utilizaremos las aplicaciones integradas de aste-
risk: Voicemail y VoiceMailMain.
El sistema de agenda de ventas consiste en una aplicación
que genere una agenda en base de datos para los vende-
dores. Cuando un vendedor llame la agenda le leerá sus
nuevas citas o la modificación de las existentes. para esto
se utilizará una aplicación TTS (Text To Speech) de código
abierto conocida como Festival, que leerá para el usuario
el texto obtenido de la base de datos.
Cabe recalcar que para este proyecto no se ha implemen-
tado la interface que permite ingresar las citas en la base
de datos, por lo que esta tarea se realizó directamente.
Hardware
para implementar esta solución se utilizaron los siguien-
tes equipos:
Servidor de Comunicaciones
- pentium IV 3.0 Ghz
- Memoria RAM: 521 Kb
- Disco Duro: 40 Gb
- 1 tarjeta de red
- 1 tarjeta Digium TDM404p
Figura 1. Escenario planteado.
CompendioT2_nov 2008_p56_p63.indd 119 12/1/08 10:59:18 PM
120
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
Licea Telulink
- 1 puerto FxO
- 1 chip GSM
Teléfono celular
Software
para implementar esta solución se utilizó el siguiente soft-
ware:
Servidor de Comunicaciones
- Sistema Operativo Linux CentOS 4.4
- Asterisk y librerías (ZApTEL, Libpri)
Estaciones de trabajo
- Softphone: x-Lite o SJphone
Reconocimiento de Comandos de Voz:
CMU Sphinx: conocido simplemente como Sphinx, hace
referencia a un conjunto de sistemas de reconocimiento
de voz de código abierto desarrollado por la universidad
Carnegie Mellon que abarca los siguientes sistemas:
Sphinx2: es un sistema rápido para reconocimiento de
voz, utiliza Modelos de Markov Ocultos (HMM son las si-
glas en inglés) con salidas semicontinuas de funciones de
densidad de probabilidad y a pesar de no ser tan preciso
como Sphinx3 o Sphinx4 correo en tiempo real lo que lo
hace ideal para ese tipo de aplicaciones.
Sphinx3: también utiliza Modelos de Markov Ocultos
(HMM son las siglas en inglés) con salidas semicontinuas
de funciones de densidad de probabilidad. Funciona en
diversos modos: el modo “Flat Decoder” es el de mayor
precisión y el modo “tree decoder” es el más rápido.
Sphinx4: Está basado en Sphinx3, pero ha sido desarrolla-
do enteramente en Java.
para esta implementación utilizaremos Sphinx2 debido a
su rapidez y características de trabajo en tiempo real; cabe
agregar que la mayor cantidad de información encontra-
da en internet es relativa a la integración de Asterisk con
Sphinx2.
TTS (Text to Speech)
Festival, es un programa de código abierto de sinteti-
zación de voz que convierte una entrada escrita en una
salida hablada a través de la generación de voz sintética.
puede ser integrado con asterisk para convertir las entra-
das de texto en voz que será enviada por un canal hacia
un teléfono o troncal telefónica.
pROCEDIMIENTO
Servidor de comunicaciones:
1. Instalar el sistema Operativo Linux CentOS 4.4 en la
pC seleccionada como servidor de comunicaciones.
Instalación del servicio de correos
2. Instalar un servidor de correos interno utilizando
Sendmail (viene por defecto en la distribución Cen-
tOS 4.4).
Instalación del servicio asterisk
3. Compilar asterisk y las librerías necesarias en el si-
guiente orden:
a. Compilar la librería ZApTEL
b. Compilar la librería LIbpRI
c. Compilar Asterisk
4. Configurar la tarjeta analógica Digium TDM404p uti-
lizando el archivo /etc/zaptel.conf, aquí determina-
mos la señalización y el tipo de interfase.
Configuramos 4 interfaces FxO con señalización KewlS-
tart.
5. Configurar los canales analógicos en el archivo /etc/
asterisk/zapata.conf. Esta configuración es necesaria
para poder utilizar los canales analógicos en el plan
de discado, asterisk reconocerá estos canales analó-
gicos como canales ZAp.
Estos canales serán utilizados principalmente como líneas
de entrada por lo que las pondremos dentro de un con-
texto especial [sistema], esto hará que cada vez que una
llamada ingrese por cualquiera de estas líneas, la llamada
sea recibida por asterisk en el contexto sistema.
CompendioT2_nov 2008_p56_p63.indd 120 12/1/08 10:59:18 PM
121
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
Configurando el correo de voz
6. La aplicación de correo de voz incluida en asterisk se
configura en el archivo /etc/asterisk/voicemail.conf,
aquí crearemos las cuentas de correo de voz para los
usuarios y sus contraseñas. No será necesario confi-
gurar un servidor de correo electrónico, ya que sólo
almacenaremos los mensajes de voz en el servidor y
estos serán leídos por los usuarios a través del teléfo-
no.
7. Configuraremos 2 anexos SIp para que actúen como
anexos locales en la central asterisk. A cada uno de
ellos se le agregará en el plan de discado una apli-
cación Voicemail(), para que reciban el mensaje si es
que los usuarios no contestan la llamada.
Configurando el plan de discado
8. El plan de discado es de vital importancia. Aquí crea-
remos los contextos y las extensiones necesarias
para recibir las llamadas y ejecutar las aplicaciones
solicitadas por el comando de voz.
Los contextos que crearemos serán los siguientes:
[sistema]
Este contexto alojara la extensión que recibe las llamadas
externas y las pasa por el procesamiento de voz.
[correo]
Aquí se ejecuta la aplicación de correo de voz.
[agenda]
Desde aquí se ejecuta la aplicación que ejecuta la agenda.
Ambas aplicaciones han sido creadas en contextos dife-
rentes para evitar que cualquiera que llame a las líneas
celulares tenga acceso directo desde el contexto “sistema”.
Un extracto del plan de discado lo vemos en la Figura 2.
LICEAs:
9. Los Liceas son conversores de líneas análogas a líneas
celulares, tienen un puerto FxS donde se conecta un
teléfono o una interface FxO. Utilizando un chip GSM
es posible establecer y recibir llamadas desde celula-
res. La configuración del Licea es bastante simple, en
realidad sólo hay que conectar cada puerto del FxO
al Licea. El resto se configura en asterisk en el plan de
discado.
Configuración de Sphinx
para configurar sphinx2 debemos descomprimir y compi-
lar el siguiente software:
- communicator-2000-11-17-2.tgz (Modelo Acústico)
- sphinx2-0.6.tar.gz (Software de reconocimiento de
voz)
- sphinxbase-0.3.tar.gz (Librerías para Sphinx- II)
- Speech-Recognizer-Spx-0.0801.tar.gz (Extensión perl
para Sphinx-II)
- TARxxxx.tar.gz (Modelo de Lenguaje para Sphinx-II)
Figura 2. Tarjeta Digium TDM con 4 FXO instalada en el servidor de comunicaciones.
CompendioT2_nov 2008_p56_p63.indd 121 12/1/08 10:59:18 PM
122
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
Operación de la solución
En esta sección vamos a describir cómo funcionan todos
los elementos descritos anteriormente. El siguiente gráfi-
co nos muestra la interacción entre los componentes del
sistema.
1. El usuario llama a la central telefónica de la empre-
sa desde su celular. Asterisk contesta la llamada y le
responde con un IVR que le da la bienvenida y las ins-
trucciones para continuar.
2. El usuario utiliza un comando de voz: CORREO o
AGENDA. El sistema graba la voz en un archivo de au-
dio con extensión WAV. Este es pasado por el sistema
de reconocimiento de comandos de voz, el comando
reconocido se almacena en un archivo de texto, que
a continuación es leído por el script AGI voz-file.pl
y comparado con los comandos válidos (CORREO Y
AGENDA).
Si coincide con alguno de ellos es llevado al contexto in-
dicado. En caso de que no coincida se escucha un men-
saje de error y se regresa al usuario al inicio del IVR para
escuchar otra vez las instrucciones.
3. Si el usuario pronunció CORREO entonces una ins-
trucción gotoif lo lleva al contexto “correo” desde el
cual se ejecuta su correo de voz.
4. Si el usuario pronunció AGENDA una instrucción
gotoif lo lleva al contexto “agenda” desde donde se
ejecuta el script AGI búsqueda-agenda.pl, este script
utilizará el número del usuario que llama (a través de
la variable de asterisk ${CALLERID(num)}) para buscar
en la base de datos y dictarle sus últimas reuniones.
para esto se ha seleccionado una tabla simple con el
nombre del cliente y la fecha y hora de la reunión.
Figura 3. Plan de discado: contextos sistema, correo y agenda.
CompendioT2_nov 2008_p56_p63.indd 122 12/1/08 10:59:18 PM
123
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
CONCLUSIONES
• Esposibleimplementarunsistemadereconocimien-
to de comandos de voz a través de la red telefónica
tradicional o Ip utilizando software de código abier-
to. Esto amplía las posibilidades de las compañías
para aprovechar esta tecnología a un bajo costo y en
plataformas flexibles.
• Utilizarasteriskcomoplataformapermitelaintegra-
ción con diversos sistemas, en este caso lo integra-
mos con un sistema de reconocimiento de voz, obte-
niendo resultados muy favorables. partiendo de este
punto es posible desarrollar otras aplicaciones de
mayor complejidad de acuerdo con las necesidades
particulares de las compañías.
• Los scripts para la integración con asterisk podrían
resumirse a un solo script que utilice la interface AGI
para ejecutar el reconocimiento de voz y guardar el
resultado en memoria para ser comparado. Esto me-
joraría la eficiencia del sistema, sobre todo si pensa-
mos en una aplicación a gran escala.
• Sphinx2hademostradoserunsistemadereconoci-
miento de voz rápido y potente, independiente del
hablante que trabaja en tiempo real y cubre las nece-
sidades básicas de esta implementación. Aun así será
RESULTADOS
• LosusuariospuedenrealizarllamadasalaPBXaste-
risk desde un celular a través de los LICEAS y utilizar
comandos de voz para acceder a los servicios imple-
mentados.
• Los servicios permiten al usuario estar en contacto
con información relevante a su trabajo en cualquier
momento, utilizando un celular convencional y de
forma automática sin necesidad que una persona en
la compañía tenga que contestar las llamadas.
• Laintegracióndesphinxconasteriskdependebas-
tante de los scripts de programación que se imple-
menten, en este caso hemos utilizado un script que
se ejecuta en la línea de comandos de Linux.
• Elgrabarenunarchivodetextoelcomandorecono-
cido y luego leerlo con otro script reduce la eficien-
cia del sistema al tener que escribir y leer del disco
duro.
Adicionalmente el tener que ejecutar dos scripts para
completar una única tarea agrega puntos de falla y con-
sume recursos de ejecución.
• Elreconocimientodecomandosdevozsehaceutili-
zando modelos acústicos, en este caso se ha limitado
a sólo dos comandos.
Figura 4. Plan de discado: contextos sistema, correo y agenda.
CompendioT2_nov 2008_p56_p63.indd 123 12/1/08 10:59:19 PM
124
Invest Apl Innov 2(2), 2008
Gonzales R. – Acceso a servicios en una pbx utilizando comandos de voz con asterisk
necesario hacer pruebas en entornos con un mayor
número de llamadas consecutivas para comprobar la
eficiencia y estabilidad de la solución.
REFERENCIAS
[1] VoIp-INFO.ORG (2008, Octubre). Asterisk [en línea], Recupe-
rado el 15 de mayo de 2008: http://www.voip-info.org/wiki-
Asterisk
[2] The Sphinx Group at Carnegie Mellon. The CMU Sphinx
Group Open Source Speech Recognition Engines [en línea],
Recuperado el 02 de Setiembre de 2008: http://cmusphinx.
sourceforge.net/html/compare.php
[3] VoIp-INFO.ORG (2008, Mayo) Sphinx and Asterisk [en línea],
Recuperado el 04 de Octubre de 2008: http://www.voip-
info.org/wiki-Sphinx
ACERCA DEL AUTOR
Renatto Gonzales Figueroa es ingeniero
electrónico. Cuenta con experiencia en la
implementación de aplicaciones con he-
rramientas de código abierto, orientado al
desarrollo de aplicaciones de Telefonía Ip
sobre Asterisk.
Es investigador en el área de Redes de
Datos y Telecomunicaciones. Sus áreas de interés son: Ingeniería
de tráfico, Telefonía Ip, desarrollo de aplicaciones de código abier-
to. Es consultor en soluciones con plataformas Linux, Java y pHp.
CompendioT2_nov 2008_p56_p63.indd 124 12/1/08 10:59:19 PM