A while back I took on the maintainer role for the existing texttospeech module. After fixing some bugs and such, I ended up redesigning and completely rewriting the whole module.
the new module structure is based on supporting multiple sources (where the text comes from), as well as multiple engines (the text-to-speech synthesis process). Along with these new capabilities, support was added to allow for "dynamic" use of a source or engine where applicable. This means a dynamic source will be queried via AGI at the time the texttospeech destination is used, and same goes for a dynamic engine: The key functionality here, is to allow those users who have a new Cepstral Swift license to use the texttospeech module by using app_swift to synthesize the text in AGI within the texttospeech destination.
Current supported sources are: static text, static or dynamic running of a unix command and using stdout, static or dynamic reading of a file, and static or dynamic fetching of a configured URL (with ability to strip HTML tags).
Current supported engines are: Cepstral SWIFT, Google TTS, Microsoft TTS, eSpeak, FLite, and Text2Wave.
Detailed debugging has been implemented which logs to it's own fpbx-texttospeech.log file within the asterisk log directory.
Uses the new method for building the GUI pages as per all of the other 2.10 modules, and has specific support to also be backwards compatible and work with FreePBX 2.9 as well.
This version supports upgrading from the older 1.x versions of texttospeech, and will do it's best to migrate any existing entries over. This is possible since the new module supports all of the original "engines" the old version did.
The reason I'm adding a ticket before submitting these changes, is that it is such as large change/rewrite, I wanted to have the fpbx devel teams blessing first.
I originally released the new version to anyone who wanted to "beta test" it on the PIAF forums, and was quickly given feedback from some of the PIAF developers. With their blessing, I now feel this new version is ready to replace the old one in the contributed modules.
My ultimate goal is to hopefully have this included with the standard freepbx modules one day, so that I can then work on a better implementation of using the texttospeech entries in other areas such as IVRs (i.e. dynamically generated text-to-speech configured through IVRs). For the typical user, using the texttospeech module becomes somewhat complicated since it isn't nicely integrated with the rest of the system (i.e. IVRs). I would appreciate any guidance or suggestions as to how I should go about working towards having this module be part of the standard freepbx modules.
Other features are planned, such as "plugin" support, which could include weather support (such as the current weather module), some home-automation/action menu support, etc. By implementing this plugin framework, it allows these other functions (whether they are "part of texttospeech" or not) to take use of any of the engines and text synthesis capabilities maintained within the texttospeech module itself, simplifying implementation while increasing functionality at the same time.
I have attached a copy of the new module to this ticket, and you can find the currently maintained source tree on github at:
I've already updated my local SVN checkout and am ready to commit, but again wanted to get the developer teams blessing first.
Thanks for your time!