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]