I must confess: I am a newbie to Asterisk , the popular open source PBX. This does not mean that a user is not jaded of GNU / Linux
. Lately my interest in this software is increased, since I am trying to achieve integration with the PBX currently in use in the company.
Coming from an experience made with GNU / Bayonne - a scripting system which create IVR - I had already tried the integration of telephony and Festival. For the uninitiated, is a software conversion Festival TTS (Text To Speech, or text-to-speech).
An IVR is essentially an automated, interactive phone system ie a: IVR normally have a menu through which to perform actions (eg, press 1 to do this, press 2 to do that, etc.. Etc...) These menus are essentially static and still require the use of pre-recorded voices. It 'obvious that having a TTS system that can translate the texts (eg, retrieved from a database), you can create much more flexible and customized IVR.
The difficulty arises because the Festival is, like most of the software in English. Fortunately, a group of researchers of the CNR of Padua has been modified to make the Italian and English voices.
Let's see how to install Asterisk on Ubuntu + Festival TTS combination in Italian. Prerequisites:
- Ubuntu 6 or 7
- Asterisk 1.2.x or 1.4.x
Of course the instructions are for the Ubuntu distro, but they are easily adaptable to your favorite distro.
The steps are as follows:
- Install Festival:
apt-get install festival - Install the Italian voices for festival:
apt-get install festvox-italp16k festvox-itapc16k - (Ubuntu) Edit the file
/etc/init.d/festival : remove an exit 0 that prevents to start the service startup Festival - Edit the file
/usr/share/festival/voices.scm , is to add the Italian male or female voice as the voice of default:
(defvar default-voice-priority-list
'(pc_diphone <- maschile
lp_diphone <- femminile
- Edit the file
/usr/share/festival/festival.scm to add a macro integration with 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)))
This code must be inserted before the last line: (provide 'festival) File festival.scm
- Start the server Festival:
/etc/init.d/festival start
At this point, we can use the function in our extension.conf Festival:
exten => 100,1,Answer()
exten => 100,2,Festival(Ciao Mondo)
exten => 100,3,Hangup()
Happy Festival to You!
Tags: Call Center Systems | VoIP PBX | Asterisk Consultant Naples | PBX Phone | VoIP | Asterisk CTI | PBX | IP Phones | Networking | Linux
Development of IVR systems, call center, VoIP PBX.