One of the coolest features of Asterisk@Home 1.5 was the Festival voice synthesis module which allowed the creation of data-driven, text-to-speech telephony applications with minimal programming. Festival could actually "speak" information from a MySQL database to folks calling in with a Plain Old Telephone. When Asterisk® 1.2 and Asterisk@Home 2.x were released, everything changed at least on older systems with slower processors and less than several gigabytes of memory. What had been almost instantaneous voice messages in AAH 1.5 turned into 7-10 second periods of silence between each phrase being read to a caller. The former 10-second weather report sample application turned into a 70-second nailbiter. Painful doesn't begin to describe it. Worthless pretty much sums it up. It was so bad, in fact, that we've kept an Asterisk@Home 1.5 system chugging away just because the voice synthesizer worked so well. Pat West tipped us off last week that there was a "solution" but it didn't quite work with the last few month's of Asterisk@Home 2.x releases. So we put on our facilitator cap and went looking for a complete solution that easily could be integrated into Asterisk@Home ... even by Newbies.

And today our tip of the hat goes to Francois Aucamp from South Africa who has single-handedly reengineered Carnegie Mellon University's open source speech synthesis engine (Flite) to work with Asterisk@Home and restored voice synthesis to its rightful place as an indispensable component in the Asterisk@Home bundle. We'll show you how to install the necessary components in less than 15 minutes, and your Asterisk system will once again be speaking to callers whenever you need it to. This works with Asterisk@Home 2.x versions and Asterisk 1.2x. Earlier versions use the older Asterisk API. See the comments for more details. And, in a future column after our Big Move to Charleston (T minus two weeks and counting), we'll actually build a sample app for everyone to use in rolling your own future text-to-speech implementations. But, first, let's put a system in place that actually works again with Asterisk@Home.

One nice feature of Flite is that you can add other (better) synthesized voices down the road if you really want or need a first-class system. For home or small business use, the voice that comes with Flite is more than adequate. If you use this in business applications, we hope you'll consider making a modest donation to Francois Aucamp. He literally put this together in a couple of days for us. As with so many open source, university-inspired projects, Flite was a terrific idea. It's just that the Carnegie Mellon folks apparently lost interest at about the 90% completed mark, and never quite got things wrapped up for end-user implementation. Francois not only added the missing 10%, but he also single-handedly wrote the Asterisk interface to make it all work seamlessly from within the Asterisk dialplan without reliance upon external AGI scripts. As my old judge friend GBT used to say, "he put it down where the goats could get it." Now, with a single line of code, you can have Asterisk talking away. Here's the dialplan syntax: Flite("Thank you for reading Nerd Vittles. Have a nice day. Goodbye.") It doesn't get much simpler than that.

Downloading and Installing the Components. As mentioned above, there really are two pieces to the puzzle in order to use the Flite speech synthesis engine in your dialplan. First, you need to download and install Flite. And then you need to download and install the Asterisk application module, app_flite. Be advised that the Carnegie Mellon version of Flite will not work in your Asterisk dialplan. You'll need the modified version below which creates Flite as shared objects (aka dynamic libraries) rather than as a static library which would have made it resource hungry, the same problem now rearing its ugly head with Festival. The other advantage of the dynamic library approach is that the Flite library routines now can be called within Asterisk without physically loading Flite as an independent application which also reduces system overhead and load times. For the less technical, text-to-voice synthesis now works again without lengthy periods of silence between phrases and sentences.

To begin the download and installation process, log into your new Asterisk@Home 2.x server as root. Incidentally, this should work on any version up to and including 2.8! Then issue the following commands in order:

cd /root
rpm -ihv flite-1.3-1.aah.i386.rpm
rpm -ihv app_flite-0.3-1.aah.i386.rpm
amportal stop
amportal start

Testing Flite. Once you complete the installation process above, load the Asterisk Command Line Interface (CLI) while still logged in as root and be sure that the Flite application is loaded:

asterisk -r
show application flite

You should get a response from Asterisk that looks something like the following:

-= Info about application 'Flite' =-

Say text to the user, using Flite

Flite(text[|intkeys]): This will invoke the Flite TTS engine,
send a text string, get back the resulting waveform and play it to
the user, allowing any given interrupt keys to immediately terminate
and return.

Modifying the Weather AGI Script to Use Flite. A better test of how well Flite works can be demonstrated by making a slight change in the default AAH Weather Script to use Flite instead of Festival. Here's how. While still logged in as root, make a backup copy of the existing weather script:

cd /var/lib/asterisk/agi-bin

Now edit the original script (nano -w and move the cursor down to line 23 in the script which looks like this:

my $execf=$t2wp."text2wave $sounddir/say-text-$hash.txt -F 8000 -o $wavefile";

Press Ctrl-K to delete the line, then press the Enter key, move up to the blank line, and insert the following new line:

my $execf=$t2wp."flite $sounddir/say-text-$hash.txt $wavefile";

Save your change to the file: Ctrl-X, y, then press the Enter key. Pick up a phone on your system now and dial *61 for the new weather report using Flite.

Integrating Flite and app_flite Into Your Dialplan. Now that you've seen the Perl way of doing things with Flite, let's do things the easy way. We'll make a quick change to extensions_custom.conf to complete our testing. While still logged in as root, do the following:

cd /etc/asterisk
nano -w extensions_custom.conf

Now use the down cursor to move down to the line which begins exten => *65,1,Answer and make the following changes and additions:

;exten => *65,1,Answer
;exten => *65,2,AGI(|Your phone number is ${CALLERIDNUM}.)
;exten => *65,3,Hangup

exten => *65,1,Answer
exten => *65,2,Flite("Your phone number is ${CALLERIDNUM}. Have a nice day! Good bye.")
exten => *65,3,Hangup

Save your changes to the file: Ctrl-X, y, then press the Enter key. Restart Asterisk: amportal restart. Load the CLI: asterisk -r. Then pick up a phone on your system and dial *65 for the Flite rendition of your current phone number.

Housekeeping 101. Temporary files in /tmp get cleaned up by Linux housekeeping automatically. Temporary files stored elsewhere don't. The weather script is a good example of how not to write a script on a busy system because it places all of the temporary sound files for each reading of the weather report in /var/lib/asterisk/sounds/tts. So, from time to time, make a mental note to remove all of these files with a command like this:

rm -f /var/lib/asterisk/sounds/tts/*

Where To Go From Here. Finally, it's worth noting that Flite can also read text files. The syntax for your AGI script should look like this: flite -f filename.txt -o filename.wav. That pretty much covers everything you need to know to get started. For those that want to dig deeper, here's a link to the official Carnegie Mellon Flite 1.3 documentation which we've converted to HTML for ease of use. There's also a PDF version available. And the Texinfo version is available for nerd use only. As people add new voices, we'll let you know in the Comments to this post. In the meantime, enjoy!

Hosting Provider Special. Just an FYI that the Nerd Vittles hosting provider, BlueHost, has continued their limited time special on hosting services. For $6.95 a month, you can host up to 6 domains with 15GB of disk storage and 400GB of monthly bandwidth. It doesn't get any better than that, and their hosting services are flawless! We oughta know. We've tried the best of them. If you've never tried a web hosting provider, there's never been a better time. Just use this link, and we'll all be happy.

Nerd Vittles Fan Club Map. Thanks for visiting! We hope you'll take a second and add yourself to our Frappr World Map compliments of Google. In making your entry, you can choose an icon: guy, gal, nerd, or geek. For those that don't know the difference in the last two, here's the best definition we've found: "a nerd is very similar to a geek, but with more RAM and a faster modem." We're always looking for the best BBQ joints on the planet. So, if you know of one, add it to the map while you're visiting as well. The little bug in the map display last week that wiped out everyone in the U.S. and Canada has been fixed. We're all back!

Want More Projects? For a complete catalog of all our previous Asterisk projects, click here. For the most recent articles, click here and just scroll down the page.

Headline News for the Busy Executive and the Lazy Loafer. Get your Headline News the easy way: Planet Asterisk, Planet Gadget, Planet Mac, and Planet Daily. Quick read, no fluff.

Got a PDA or Web-Enabled Smartphone? Check out our new site and get the latest weather updates and forecasts from the National Weather Service perfectly formatted for quick download and display on your favorite web-enabled PDA, cellphone, or Internet Tablet. And, of course, it's all FREE!

Some Recent Nerd Vittles Articles of Interest...

This article has 54 comments

  1. Before you move out of Atlanta you should try One Star Ranch BBQ (AKA: Rib Ranch). It is located behind the Roxy in Buckhead. Trust me the location is deceiving b/c it is one of the best BBQ joints I’ve tried.

    [WM: Not my favorite, but it reminded me of the old pizza adage which I have slightly modified: BBQ is like Sex. When it’s good, it’s really good. And when it’s bad, it’s still pretty good.]

  2. Some corrections to the download urls:
    Thanks again for the fun you help bring to AAH.

    [Thanks, Alex. You’d think I could have gotten one of them right, wouldn’t you? Geez!]

  3. The wget commands are wrong – missing a / in the first, and incorrect version in the second (which also affects the subsequent rpm…)

    [WM: Pays not to drink cheap wine!]

  4. Ok, at the outset it was inferred that different voices are a possible – when/how???

    Also, how does one force punctuation, etc. (It runs from one sentence to the next, too fast…

    [WM: Haven’t played with different voices yet. As for #2, first too slow. Now too fast. Experiment with different types of punctuation. Periods, exclamation points, semicolons all have different effects. If all else fails, use multiple commands which will add a bit more of a pause.]

  5. Just a quick thanks, not so much for just this article but for the past ones as well. I’ve watched the site and subscribed to the RSS feed just to keep updated. The part I really appreciate is how detailed you get with the setups, mainly since I’m not a linux guru.

    Thanks again!

  6. Ward, can Flite grab information from a MySQL database and read them out using just the dialplan? I’d love to incorporate this with the Teleyapper to put in custom database columns of text or numbers to read out after the main greeting.

    [WM: Teleyapper uses an AGI script, and you could certainly do exactly that. We’ll even show you how in a future column … after the move.]

  7. downloaded flite via your instructions and rpm’d, but show application flite returned:
    asterisk1*CLI> show application flite
    Your application(s) is (are) not registered

    what happened?

    [WM: Beats me. You didn’t give enough info about your setup. What version of AAH? How was AAH originally installed? What error messages, if any, were shown when you executed the rpm commands? Did you try rebooting your system?]

  8. Thanks again Ward! Quite another great project! I had the same problem as the comment 7, my system is aah7, a reboot solved it. Is there any place to get ideas of applications made using Flite?

    [WM: Stay tuned! We’re just getting started with this … now that it once again works.]

  9. I also had the exact same problem as Homer is comment 7 above. I restarted asterisk with amportal restart and now everthing works fine. Thanks for the great tutorials. I’ve been waiting for something like this for a while. As always my hat is off to Ward.

  10. Rebooting did the trick, dummy me. Thanks.

    [WM: Dummy me, too … for leaving it out of the article. The first few hours after publication are always fun. I’ve just learned to relax. It’s not like we’re doing this for a living.]

  11. Are you able to pass parameters to a query on an external mysql database? For example, if I have a database filled with order numbers and tracking numbers, could I prompt the caller for an order number, query the external database, and then read back the corresponding tracking number? Even better, could I get the corresponding tracking number, query the UPS API with that tracking number, and then read back the scheduled delivery date?

    [WM: Sure. We’ll cover it. As for UPS, send me some info on how it works, and we’ll take it on as well.]

  12. Hey Nerdvittles readers: It just ocurred to me that the Mental Note proposed in the Housekeeping 101 to clean TTS Temp Files, could be instead a cron job.
    Since my system has been updated with most of Ward’s goodies, I have Webmin installed, so I just got it to run on port 10000, entered the user and password for root, clicked on System, then on Scheduled Cron Jobs, Create a new scheduled cron job, Execute as: root, command: rm -f /var/lib/asterisk/sounds/tts/* , Description: Remove TTS files created by WeatherAGI, Simple Schedule: Daily at Midnight, Run on any date, and Create Cron Job. Then Log Out, and stop the webmin service. Good Luck! am no expert in linux nor asterisk so… just my 2 cents

    [WM: You get an A+ even though it wasn’t even a homework assignment.]

  13. I followed your instructions and everything works great! Now I can use this to implement a feature for subscription renewals for our company (of course, as long as the customer consents to it first.)

    Thanks again. you guys rock!


  14. Now, about getting it to connect to a mail server and read emails…you’ll have that figured out in 2 or 3 weeks right? Keep up the good work, and good luck with your move.

    [WM: You stole our playbook, I see. Once "the move" is history, all good things will happen.]

  15. Instead of manually remembering to do the housekeeping bit, I agree that a cronjob is a more appropriate control. However, I would implement a little differently from above. How about automating the process with something like the follow?

    Drop in your crontab file, at midnight it will run and delete any file older than 2 weeks.

    # remove the data files that are older than 14 days.
    0 0 * * * /usr/bin/find /var/lib/asterisk/sounds/tts -type f -mtime +14 | /usr/bin/xargs /bin/rm -f >/dev/null 2>&1

  16. UPS Tracking Information Can be found here:

    A perl implementation can be found here:

    They parse the output to RSS, but the basic concepts are shown.

  17. oops. Saw a post on the AAH forum about this and decided to try it on my test box (running FreePBX beta3). Someone made a note on the forum that *61 was not working for them, but *65 was…. a little investigation shows that in beta3 NOTHING in extensions_custom is working… darn…..

    [WM: That’s news to me. I’m running beta 3 and *61, *65, and extensions_custom.conf work just fine. Have you loaded the updates??]

  18. double oops… It seems I created a custom context to restrict outgoing calls to certain outbound routes on my text box, and then assigned my extension to it. Works great – I cound not dial *61 🙂
    Fixed it, and new voice now works fine except….
    The latest weather forecast for New York City. Press 1 to skip,
    is spoken in the old voice, then the actual weather forcast is in the new voice, then, That concludes the extended weather forcast is spoken in the old voice…..

  19. Thank you very much for your help! Now, I wonder..Is there a way to let Flite (or any other speech synthesizer that works with A@H) to talk in Spanish?
    Thanks again for your posts!

  20. Ret: I have been looking for spanish syntetizers for a while now, and haven’t found any good yet, however the work around not perfect but for some text it works, is to write the text to be syntetized in phonetical spanish (i.e. ‘buenos dias’ would be ‘booaehnoas deeahs’). If you play with the phonetical sounds for a while, you will get it though. If you happen to find a good spanish syntetizer, please drop me an email rd_cortes(a_t)walla(do_t)com. Good Luck.

  21. Just a note, it does not work with AAH 1.5. What files do the rpms install so I can put them back to normal so Asterisk will startup again?

    [WM: Jared, sorry for the delay in posting your question. I passed it on to Francois, and here’s his answer:]

    Yes, rpm -e app_flite will remove all of the "app_flite" files, EXCEPT for "/etc/asterisk/flite.conf" (because it's a config file).
    By the way, it does not work on Asterisk versions 1.0.x (I'm assuming AAH 1.5 uses this) because of a change in the Asterisk API;
    if he wants it to work; he needs to download the .tar.gz version, and edit the app_flite.c file.
    In this file, there is a #define ASTERISK_1_2 statement, which he needs to comment. Then he can compile/install it with

    make; make install.

    Note that the .tar.gz version cannot be removed with the rpm commands, only the RPM version.


  22. For all the AAH users in Canada, I’ve been working on a script that will get the local weather forecast from the text forecasts provided by Environment Canada, parse out the proper portion, and drop an appropriate text file in a location on the computer that a slightly modified weather.agi can use – I’ve got it working locally now with the new Flite – but it’s not quite ready for prime-time use. I’ll make it available for download with installation instructions in the next few weeks. If it works well, I’ll also finish working on one that can do the same thing from US users with a forecast provided by based on zipcode so someone could dial in, enter a 5 digit zip, and get that weather forecast.

  23. Greg:

    I have that same problem with the first line being read with the old voice and the rest of the weather script in the new voice.

    Did you ever figure out how to fix it?

    [WM: No idea. You pay big bucks for two-voice commercials on the radio so think of this as a feature.]

  24. I’ve finished my AAH "weather" modifications for those of you north of the border. I’ve written a little install script you can grab and run (as root):
    chmod 755 ./; ./

    It will move your original weather.agi to a backup file in case you want to restore it at some time, and replace it with a much simplified version that uses a local file on your AAH box (/tmp/forecast.txt). A small script program will be placed in /usr/local/bin/weatherscript and will be symbollically linked to /etc/cron.hourly/weatherscript – it will run hourly and "maintain" the /tmp/forecast.txt file with the latest and greatest forecast. You will need to edit and make a small modification to one line in the /usr/local/bin/weatherscript file – there are detailed instructions in the comments at the beginning of the file on exactly what to do to make the script grab *your* town/city/area weather forecast, and not mine.

    As always – there’s no warranty, no guarantee, but I’ve tested on AAH2.6 and AAH2.8, both using the Flite modifications in the as Ward so generously provided us above. Hopefully this will be of use to some of you who are tired of being stuck with US weather forecasts when you live in Edmonton or Sudbury or wherever else and find that New York City just isn’t cutting it.

    [WM: great contribution, Chris. We’re actually doing a new weather application for next week so this oughta get everyone in the mood.]

  25. Flite’s working great…….how do I modify the Asteridex speed dial app, or the, to use Flite instead of Festival?

    [WM: Yeah, I’m chomping at the bit to rework lots of stuff … soon.]

  26. Thanks for this, I just implemented a local weather forecast script for Vienna, Austria (in English, of course, since I don’t know whether/how flite would deal with German), as well as a script to do status queries on a number of real and virtual webhosting servers I run.

    Now all we need is a voice for flite which sounds a bit more like Allison instead of like her drunk boyfriend 🙂

  27. Not that I’m saying that Allison has a drunk boy friend of course!

  28. Tried the contact us page- got an error so I’ll try here 🙂
    First off, thanks for the amazing blog! I’ve gotten so much out of it, and I thought I was a pretty advanced Asterisk user!

    Coming from deep inside the tech wold, I’m always impressed with someone who about tech but can communicate with the rest of us.

    Nerdvittles has inspired me to take the first (albetit baby) step in an expirement I’ve wanted to try for some time. I’ve become so passionate about VoIP and home technology in general that I’ve often thought there might be a market out there for a business. Since I didn’t want to quit my day job just yet I’ve started . In reality I don’t think I’ll get much traffic (let alone business) but I really consider it almost a fan site of Nerdvittles. I’ve only been posting for a few weeks so its a little sparse on ‘real’ content.

    Anyway, I’ve mentioned your site a number of times recently and thought you might like to take a look.
    Of course, if have any objections, please let me know!

    Thanks and keep up the great work!

  29. I hope you don’t mind that i’m asking a not AAH question. I did some Google’ing but was unable to find the tar.gz and maybe instructions on how to get it working on non AAH system. There is a reference to the tar.gz, but where would I find it?


  30. As for the folks having trouble with the first line reading in the OLD voice…there’s a buffer in there somewhere that’s only 80 characters long and going over that seems to trip the old voice. Just take the word "weather" out of the line or do whatever to shorten to 80 characters or less and it will read in the new voice.

    I don’t think this is a flite issue; I remember this from when I tried to play with different default voices.

  31. Also, if it keeps reading the "that concludes…" line in the old voice, just change "That" to "This"; it seems to be caching the audio files it builds; which, come to think of it may be the the reason for the first line too and not necessarily an 80 char limit.

  32. For those looking for the original CMU tar.gz file, here’s the location:

  33. Great article like all your others about AAH!

    Yesterday I build up a new system with Flite following your description and it just runs like a dream. Today I found this article:

    Now I dreaming of letting Asterisk and Flite read my just arrived mail (I know, Lotus Domino is not an open source child, but also not that far away from being as the folks at show).

    Maybe there is an php and Domino programmer out there?

    I know the Lotus side very well, but now first have to learn PHP…

    Greetings from the south of Germany,

    [WM: Reading email is definitely on our radar. Not sure we can help with Notes Mail, but I’ll do a little checking around for you.]

  34. On a different note, did you guys notice that Skype announced that they will provide free pstn calls till the end of the year? Any tutorials out there on how to link up Asterisk with Skype?

  35. It came up with this error, so I installed from a different directory from /root
    [root@asterisk1 ~]# rpm -ihv flite-1.3-1.aah.i386.rpm
    error: flite-1.3-1.aah.i386.rpm: MD5 digest: BAD Expected(a0349d9a42e99e10455401a4705122c4) != (2e5b3266bacc476ed5b9251a01db46f4)
    error: flite-1.3-1.aah.i386.rpm cannot be installed

    [WM: Either the download failed (most likely) or you weren’t logged in as root.]

  36. Also thanks from here for your great articles. My question: would it be possible for the RSS-feed to not use a poster’s name ("by: [name]") as the subject but rather the article’s title? That would sure help finding interesting ones easier.

  37. Another option that might be nice using Flite would be if we had a web page that users could go to and enter announcements or "broadcast messages". Then people could call an extension and it would read the message to the caller(s) You could have departmental broadcast messages (ie Sales/Engineering/Company Wide) or schools could use it to handle snow delay/closure announcements, homework lists by class, the possibilities are endless. Unfortunately, I’m not smart enough to know how to program this, but I AM smart enough to know that this would be useful! If we could just make it a generic enough framework so that people could figure out how to drop output from other applications into it it would make it more versatile. Monitor an email account, calendar, weather, facility temperature readings, hard drive space, students grades and attendance…the list is endless.

    [WM: Great ideas, Frank. We’ll tackle some of these … after the move.]

  38. The app_flite source can be found on Francois’s site:

    Working great for me on Ubuntu Breezy with the standard flite 1.2 package. ‘apt-get install flite flite1-dev’, then edit app_flite’s Makefile. On line 46, add ‘-I/usr/include/flite’ to the includes

  39. I like the idea of being able to read out emails…… However – could anyone suggest a way to get TrixBox to connect to a Filemaker database, and have Flite read data from that? We run a service co. and it would be great if clients could ring up, enter their job number on their phone keypad, and get a status report read to them directly from our database…. Any ideas?


  40. Just a note that it is easy to change the location of the sound files to /tmp for the weather.agi no cron needed.
    Edit the to following lines (I have had mine this way for the past year and no issues):
    my $sounddir = "/var/lib/asterisk/sounds/tts"; —> my $sounddir = "/tmp";
    $AGI->stream_file(‘tts/’.basename($wavefile,".wav"),1); —> $AGI->stream_file($sounddir.’/’.basename($wavefile,".wav"),1);

    Now all those files are in /tmp


  41. Hi, I would also like to ask about the ‘flite.conf’ file being missing. I’ve done a little googleing and come up with nothing and, as was posted, flite says it cant find the flite.conf file.
    Must say though – the ‘less than 15 mins’ to install and configure seems a bit long! – or are youall using 14.4k modem to download 🙂 (had to be less than 5 mins to setup)


    [WM: Info on Flite is hard to come by. Perhaps after Carnegie Mellon gets back to work, we can get someone to respond to an email. Glad you had an easy time getting things working. That was the idea.]

  42. flite.conf. Format:
    ;usecache=yes|no ; Default is no
    ;cachedir=/some/directory ; Default if usecase=yes is /tmp

    You could just create an empty file in /etc/asterisk to quiet app_flite if you are sick of the warning messages.

    See ya…


  43. Does anyone know if this also works with the lastest trixbox v1.2? In the article it stated up to Asterisk v2.8. Makes me kinda nervous, because I spent a lot of time configuring Asterisk; I dont wanna mess it up (at least not now).

    [WM: Read the lead article on Nerd Vittles for the "why" but the short answer is that trixbox 1.2 will blow Flite out of the water. TrixBox 1.1 works fine together with the un-TrixBox tips in the comments of the article.]

  44. Does anyone tried to implement RealSpeak with Asterisk? Any how to or generic steps to follow?

  45. Has anyone been able to get this to work using php? I found a php wrapper for flite that a guy wrote, but so far have had no luck compiling it.

    [WM: Take a look at the weather, news, and email reader scripts on our site. All of them use PHP and Flite.]

  46. anyway to integrate this with trixbox directory? i had a request that the directory be able to "read" names rather than spell them. R-O-B-SPACE-R-O-T-H is slow and not as professional as just saying "ROB ROTH".

  47. In answer to some questions above. I just installed this on the latest Asterisk At Home 2.8 and it works. Trixbox should also work as I think trixbox has the same backend, eg same asterisk and agi code engine but just has a different HTML front end. As this Flite module seems to plug directly into Asterisk it should work, I can’t see why it wouldn’t. Again as re-assurance the install files are RPM’s so if it goes wrong use rpm -e to remove it. Basically the reverse of installing it.

    cd /root
    rpm -e flite-1.3-1.aah.i386.rpm
    rpm -e app_flite-0.3-1.aah.i386.rpm
    amportal stop
    amportal start

    That should do the trick.

    [WM: Flite comes preinstalled with TrixBox, but you’ve definitely got the drill down. Thanks.]

  48. Flite works with English voices, but for spanish we are left mum… Is there a spanish voice for Flite?; If not, could you please post instructions on how to enable Festival again on Trixbox 1.2.3 using a spanish voice. Thanks for all your support !!!

  49. Looks great. For those that run Asterisk on machines other than
    linux-i386, would it be possible to post tar.gz of the source code,
    the voice part either complete or as a set of patches for flite?

    [WM: Contact the author. I’m sure he’ll be happy to provide you anything that’s available.]

  50. Anyone able to get this to work with Asterisk 1.4.x?