I finally had a bit of time this evening to restore my dynamic text-to-speech engine on my server. I had to rebuild my server from scratch recently, so I decided to upgrade the core speech engine as pat of the rebuilding process. I have a small laundry list of little things I need to rebuild that still haven’t made it over from the old server, but this was one item i wanted to work on ASAP, as the quality of text-to-speech engines has improved greatly in the last few years. The new engine is a huge improvement over the old one. I’ve had it working for a couple weeks, but hadn’t had a chance to wire it back into my blog. I finally put that together this evening. I also added a new way to include the text-to-speech not only through the small “Speak” Flash widget underneath each entry on my blog and archive pages, but also a better method for the enclosure tag in both my RSS  and ATOM  feeds. Now they no longer require a redirect which some older RSS/ATOM feed readers didn’t handle properly on enclosure tags. When i have some more time I’m going to add in the necessary iTunes tags, and put together a way to download individual entries or archives via iTunes. I plan on incorporating this into another site I’m getting ready to launch where all of this will make more sense. I wrote about all this originally back in late 2004  when podcasting first reared its head, so its been a couple years since I had really touched this. I’ve worked on the underlying TTS-to-Flash framework off an on in the hope of open-sourcing it. I had tentative plans to release it through IFBIN a few months ago, but I’m re-evaluating what the best way to release this might be now. I’m leaning towards OSFlash  now, I need to give this some more thought. My next step is to re-create a better version of the little “Speak” Flash widget to give a little better UI and some additional feedback now that the backend is pretty stable and I can take advantage of some new features of Flash 8 now that the penetration numbers are pretty high.
Couple things to note:
- I completely wiped my database of all the cached text and cached mp3s so that they will all be rebuilt with the new speech engine for better quality. As a result you are bound to run into situations where an entry hasn’t been rendered and thus it might take a few seconds to render and serve depending on the length of the entries text. I only render them once on the initial request, from then on out they are cached.
- I haven’t fine-tuned the type of data that the new engine converts to speech, IE: URL’s and links, certain type of tagging like lists, etc. so it can sound awkward or redundant in many cases. This is completely adjustable, but I haven’t decided what to filter and what not to just yet.
- I know I’m forgetting a third item I had in my head a minute ago – so I might update this again later
Finally for those of you that are curious, here is a link to a sample of the old engine quality . For comparison with the new engine, click the green “Speak” widget with the speaker icon underneath any of my blog entries to hear the new engine quality, or pull up either my RSS  or ATOM  feed in Safari or a newsreader that supports enclosure tags/podcasts and listen to any entry. The difference in quality is huge.
One last note, my old blog site was run on a totally out of date version of Pivot . I had started it when Pivot was still in beta before version 1.0 back in late 2002  when I switched from my all Flash blog to Pivot. Over time, I had made so many modifications to it to incorporate features like this, that I never could upgrade to the latest versions. (At the time Pivot didn’t even have support for RSS generation, so I built that myself – yikes!) As much as the features worked and were convenient, it was a real-pain and a major mistake on my part to work on the core, as it made it a nightmare to upgrade. When I rebuilt everything recently, I took the opportunity to start from scratch and use the latest version of Pivot, which has made a lot of progress recently. I learned my lesson on modifying the core, so now I’m taking advantage of new snippet and extension plugin like features of the latest version of Pivot so that I can cleanly separate my custom code from the core system. Its much easier this way in terms of maintenance and opens the door for me to release it as an extension for Pivot. I’ve finally got a good solid framework that i can keep updated, and still add on my own custom features and tweaks.
Looks like I’m running into some memory and execution time limitations with the new server and engine which eats up more memory than I anticipated. Working on a solution, will post an update when its resolved. In the meantime you may get an audible error message if a thread takes up to much memory/time to render.