martes, 16 de marzo de 2010

Instalar Festival para que trabaje con Asterisk

En este ocasión les mostraré como instalar y configurar Festival para que trabaje con Asterisk, así podriamos hacer aplicaciones mezclando AGI con Festival y unas Base de Datos.

Para que Festival se integre en asterisk, antes de compilar la centralita tenemos que instalar dos paquetes:
sudo apt-get install festival festival-dev

#instalamos los parlantes en español e ingles

sudo apt-get install festvox-ellpc11k festvox-kallpc16k festvox-kallpc8k festvox-kdlpc8k

para averiguar que el modulo de festival esté correctamente cargado en asterisk, desde la consola de la centralita:

asterisk -rvvvvvvvvvvvvvvv

CLI> module unload app_festival

== Unregistered application 'Festival'

CLI> module load app_festival

== Parsing '/etc/asterisk/festival.conf':   == Found

== Registered application 'Festival'

Loaded app_festival => (Simple Festival Interface)

Si aparece algún tipo de error significa que el modulo no ha sido compilado y tenemos que volver a la compilación de Asterisk.

Festival viene con predefinido el idioma ingles. Para agregarle el idioma español hay que seguir estos pasos:

cd /usr/share/festival/voices

wget http://www.voztovoice.org/tmp/festival-spanish.zip

unzip festival-spanish.zip

Ahora modificamos el archivo de configuración de festival

vim /usr/share/festival/festival.scm

añadimos estas líneas

;(language__spanish)

(set! voice_default 'voice_el_diphone)

(define (tts_textasterisk string mode)

"(tts_textasterisk STRING MODE)

Apply tts to STRING. This function is specifically designed for

use in server mode so a single function call may synthesize the string.

This function name may be added to the server safe functions."

(let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string)))))

(utt.wave.resample wholeutt 8000)

(utt.wave.rescale wholeutt 5)

(utt.send.wave.client wholeutt)))

Guardamos el archivo y modificamos el archivo de configuración de festival en asterisk:

vim /etc/asterisk/festival.conf

Estas son la líneas que hay que modificar/activar

[general]

host=localhost

port=1314

festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n

Guardamos el archivo

Reiniciamos asterisk

/etc/init.d/asterisk reload

Para arrancar el servidor de Festival en automático ponemos esta línea en el archivo rc.local

vim /etc/rc.local

/usr/bin/festival --server

Ahora reiniciamos el servidor linux

reboot

Controlamos que el servidor festival esté corriendo:

Ahora vamos a añadir unas cuantas líneas en extensions.conf

vim /etc/asterisk/extensions.conf

exten => 650,1,Answer()

exten => 650,n,Festival(Asterisk y Festival trabajan junto. Chevere!!!)

exten => 650,n,Hangup()

Actualizamos el dialplan desde la consola

asterisk -rvvvvvvvvvvvvvvvvv

CLI> dialplan reload

Para que Festival se integre en asterisk, antes de compilar la centralita tenemos que instalar dos paquetes:
sudo apt-get install festival festival-dev#instalamos los parlantes en español e inglessudo apt-get install festvox-ellpc11k festvox-kallpc16k festvox-kallpc8k festvox-kdlpc8k

para averiguar que el modulo de festival esté correctamente cargado en asterisk, desde la consola de la centralita:
asterisk -rvvvvvvvvvvvvvvv
CLI> module unload app_festival   == Unregistered application 'Festival'
CLI> module load app_festival  == Parsing '/etc/asterisk/festival.conf':   == Found == Registered application 'Festival' Loaded app_festival => (Simple Festival Interface)
Si aparece algún tipo de error significa que el modulo no ha sido compilado y tenemos que volver a la compilación de Asterisk.
Festival viene con predefinido el idioma ingles. Para agregarle el idioma español hay que seguir estos pasos:cd /usr/share/festival/voices
wget http://www.voztovoice.org/tmp/festival-spanish.zipunzip festival-spanish.zipAhora modificamos el archivo de configuración de festivalvim /usr/share/festival/festival.scm
añadimos estas líneas
;(language__spanish) (set! voice_default 'voice_el_diphone)
(define (tts_textasterisk string mode)    "(tts_textasterisk STRING MODE)    Apply tts to STRING. This function is specifically designed for    use in server mode so a single function call may synthesize the string.    This function name may be added to the server safe functions."    (let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string)))))    (utt.wave.resample wholeutt 8000)    (utt.wave.rescale wholeutt 5)    (utt.send.wave.client wholeutt)))
Guardamos el archivo y modificamos el archivo de configuración de festival en asterisk:

vim /etc/asterisk/festival.conf
Estas son la líneas que hay que modificar/activar
[general] host=localhost port=1314 festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
Guardamos el archivo
Reiniciamos asterisk
/etc/init.d/asterisk reload
Para arrancar el servidor de Festival en automático ponemos esta línea en el archivo rc.local
vim /etc/rc.local
/usr/bin/festival --server
Ahora reiniciamos el servidor linux
reboot
Controlamos que el servidor festival esté corriendo:

Ahora vamos a añadir unas cuantas líneas en extensions.conf

vim /etc/asterisk/extensions.conf
exten => 650,1,Answer() exten => 650,n,Festival(Asterisk y Festival trabajan junto. Chevere!!!) exten => 650,n,Hangup()
Actualizamos el dialplan desde la consola
asterisk -rvvvvvvvvvvvvvvvvv
CLI> dialplan reload

2 comentarios:

  1. Juan Antonio Perez Zazueta18 de diciembre de 2010, 12:19 p.m.

    Hola, que tal???...

    Tengo un par de duda y ojalá me puedan ayudar...

    De donde puedo descargar el software del Festival???, y, puedo usarlo con cualquier versión del Asterisk???...

    Saludos.

    ResponderBorrar
  2. Hola gracias por tu comentario, vieras que en debian ya vienen los paquetes lo podes instalar con el aptitude y configurarlos desde el el festival.conf. Saludos

    ResponderBorrar