Asterisk + Festival TTS in italiano

Archivio, Telefonia aprile 26th. 2007, 9:08pm

Devo confessarlo: sono un newbie di Asterisk, il popolare PBX opensource. Questo però non significa che non sia un utente smaliziato di GNU/Linux :) . Ultimamente il mio interesse in questo software è aumentato, dal momento che sto cercando di realizzare una integrazione con il PBX attualmente in uso in azienda.

Venendo da una esperienza fatta con GNU/Bayonne – un sistema di scripting con cui realizzare IVR – avevo già provato l’integrazione tra telefonia e Festival. Per chi non lo sapesse, Festival è un software di conversione T.T.S. (Text To Speech, ossia da testo a sintesi vocale).

Un IVR è sostanzialmente un risponditore automatico, ossia un sistema telefonico interattivo: normalmente gli IVR hanno un menu attraverso cui eseguire delle azioni (es. premi 1 per fare questo, premi 2 per fare quest’altro, etc. etc.). Questi menu sono sostanzialmente statici e comunque richiedono l’utilizzo di voci preregistrate. E’ ovvio che l’avere un sistema TTS che può tradurre dei testi (ad esempio recuperati da un database), consente di creare degli IVR molto più flessibili e personalizzati.

La difficoltà nasce dal fatto che Festival è, come la maggior parte dei software, in lingua inglese. Fortunatamente, un gruppo di ricercatori del CNR di Padova ha provveduto a modificare le voci inglesi e realizzare quelle italiane.

Vediamo come installare su Ubuntu la combinazione Asterisk + Festival TTS in Italiano. Prerequisiti:

  • Ubuntu 6 o 7
  • Asterisk 1.2.x o 1.4.x

Naturalmente le istruzioni sono per la distro Ubuntu, ma sono facilmente riadattabili alla vostra distro preferita.

I passaggi sono i seguenti:

  • Installare Festival: apt-get install festival
  • Installare le voci italiane per festival: apt-get install festvox-italp16k festvox-itapc16k
  • (Ubuntu) Modificare il file /etc/init.d/festival: rimuovere una exit 0 che impedisce di far avviare il servizio di Festival all’avvio
  • Modificare il file /usr/share/festival/voices.scm; si tratta di aggiungere la voce maschile o femminile italiana come voce di default:

(defvar default-voice-priority-list
'(pc_diphone <- maschile
lp_diphone <- femminile

  • Modificare il file /usr/share/festival/festival.scm per aggiungere una macro di integrazione con Asterisk:


(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 1.0)
(utt.send.wave.client wholeutt)))

Questo codice va inserito prima dell’ultima riga: (provide 'festival) del file festival.scm

  • Avviare il server Festival: /etc/init.d/festival start

A questo punto, possiamo utilizzare nel nostro extension.conf la funzione Festival:

exten => 100,1,Answer()
exten => 100,2,Festival(Ciao Mondo)
exten => 100,3,Hangup()

Happy Festival to You!

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tag: Sistemi di Call Center | Centralino Voip | Consulente Asterisk Napoli | Centralino Telefonico | Voip | Asterisk CTI | PBX | Telefoni IP | Networking | Linux


Sviluppo di IVR, sistemi di callcenter, PBX Voip.

2 commenti:

  1. Andrea, 15. novembre 2007, 13:06

    Ottima guida!!!
    Volevo sapere se è possibile impostare un il g.729 o g.723 come codec usati da festival per riprodurre i suoni. Per ora il Voip phone è in grado di sentire i messaggi Festival solo se ha impostato il g.711u….
    grazie

    Andrea

     
  2. admin, 15. novembre 2007, 15:00

    Ciao,
    non ne ho idea, non ho fatto altre prove in quanto alla fine festival è stato insoddisfacente. Ho provato altre voci, tipo Cepstral che ancora non sono il massimo ma non costano quanto altre voci commerciali.

    In linea teorica, dovrebbe funzionare in quanto le conversioni tra un formato e l’altro sono gestite internamente da asterisk.

    Considera però che il codec g.729 non è gratuito e quindi richiede il pagamento di una licenza a parte. Mi pare che tra l’altro nella configurazione standard di asterisk non è neanche previsto.

    Ciao,
    Bruno

     

Scrivi un commento: