Warning: mysqli_real_connect(): Headers and client library minor version mismatch. Headers:50625 Library:50543 in /sites/rockbox.org/flyspray/adodb/drivers/adodb-mysqli.inc.php on line 108 FS#7660 : Plugin espeak TTS engine for rockbox



FS#7660 - Plugin espeak TTS engine for rockbox

Attached to Project: Rockbox
Opened by Toni (ahellmann) - Sunday, 26 August 2007, 12:47 GMT
Task Type Patches
Category Plugins
Status Unconfirmed
Assigned To No-one
Operating System PortalPlayer-based
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No


A first port of espeak running on rockbox.
Warning: Only tested on Sansa player!

I have skipped some advanced features of espeak, for example:
- mbrola
- on the fly Translator language switching (try: 'spring' with german selected)

Because this plugin is very basic, there is no file input selection.
It always reads from the 'test.txt' in the root.
You have to unzip the espeak-data to the root of your player.
This task depends upon

Comment by Paul Louden (Llorean) - Sunday, 26 August 2007, 13:19 GMT
Which version of espeak is this based on? Their recent change to the GPLv3 license makes their most recent code incompatible with Rockbox's license.
Comment by Nils Wallménius (nls) - Sunday, 26 August 2007, 14:10 GMT
Judging from the headers in the files in the zip this is indeed GPL v3.
Comment by Toni (ahellmann) - Sunday, 26 August 2007, 16:02 GMT
Yes, it is GPL v3. But probably it is helpful for someone to do a port with an earlier version.
Comment by Jonas Häggqvist (rasher) - Monday, 27 August 2007, 00:06 GMT
Just tried this on my H120, and does nothing at all. Running the plugin just gives me a blank screen for a while and some disk activity, then it exits.
Comment by Dave Chapman (linuxstb) - Monday, 27 August 2007, 10:01 GMT

Should we assume from your reply that you're not intending to port a GPLv2 compatible version of espeak?

Checking the espeak SVN, the last GPLv2 revision was 55. For anyone that is interested, this can be grabbed with the command:

svn -r 55 co https://espeak.svn.sourceforge.net/svnroot/espeak espeak-r55
Comment by Toni (ahellmann) - Monday, 27 August 2007, 17:53 GMT
I just checked the r55 version. Seems to me that there were a lot of cleanups and sound data improvements.
I will check the sound quality of r55 soon and if it is not possible to incorporate the latest source into
rockbox, I surely will try to port this GPL v2 compatible version too (only a matter of time :-).

And yes, the H100/H300 will not run with the above code, because of endian issues (seems to be solvable within short time).
Comment by Jonas Häggqvist (rasher) - Monday, 27 August 2007, 17:58 GMT
I believe Will Robertson (aliask) has contacted the eSpeak author inquiring about releasing the current source as GPLv2, so until an answer is received, I'd not start backporting to r55.
Comment by Daniel WECK (daniel.weck) - Monday, 10 September 2007, 22:19 GMT
I have tried this on my Toshiba Gigabeat F60, and it works fine. Well done !
I am looking forward to hearing more about the licensing issues.
Regards, Dan
Comment by harry tu (bookshare) - Wednesday, 19 September 2007, 01:41 GMT
Where is the .rock file
Comment by Daniel Dalton (ddalton) - Wednesday, 19 September 2007, 11:47 GMT
You need to compile plugins for each target. You will need to extract the zip file with the source (I think) over your source tree. so to something like:
Then extract the other zip file to the root dir of your player.
Then compile and make a file called test.txt. Then test your new build and hopefully it works.
Test.txt should be in the root of your player.
I only got it to work on the sim. I am using a h300.
Please correct me if I am wrong.
Comment by harry tu (bookshare) - Wednesday, 19 September 2007, 22:32 GMT
I am blind, so my screen reader cannot find the packages to click on for sigwin and I am using windows. I mom cannot find them either. Could I please have a precompiled .rock file for the ipod 4g grayscale? Thanks.
Comment by Daniel Dalton (ddalton) - Saturday, 22 September 2007, 05:22 GMT
You can install cygwin with a screenreader. When you get up to the package selection do the following:
1. Find the line all default
2. Left click the d.
3. Continue with the rest of the install. Do this for the rockbox nearer and the base one.

Also note this could download over 1 gb.
Comment by harry tu (bookshare) - Sunday, 23 September 2007, 01:38 GMT
Just as a curiosity question, can I copy a plugin built for the sim and expect it to run on the target? I cannot get my trunk to build on the ipod4g setting.
Comment by Daniel Dalton (ddalton) - Sunday, 23 September 2007, 04:37 GMT
I don't understand your question. Also the tracker isn't for support so please ask in the forums or on irc. Also try the mailing list. But if you can build for the sim you should be able to build for the player. Did you read about editing profile? For the cross compiler?
But if you want any more help please use one of the support channels.
I don't even know if it will run on the 4th gen but I am sure it will run on the sim.
Comment by harry tu (bookshare) - Sunday, 21 October 2007, 02:29 GMT
It works! Espeak works on the 4g. I am listening to the last Harry Potter book with it.
Comment by Jonathan Duddington (jonsd) - Saturday, 12 January 2008, 02:00 GMT
I'm not sure what is the problem that is mentioned about licensing. I'm the developer of eSpeak and I was asked about this last September. My reply was that I looked at the Rockbox source code files and saw that they are licenced under the GPL, but with no specific version. The GPL licence which it refers to states that if no version number is specified, then you can assume any version. So you can assume "GPL version 2 or later", and there is no compatibility problem with eSpeak which is licenced under GPL version 3.

Comment by Jonas Häggqvist (rasher) - Saturday, 12 January 2008, 09:24 GMT
This is in my opinion sketchy reasoning at best. The source files say they are licensed under the license in docs/COPYING, which is GPLv2. To me, that's fairly specific.

You can argue back and forth, but until a lawyer looks at it, I don't think any of us can say with certainty that Rockbox is "any version". For this reason, I think we probably won't be incorporating GPLv3 code, including eSpeak.

This is my personal opinion - I do not in any way speak for the entire Rockbox project.
Comment by Paul Louden (Llorean) - Saturday, 12 January 2008, 09:30 GMT
Also, even if it is "v2 or later", that means that including espeak forces us to take the plunge and become permanently v3. Fundamentally, "or later" just means we can relicense the project, but if we incorporate v3 code, we obviously can't go back while that code is still included, and if it's not "v3 or later" code, we can't go forward either.

Not everyone involved necessarily feels that GPLv3 is the best place for Rockbox. There have already been some interesting debates over the matter.
Comment by Dave Chapman (linuxstb) - Sunday, 13 January 2008, 11:23 GMT
I agree with jonsd that the parts of Rockbox with the standard header are "any version", but even if that was accepted (which not all Rockbox devs do, but this probably isn't the best place to rehash those arguments), there are some other parts (e.g. code taken from the IPL or vanilla Linux kernels) that are v2 only. Work would have to be done to seek permission from the relevant (C) holders to relicense under "v2 or later", or the code removed/rewritten.

And Llorean's point is also very valid - by incorporating espeak we would be moving Rockbox to GPLv3, and not everyone seems to want that (although I would be happy to). Some people seem to actively want a "v2 only" license.

So in practice, I can't see this happening unless jonsd reverts the espeak license back to v2 or later.
Comment by Daniel Stenberg (bagder) - Sunday, 13 January 2008, 11:26 GMT
... or if someone gets and uses the espeak code from before it went GPLv3
Comment by Jonathan Duddington (jonsd) - Sunday, 13 January 2008, 11:59 GMT
I'm still not sure why there is a problem, but perhaps I don't understand enough about Rockbox software.

A Linux distribution such as Ubuntu includes both GPLv2 (eg. kernel) and GPLv3 (eg. espeak, samba etc.) software without problems. Is Rockbox similarly a Linux distribution, or is there a difference?

Here, eSpeak seems to be an optional download, the equivalent of an Ubuntu or Debian "package", and Ubuntu packages can include even non-free software (eg. NVIDIA drivers). I presume your eSpeak download for Rockbox has been compiled and configured to run on Rockbox, but why does that cause a licencing problem? Are you using eSpeak's standard command-line interface, or is it modified and combined with some Rockbox code?

I could give a waiver/assurance that I won't sue for using eSpeak on a Rockbox which is licenced under earlier versions of GPL, but it seems that is not the problem. Rather, Rockbox seems to think that running GPL v3 software on their distribution breaks their own licence rules. Have you asked the Free Software Foundation for their advice on this?
Comment by Daniel Stenberg (bagder) - Sunday, 13 January 2008, 12:07 GMT
Rockbox is (very) different to a Linux distro. We have no dynamic/shared linking, we have everything in a single binary blob. We don't need to ask FSF about this, it is quite clear and without debate that plugins are clearly derivates of Rockbox and thus they cannot use incompatible licenses and still be distributed.

So yes, building Rockbox as-is with GPLv3 licensed parts included and distributing would be a license violation.
Comment by Eddy (bascule) - Tuesday, 15 January 2008, 09:42 GMT
This does not build for me either (for the Sansa e200 target). Unfortunately, I don't have the error message(s) with me now.

Is there any reason you have packaged it as you have, rather than as a properly diff'ed patch file? I hand-edited my copy of /plugins/Subdirs with the single change that the source contained in case the Subdirs file had changed in other ways in SVN.
Comment by harry tu (bookshare) - Tuesday, 27 October 2009, 00:04 GMT
I would like to know the status of this project?
Comment by Nils Wallménius (nls) - Wednesday, 28 October 2009, 17:33 GMT
the status is still that espeak is gplv3 and we can't use gplv3 code with our code which is gplv2
Comment by Peter Lecky (lecky) - Saturday, 02 January 2010, 22:47 GMT
Hi All,
I slightly updated this plugin (toni thanks for your work). Plugin uses Toni's port of Espeak from 2007 (I will try to update it later). I added some functionality to be able to use it as a book reader:
- Tested and works on sansa fuze
- It can be used as a viewer (copy compiled .rock file to .rockbox/rocks/viewers and update viewers.config file) or it opens /test.txt if you run it from file browser (espeak-data folder must be in /.rockbox/rocks folder),
- Use up and down buttons (Some keys are assigned for all supported targets) to read by paragraphs (hard linebreaks)
- Use select to toggle continuous reading (say all)
- Use long select to open simple menu with self explanatory functions (load bookmark, save bookmark, set pitch, voice, speed, language)
- It is possible to create one bookmark for each file, the cursor position is stored in file_name.bm where file_name is currently read file (.bm file will be created in the directory where is the currently opened file located)
- Oh and sorry to all sighted persons. This plugin only speaks (nothing except errors is printed to screen) .
So happy reading! (write me if you will find an anoying bug)
Comment by Mark Koski (deameyes) - Saturday, 05 June 2010, 17:37 GMT
I'm able to compile this for my Sansa e200 model, but for my C250V2 it won't actually compile it. There are no error messages, just no .rock file after compiling. Is there a simple fix for this?
Comment by Peter Lecky (lecky) - Thursday, 22 July 2010, 16:42 GMT
C250V2 is a low mem target so there is not enough memory to run this plugin. Sorry.
I have some updates (config file support, automatic actions,...). See here:
Comment by MichaelGiacomelli (saratoga) - Tuesday, 12 June 2012, 20:01 GMT
Regarding the GPLv2/v3 issue, we have since gone through and ensured that all of rockbox is GPLv2 or later so in principle we can use GPLv3 code now. The downside of this is that it forces all of rockbox to be GPLv3, which is mildly annoying and might limit our future options since a lot of useful code is not GPLv3 clean.

So I think a eSpeak patch could now be accepted, although we would want to have a compile-time option to include it so that people can still use rockbox with the GPLv2 if they need it.

Edit: Sorry, link to decision at devcon: http://www.rockbox.org/wiki/DevConEuro2011
Comment by Toni (ahellmann) - Wednesday, 13 June 2012, 07:10 GMT
That is good news. But due to private reasons I have stopped the rockbox coding. So someone else has to adapt and maintain the existing code.