Michele Cella wrote:

Hi David and thank you for your attention,

Unfortunately, since the text to speech was (and still is) server side generated, I did take another (very radical) solution.

That's what I've did:
- added support for a new portlet mode under the org.apache.jetspeed.portal.PortletState class (as a new allowSpeak() method) and its related portlet action (Speak) under the org.apache.jetspeed.portal.controls.VelocityPortletControl class (to provide a new icon on the portlet decorator). - implemented the org.apache.jetspeed.modules.actions.controls.Speak class to manage the new action via a Turbine RawScreen (named Speak) - implemented the org.apache.jetspeed.modules.screens.Speak class to write the text to speech on the portlet response output stream using a new service - added a new getContentToSpeech() method under the org.apache.jetspeed.portal.Portlet class to give portlets a way to customize the content to syntethize - implemented a new TextToSpeech service (and its FreeTTSTextToSpeechService implementation) that writes to an output stream (as a wav audio file) the text to speech of a given text - implemented support for taking advantage on the new Speak mode inside RSS portlets (using a separate xsl styleshett) and Velocity portlets (using an opportune velocity template)

I'm conscious that this is not a nice solution, moreover the browser needs an external player to play the wav file.

As you say media types, psml files and supports for custom mode is the way to go, but IMHO this solution is only applicable in a SSML enabled world [1], where the text to speech is generated by the browser itself.

Now, I think that for my requirements the only practicable solution is implementing a new Spring service that every portlet can take advantage of. This service should provide an easy way for every portlet to embed (under its fragment content) a controller (Play,Stop,Volume) that lets (via JavaScript) the user playing an embedded flash file that contains the text to speech. Every portlet can hide or show this control using an adeguate portlet preference. This idea takes its inspiration from the Speegle search engine [2], the final result should be something like this:

 ______________________________________
| Speaking Portlet                 _ x |
|______________________________________|
|                                      |
|                                      |
|                                      |
|         Portlet Content              |
|                                      |
|                                      |
|______________________________________|
| |Play|    |Stop|            |Volume| |
 --------------------------------------

Probably my approach it's totally wrong, what do you think?

No, I like you're idea.

First let me ask, does the text-to-speech spring service have an Apache friendly license?

As for the [Play] [Stop] [Volume] actions, this is probably something best provided in a base portlet class that can be extended, or even via a special portlet decorator that adds the [Play] [Stop] [Volume] actions when in Speech mode.

This sounds like a great addition to Jetspeed. Are you planning on contributing it to Apache?


--
David Sean Taylor
Bluesunrise Software
[EMAIL PROTECTED]
[office] +01 707 773-4646
[mobile] +01 707 529 9194

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to