<div class="gmail_quote"><div>Hi,<br><br><br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">I'd like to see an eSpeak literacy project written up -- Once we have<br>
a play button, with text highlighting, we have most of the pieces to<br>make a great read + speak platform that can load in texts and<br>highlight words/sentences as they are being read.  Ping had a nice<br>mental model for this a while back.</blockquote>
<div><br>Great idea :). The button will soon be there :D. I had never expected this to turn into something this big :). There are lots of things I want to get done wrt this project and hope to accomplish them one by one.<br>
<br></div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Thanks for the info Hemant!  Can you tell me more about your experiences<br>
with speech dispatcher and which version you are using?  The things I'm<br>interested in are stability, ease of configuration, completeness of<br>implementation, etc.</blockquote><div><br><br>I'll
try to tell whatever I am capable of explaining (I am not an expert like you all :) ). Well we had initially
started out with a speech-synthesis DBUS API that directly connected to
eSpeak. Those results are available on the wiki page
[<a href="http://wiki.laptop.org/go/Screen_Reader">http://wiki.laptop.org/go/Screen_Reader</a>]. From that point onwards we
found out about speech-dispatcher and decided to analyze it for our
requirements primarily keeping the following things in mind:<br><br><ol><li>An API that provided configuration control on a per-client basis.</li><li>a
feature like printf() but for speech for developers to call, and thats
precisely how Free(b)soft described their approach to speech-dispatcher.</li><li>Python Interface for speech-synthesis</li><li>Callbacks for developers after certain events.<br>
  </li></ol>At this moment I am in a position to comment about the following:<br><br><ol><li>WRT
which modules to use -I found it extremely easy to configure
speech-dispatcher to use eSpeak as a TTS engine. There are
configuration files available to simply select/unselect which TTS
module needs to be used. I have described how an older version of speech-dispatcher can be made to run on the XO here <a href="http://wiki.laptop.org/go/Screen_Reader#Installing_speech-dispatcher_on_the_xo">http://wiki.laptop.org/go/Screen_Reader#Installing_speech-dispatcher_on_the_xo</a><br>
</li><li>There were major issues of using
eSpeak with the ALSA Sound system some time back
[<a href="http://dev.laptop.org/ticket/5769">http://dev.laptop.org/ticket/5769</a>, <a href="http://dev.laptop.org/ticket/4002">http://dev.laptop.org/ticket/4002</a>].
This issue is resolved by using speech-dispatcher as it supports ALSA,
and OSS. So in case OLPC ever shifts to OSS we are safe. I am guessing
speech-dispatcher does not directly let a TTS engine write to a sound
device but instead accepts the audio buffer and then routes it to the
Audio Sub System. <br>
</li><li>Another major issue we had to tackle was providing callbacks while providing the DBUS interface. The present implementation of speech-dispatcher provides callbacks for various events that are important wrt speech-synthesis. I have tested these out in python and they were working quite nicely. In case you have not, you might be interested in checking out their Python API [<a href="http://cvs.freebsoft.org/repository/speechd/src/python/speechd/client.py?hideattic=0&view=markup">http://cvs.freebsoft.org/repository/speechd/src/python/speechd/client.py?hideattic=0&view=markup</a>].</li>
<li>Voice Configuration and language selection - The API provides us options to control voice parameters such as pitch, volume, voice etc for each client.</li><li>Message Priorities and Queuing - speech-dispatcher has provided various levels of priority for speech synthesis, so we cand place a Higher Priority to a message played by Sugar as compared to an Activity. <br>
</li><li>Compatibility with orca - I installed orca and used speech-dispatcher as the speech synth engine. It worked fine. We wanted to make sure that the speech synth server would work with orca if it was ported to XO in the future.</li>
<li>Documentation - speech-dispatcher has a lot of documentation at the moment, and hence its quite easy to find our way and figure out how to do things we really want to. I had intended to explore gnome-speech as well, however the lack of documentation and examples turned me away.<br>
</li></ol>The analysis that I did was mostly from a user point of view or simple developer requirements that we realized had to be fulfilled wrt speech-synthesis, and it was definitely not as detailed as you probably might expect from me.<br>
<br>We are presently using speech-dispatcher 0.6.6<br><br>A dedicated eSpeak module has been provided in the newer versions of speech-dispatcher and that is a big advantage for us. In the older version eSpeak was called and various parameters were passed as command line arguments, it surely was not very efficient wrt XO.<br>
<br>Stability - I think the main point that I tested here was how well speech-dispatcher responds to long strings. The latest release of speech-dispatcher 0.6.6 has some <br>tests in which an entire story is read out [<a href="http://cvs.freebsoft.org/repository/speechd/src/tests/long_message.c?view=markup">http://cvs.freebsoft.org/repository/speechd/src/tests/long_message.c?view=markup</a>]. However I still need to run this test on the XO. I will do so once I have RPM packages to install on the XO.<br>
<br>In particular speech-dispatcher is quite customizable, easily controlled through programming languages, provides callback support, and has specialized support for eSpeak that makes it a good option for the XO.<br><br>
All in all speech-dispatcher is very promising for our requirements wrt XO. While I am not able to project all possible problems that will come wrt speech-synthesis at this stage, it is the best option that is available at present as opposed to our original plans of providing a DBUS API :P. I am preparing myself to possibly delve deeper and test speech-dispatcher 0.6.6 on the XO once its RPMs are accepted by Fedora Community. As we progress I will surely find out limitations of speech-dispatcher and would surely report them and/or help fix them along with the Free(b)Soft team.<br>
<br>I hope you find this useful, I can try to answer a more specific question.<br><br>Thanks!<br>Hemant<br><br></div></div>