#ContraElSilencio

#ContraElSilencio





No a la supresión de la libertad de expresión en internet que pretende realizar el gobierno arbitrario de Enrique Peña Nieto en México

¿ Como configurar Festival en Asterisk ?

Festival es una excelente herramienta qe funciona en Linux, Festival permite a diversas aplicaciones en linux traducir texto a voz, conceptualmente podemos decir que festival es un framework para desarrollar diversas aplicaciones de voz, entre sus ventajas es que se pueden configurar diversos plugins y uno de ellos es asignar un estilo de pronunciación para convertir los textos a voz, esto quiere decir que la pronunciación puede ser en ingles, español, alemán o el idioma que sea y el género que exista para esos idiomas, esto solo configurándolo en Festival.
Festival junto con Asterisk se convierte en una herramienta muy poderosa ya que con estas 2 grandes aplicaciones de Software Libre se pueden desarrollar múltiples aplicaciones junto con los AGIs de Asteisk, de tal forma que podemos crear un AGI en el cuál nuestros clientes puedan llamar a nuestras oficinas y asterisk conmute las llamadas de tal forma que por ejemplo en la extensión 301 tengamos una aplicación en el cual se le pida a nuestros clientes su login y passwords y de tal forma consultar una base de datos y regresarles el status de su orden, pedidos u otra información pero con voz ya que festival se encargaría de hacer la lectura obtenida de la base de datos y regresarla por el canal de voz al usuario mediante Asterisk.
A continuación muestro el procedimiento de configuración de Festival para integrarlo en Asterisk
#INSTALANDO
#Verificar que se tiene instalado la versión de festival
    dkpg -s festival
#si no está instalado instalarlo con Apt-Get
    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
#CONFIGURANDO FESTIVAL  
#Editar el archivo siguiente:
   sudo emacs /etc/init.d/festival
#Buscar lo siguiente:
    #! /bin/sh
    # /etc/init.d/festival
    #
    # Init script for starting Festival as a system-wide server process.
    #
    # Written by David Huggins-Daines <dhd@cepstral.com>
    # Comment out the next line to start a Festival server at boot time.
    exit 0
    # NOTE: Not just anybody can connect to your server; the list of allowed
    # hostnames is a regexp. Check /usr/share/festival/festival.scm for more
y comentar
    #exit 0
   
#Guardar el archivo con CTRL+S  CTRL+G
#Editar el siguiente Archivo
   sudo emacs  /etc/festival.scm
#Y agregar lo siguiente:
;; set spanish voice (comment the following 2 lines to use british_american)
;; (language_spanish)
(set! voice_default 'voice_el_diphone)
;;; Command for Asterisk begin
(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."
(utt.send.wave.client (utt.wave.resample (utt.wave.rescale (utt.synth
(eval (list '
Utterance 'Text string))) 5) 8000)))
;;; Command for Asterisk end
#Guardar el archivo
#Editar el archivo de configuración de festival para asterisk
sudo emacs /etc/asterisk/festival.conf
#y dentro del archivo poner lo siguiente:
[general]
host=localhost
port=1314
festivalcommand=(tts_textasterisk "%s" '
file)(quit)\n
#Guardar el archivo
#Editar el archivo /etc/asterisk/phpagi.conf y verifica que las rutas sean correctas
[festival]
#directorio donde se encuentra la aplicacion text2wave
text2wave=/usr/bin/text2wave
#directorio donde se colocaran los archivos temporales
tempdir=/var/lib/asterisk/sounds/tmp/
#Guardar el archivo
#Editar el archivo siguiente
sudo emacs /etc/asterisk/extensions_custom.conf
#y agregar lo siguiente
include => festival-demo
[festival-demo]
exten => 111,1,Answer
exten => 111,2,Festival(Probando la voz en español para festival con asterisk)
exten => 111,3,Hangup  
#Guardar el archivo
#EJECUTANDO
#Parar Asterisk, en este caso como se está usando freepbx pararlo con el siguiente comando
    sudo amportal stop
#Reiniciar Festival
    sudo /etc/init.d/festival start
#verificar que festival se haya iniciado como servidor
ps aux | grep festival
#debería regresar algo como esto
nobody   16339  0.0  1.1  56576 22920 ?        Ss   00:26   0:00 /usr/bin/festival --server
#Iniciar Asterisk
sudo amportal start
#PROBANDO
#Desde una extensión del conmutador de VoIP marcar la extensión 111
#Al llamar a la extensión deberían de escuchar una voz robotizada del texto que escribieron, solo es cuestión de ajustar un poco la velocidad de lectura, y lo agudo de la voz en festival, así como cambiar el idioma de lectura.
#Si pueden abrir la consola de asterisk podrían ver algo como esto al llamar a la extensión
en voz
Accepting AUTHENTICATED call from XXX.XXX.XXX.XXX:
       > requested format = ulaw,
       > requested prefs = (),
       > actual format = ulaw,
       > host prefs = (ulaw|alaw),
       > priority = mine
    -- Executing [111@from-internal:1] Answer("IAX2/204-3", "") in new stack
    -- Executing [111@from-internal:2] Festival("IAX2/204-3", "Probando la voz en español para festival con asterisk") in new stack
  == Parsing '/etc/asterisk/festival.conf': Found
    -- Executing [111@from-internal:3] Hangup("IAX2/204-3", "") in new stack
  == Spawn extension (from-internal, 111, 3) exited non-zero on 'IAX2/204-3'
    -- Executing [h@from-internal:1] Macro("IAX2/204-3", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] ResetCDR("IAX2/204-3", "w") in new stack
    -- Executing [s@macro-hangupcall:2] NoCDR("IAX2/204-3", "") in new stack
    -- Executing [s@macro-hangupcall:3] GotoIf("IAX2/204-3", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,6)
    -- Executing [s@macro-hangupcall:6] GotoIf("IAX2/204-3", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] GotoIf("IAX2/204-3", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,11)
    -- Executing [s@macro-hangupcall:11] Hangup("IAX2/204-3", "") in new stack
  == Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'IAX2/204-3' in macro 'hangupcall'
  == Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'IAX2/204-3'
    -- Hungup 'IAX2/204-3'
#Si no les funciona o tienen algun otro error repitan el procedimiento.
#Con esto ya están casi listos para empezar a desarrollar AGIs con PHP, Perl Java o el lenguaje que más les acomode.
 

#1 Re: ¿ Como configurar Festival en Asterisk ?

g!0, <E-Mail> / 13 May, 4:45pm  
avatar

Muchas gracias por la nota. Suficientes detalles. A mi me funcionó hasta que comenté la línea que impide que el server festival se ejecute desde el arranque. De ahi en fuera solo detalles del agi php. Una duda más, cómo hago para cambiar la pronunciación al español y cuál es tu opinión sobre el festival como TTS, crees que haya mejores opciones para la síntesis de voces en español? Por ahí leí sobre un software comercial Ceptral. Lo has probado?

[ Responder (0) ]

#2 Re:¿ Como configurar Festival en Asterisk ?

Jose Luis, <E-Mail> / 29 March, 4:19pm  
avatar

Existe algo analogo para manejarse desde windows con php o existe alguna version de Festival para windows
Saludos
Jose Luis

[ Responder (0) ]

#3 Re:¿ Como configurar Festival en Asterisk ?

Phylevn, <E-Mail> / 29 March, 6:56pm  
avatar

Existe una versión de Festival para Windows pero no funciona en modo servidor por lo que no podrías desarrollar una aplicación como la que se comenta aquí en este blog, te sugiero mejor que uses Linux con el cuál puedes desarrollar aplicaciones de este tipo y mucho más. Saludos.

[ Responder (0) ]

#4 conflicto

joseluis, <E-Mail> / 28 January, 3:08pm  
avatar

tengo isntalado el asterisk 1.6 y el festival 1.96beta simplemente hize apt-get install festival y ha instalado esa version y me dice q es la version mas actual estoy en ubuntu 10.04 y me lee el texto en ingles a pesar q cambie la configuracion y los archivos q menciona no aparecen en mi sistema en la ubicacion indicada sino en otro lugar

[ Responder (0) ]

Emblemas

Energizado por Jaws Project
Soporta RSS2
Energizado por Software Libre
Energizado por Mozila Firefox
Energizado por Ubuntu Linux
Energizado por PHP
Energizado por Apache Web Server
Energizado por MySQL
Energizado por SQLite

Comentarios Recientes