Ticket #5845 (new Module Submissions)

Opened 1 year ago

Last modified 10 months ago

New texttospeech module (complete rewrite, backwards compatable)

Reported by: phwhite Assigned to:
Priority: minor Milestone: 2.11
Component: Third Party Module Version: 2.10-branch
Keywords: Text-To-Speech texttospeech tts Cc:
Confirmation: Unreviewed Distro:
Backend Engine: All Distro Ver:
Backend Ver: SVN Revision (if applicable):

Description

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:

https://github.com/phwhite/texttospeech

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! Paul

Attachments

texttospeech-2.0.0.3.tgz (64.4 kB) - added by phwhite on 05/23/12 14:30:46.
New texttospeech module v2.0.0.3

Change History

05/23/12 14:30:46 changed by phwhite

  • attachment texttospeech-2.0.0.3.tgz added.

New texttospeech module v2.0.0.3

(follow-up: ↓ 2 ) 06/13/12 18:17:56 changed by netnut404

Hi this module works great (I have tested all the voice engines), I only have one problem I cant figure out (and this might not be the right place to ask, but..) when using Cepstral SWIFT in dynamic (only option I have) the voice works fine, but before it reads the text it states what voice it is using. (other voice engines are not doint that) is there a way I can tell it not to tell me what voice it is using?..

This might be a bug, but I am not sure if I am just missing an option to remove that feature..

Net Nut.

(in reply to: ↑ 1 ) 06/13/12 18:34:47 changed by netnut404

oh, I meant to include what was said in the mentioned debug log at the time of rendering

[2012-06-13 15:25:27 | 1:test_swift_freepbx | text:swift | TTS-Verbose] string(154) ""Allison-8kHzTesting text to swift""

Replying to netnut404:

Hi this module works great (I have tested all the voice engines), I only have one problem I cant figure out (and this might not be the right place to ask, but..) when using Cepstral SWIFT in dynamic (only option I have) the voice works fine, but before it reads the text it states what voice it is using. (other voice engines are not doint that) is there a way I can tell it not to tell me what voice it is using?.. This might be a bug, but I am not sure if I am just missing an option to remove that feature.. Net Nut.

07/19/12 05:08:40 changed by worldtelephone

Hi Im trying to figure out how to get this to work with the google tts agi. I have installed the googletts.agi in /var/lib/asterisk/agi-bin but it does not show up as a usable engine. Please advise thank you.