espeak-gui 0.2

Yesterday I did a first release of espeak-gui, so while I’m still in practice I’ve decided to get out a second one!

The main changes are fixing a crash bug and… internationalization support. So, if you like this project but you’re not a coder, now you’ve got a way to contribute: translating it into your language (come on, it only has a few strings! :)).

The new version is already in my PPA: espeak-gui_0.2-0ubuntu1~ppa1_all.deb. A tarball is also available, and the installation instructions are the following:

$ wget -c http://launchpad.net/espeak-gui/trunk/0.2/+download/espeak-gui-0.2.tar.gz
$ tar -xzvf espeak-gui-0.2.tar.gz; cd espeak-gui-0.2
$ python setup.py build
$ sudo python setup.py install

In case you didn’t already have the previous version, you’ll also need to install the python-espeak module, for which there are also .deb’s (i386, amd64) or the manual installation option like explained in my previous post:

$ bzr get lp:python-espeak
$ cd python-espeak
$ python setup.py build
$ sudo python setup.py install

Here are the contents of the NEWS file:

2010-01-02: Version 0.2
-----------------------

 - Fixed a crash happening when there was no voice language set in
   gconf (LP: 502253). [Reported by Rugby471]
 - Added a "Plain text" filter to the Open/Save dialogues.
 - Added internationalization support.
 - Added a manpage and a gconf schemas file.
 - A couple little user interface improvements.

Translations: Catalan.

Related posts:

  1. Introducing espeak-gui I’m joining the hype of presenting little new projects there seems to be those days, unleashing the first version of...
  2. GNOME Activity Journal, and installing it on Ubuntu As already announced by Seif, the first development release of the GNOME Activity Journal (what was formerly known as GNOME...
  3. Here is Zeitgeist 0.2.1! One month after the first Zeitgeist release (0.2), here is Zeitgeist 0.2.1! This version, which is fully backwards compatible with...
  4. Introduction to Zeitgeist 0.2’s API So now that Zeitgeist 0.2.0 is out I’ve thought I’d write down some examples of how to use it’s API...
  5. You no longer have an excuse not to look at Python Snippets! You’ve probably already heard of Jono Bacon’s effort to create a collection of Python snippets and of Acire, the application...

29 Comments »

 
  1. Portuguese translation (pt) done, just pending approval. Very usual strings, i mean, very simple translation work. Just take 5 min of your day. Now that i’ve translated it, let me try it :-P!
    Keep up the good work!

  2. tobias says:

    Why don’t you join the forces and merge with gespeaker?
    http://code.google.com/p/gespeaker/

  3. adel says:

    Thanks, I made it say “ffffffuuuuuuuuuuuuuuuuuuuuuuuuu” am still laughing

  4. RainCT says:

    @ Tobias:

    Basically, because I don’t really see a point for it.

    First of all, the way Gespeaker and espeak-gui work under the hood is different. Gespeaker calls the “espeak” binary in a subprocess (ie., basically the same as if you’d call it from the terminal) and tells it to save the read text into a temporary file, which it then opens and plays. The later, uses libespeak to talk directly to eSpeak and let it read the text in real time.

    The way Gespeaker does it has the advantage that it’s more straightforward to implement and that it can easily provide stuff like the “pause” option, which espeak’s API doesn’t provide (however, I think I’ll be able to implement “pause” functionality anyway). On the other hand, the way espeak-gui does it is technically the better way to do it (though I’ve noticed that sometimes stuff like changing the language doesn’t work 100%, but I hope that will get fixed once I rewrite the python-espeak bindings), and once the infrastructure is done it’ll be available for any other Python project who also wants to use espeak.

    With this, one portion of the code is already incompatible. What remains is the GUI, and in this regards I *personally* don’t really like Gespeaker’s one. Writing the GUI isn’t really a big effort in Python, so I prefer to continue with my own instead of restructuring Gespeaker’s one to my will and having to replace its backend to use python-espeak. They are both little projects and there’s not much code that could be reused.

    However, after saying all this, if the developer of Gespeaker wants to cooperate in some way I’m open to talking with him about it.

  5. RainCT says:

    @ Daniel:

    Thanks! Your help (and of all other translators) is very much appreciated :).

    @ Adel:

    Heh. I’m glad it’s useful to you, even if only to make you laugh :).

  6. Halan says:

    Nice app!

    Though i don’t like the icon of it.

  7. RainCT says:

    @ Halan:

    Heh, yeah. I’d be great if someone could provide me with a better icon!

  8. [...] A new version is out, see espeak-gui 0.2 for [...]

  9. phillw says:

    Hi,
    I saw that the GUI (v0.02) is wandering in to 10.04, so thought I’d give it a try on my 10.04 test rig. I can’t get the $ bzr get lp:python-espeak to work – Firstly I am told You have not informed bzr of your Launchpad ID, and you must do this to write to Launchpad or access private data. See “bzr help launchpad-login”.

    When I use $ bzr launchpad-login phillw
    I get bzr: ERROR: The user phillw has not registered any SSH keys with Launchpad.See

    I do have a launch pad account, so am unsure as to what I am doing wrong (never used bzr before and had to apt-get it !!)

    If you’d be kind enough to tell me what I am doing wrong – lol

    Regards,

    Phill.

  10. RainCT says:

    @ phillw:

    Try:
    $ bzr get http://bazaar.launchpad.net/~rainct/python-espeak/trunk

    It looks like lp: only works if you’re authenticated with Launchpad, which requires you to create an SSH key and upload the public part of it to Launchpad (in case you are interested, this is explained at https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair#Linux/Cygwin, but the above command should work just fine without doing any of this).

  11. phillw says:

    Hi, well it went and did something (got a file)
    Branched 16 revision(s).

    - but cd python-espeak reports back so such directory & locate python-espeak reports back nothing found.
    Sorry to bother you.. I’d like to get it working as I’ve said I’d give it a try out on the unbuntu Assistive Technology & Accessibility for them, as I have 10.04.

    Thanks,

    Phill.

  12. RainCT says:

    @ phillw:

    Oh. With that command the directory is called “trunk” instead of “python-espeak” :).

  13. phillw says:

    Hi, well I cd’d okay to the dierctory, but sudo python setup.py build
    started off well, then …
    running build
    running build_py
    building ‘espeak.core’ extension
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c espeak/espeakmodulecore.cpp -o build/temp.linux-i686-2.6/espeak/espeakmodulecore.o
    cc1plus: warning: command line option “-Wstrict-prototypes” is valid for Ada/C/ObjC but not for C++
    espeak/espeakmodulecore.cpp:21:20: error: Python.h: No such file or directory
    espeak/espeakmodulecore.cpp:22:30: error: espeak/speak_lib.h: No such file or directory
    espeak/espeakmodulecore.cpp:25: error: expected initializer before ‘*’ token
    espeak/espeakmodulecore.cpp:26: error: expected initializer before ‘*’ token
    espeak/espeakmodulecore.cpp:30: error: ‘espeak_EVENT_TYPE’ was not declared in this scope
    espeak/espeakmodulecore.cpp:30: error: expected primary-expression before ‘int’
    espeak/espeakmodulecore.cpp:30: error: expected primary-expression before ‘int’
    espeak/espeakmodulecore.cpp:30: error: initializer expression list treated as compound expression
    espeak/espeakmodulecore.cpp:31: error: expected ‘,’ or ‘;’ before ‘{’ token
    espeak/espeakmodulecore.cpp:30: warning: ‘DoCallback’ defined but not used
    error: command ‘gcc’ failed with exit status 1

    Which doesn’t look too happy.
    phillw@piglet:~/trunk$ ls -l
    reports back
    drwxr-xr-x 4 phillw phillw 4096 2010-01-24 00:26 build
    -rw-r–r– 1 phillw phillw 35068 2010-01-24 00:03 COPYING
    drwxr-xr-x 2 phillw phillw 4096 2010-01-24 00:03 debian
    drwxr-xr-x 2 phillw phillw 4096 2010-01-24 00:03 espeak
    -rw-r–r– 1 phillw phillw 532 2010-01-24 00:03 setup.py

    If you need anymore information, please ask.

    Regards,

    Phill.

  14. RainCT says:

    @ phillw:

    You’re missing two build dependencies: python-dev and libespeak-dev.

  15. phillw says:

    Got the two build dependencies … (python 2.6.4 it has put on for python dev)
    I now get …
    phillw@piglet:~/trunk$ python setup.py build
    running build
    running build_ext
    building ‘espeak.core’ extension
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c espeak/espeakmodulecore.cpp -o build/tempg++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-i686-2.6/espeak/espeakmodulecore.o -lespeak -o build/lib.linux-i686-2.6/espeak/core.so
    .linux-i686-2.6/espeak/espeakmodulecore.o
    cc1plus: warning: command line option “-Wstrict-prototypes” is valid for Ada/C/ObjC but not for C++
    espeak/espeakmodulecore.cpp: In function ‘PyObject* espeak_set_voice(PyObject*, PyObject*, PyObject*)’:
    espeak/espeakmodulecore.cpp:181: warning: deprecated conversion from string constant to ‘char*’
    espeak/espeakmodulecore.cpp:181: warning: deprecated conversion from string constant to ‘char*’
    espeak/espeakmodulecore.cpp:181: warning: deprecated conversion from string constant to ‘char*’
    espeak/espeakmodulecore.cpp:181: warning: deprecated conversion from string constant to ‘char*’
    espeak/espeakmodulecore.cpp:181: warning: deprecated conversion from string constant to ‘char*’
    g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-i686-2.6/espeak/espeakmodulecore.o -lespeak -o build/lib.linux-i686-2.6/espeak/core.so

    Thanks for bearing with me !!

    Phill.

  16. RainCT says:

    @ phillw:

    I don’t see any fatal error there. Try continuing with “sudo python setup.py install”.

  17. phillw says:

    Back again :-\
    $ wget -c http://launchpad.net/espeak-gui/trunk/0.2/+download/espeak-gui-0.2.tar.gz
    $ tar -xzvf espeak-gui-0.2.tar.gz; cd espeak-gui-0.2
    seemed to go well, various files downloaded and moved to directory /home/phillw/trunk/espeak-gui-0.2
    However phillw@piglet:~/trunk/espeak-gui-0.2$ python setup.py build
    reports back

    Traceback (most recent call last):
    File “setup.py”, line 7, in
    from DistUtilsExtra.command import *
    ImportError: No module named DistUtilsExtra.command

    On the plus side, not too many commands to go !!

    Regards,

    Phill.

  18. phillw says:

    Oh, P.S. phillw@piglet:~/trunk$ sudo python setup.py install
    didn’t report any errors.

  19. phillw says:

    Hi, have you got any further tracing the error reported January 24, 2010 at 20:49 – Thanks,

    Phill.

  20. RainCT says:

    @ phillw:

    Sorry, seems like I missed that comment. You just need to install python-distutils-extra.

  21. phillw says:

    KEWL !! – It works. I started it from the command line (couldn’t see it the menu system any where, but I can always add it). When I started it from terminal I got bt_audio_service_open: connect() failed: Connection refused (111)

    Repeated four times.

    I look forward to having a ‘play’ with it.

    Thanks for all the help in getting it set up,

    Phill.

  22. RainCT says:

    @ phillw:

    Uhm, try running it with “aoss” (ie. “aoss espeak-gui” instead of just “espeak-gui”; you’ll need to install the alsa-oss package first).

  23. phillw says:

    Installed alsa-oss, invoking as this
    phillw@piglet:~/trunk/espeak-gui-0.2$ aoss ./espeak-gui

    Same error message. Repeated the four times.

    Phill.

  24. phillw says:

    Oh, by the way, I put a mention in on the Ubuntu Assistive Technology forum, it’s over here –> http://ubuntuforums.org/showthread.php?t=1064210&page=2

  25. RainCT says:

    @ phillw:

    Thanks for the publicity :).

    So is it working now for you? If so I think you can ignore those messages for now. It’s some problem with eSpeak and PulseAudio…

  26. phillw says:

    Yes, it is working fine. Now that it is in the Ubuntu Repositry, I will wait and see if anyone has a problem getting it from there. I removed the whole of the ~trunk directory after using Synaptic to get it – It’s all still working :-) (Still the same error message), all the files seems to have installed okay (e.g. the man entry has been made) – So, it looks good to go !!
    Nice Application. Now, for your next trick … getting it to read a web page using the Rule508 rules for image & table descriptions – I’m coding a web-site to that set of rules, we do really need a Ubuntu (Debian) Web-Page reader, so, if you ever feel the urge … you can test it out on the site I’ve written :-D

    Kind Regards,

    Phill.

    Phill.

  27. RainCT says:

    @ phillw:

    Any pointers on where I can read more about that?

  28. phillw says:

    XHTML Strict, requires the alt tag for images (it is a ‘may have’ in other variants) For Tables, head over to http://www.w3.org/TR/xhtml2/mod-tables.html Specifically http://www.w3.org/TR/xhtml2/mod-tables.html#non-visual-rendering

    I’m using the ’scope’ variant and not the ‘headers / id’ variant. I haven’t put a summary into my tables, as the title of the table is explanation enough and I’ve had enough ‘fun’ keeping the XHTML Strict Certification whilst building and echo’ing the various table commands needed and meaningful alt tags in PHP from a MySQL database !!!

    Rule508 can be found over here –> http://www.hisoftware.com/uaccess/Index.html

    The logic of how the reader would parse a table seems straight forward enough, but I’m not a proficient enough coder to even attempt such a thing !!

    If you’re using FireFox as a browser, there is an add-on called Web Developer, that will give you checking by w3c of css and (x)html etc. It also includes a tester for Rul508. (aka “Cynthia Says” as it browses the web page like an aural browser would & checks to see if the things required are there) – It’s quite a bit to take on board at first, but does not actually mean a whole lot of re-writing if you’re using XHTML-Strict to begin with.

    If there’s anything else I can do to further help you, please feel free to e-mail me.

    Regards,

    Phill.

  29. phillw says:

    Hi,
    sorry not been back to you — There was a project called FireVox that worked with the FireFox browser. Very sadly, it appears to have lapsed support with FF 3.6, and non forthcoming. However, the guy who did it all has all the code available to any who wish to use it. Don’t know if you and friends would be interested in that sort of project.

    If you head over to the Assistive Technology Forum they would be more than happy to up-date you, else I can put you onto the mailing list for things like Orca so you can see what is currently going on & where things are heading.

    People interested in such things are always welcome.

    Phill.

 

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>