• Status Unconfirmed
  • Percent Complete
  • Task Type Patches
  • Category Plugins
  • Assigned To No-one
  • Operating System PortalPlayer-based
  • Severity Low
  • Priority Very Low
  • Reported Version Daily build (which?)
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by ahellmann - 2007-08-26

FS#7660 - Plugin espeak TTS engine for rockbox

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.

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.

nls commented on 2007-08-26 14:10

Judging from the headers in the files in the zip this is indeed GPL v3.

Yes, it is GPL v3. But probably it is helpful for someone to do a port with an earlier version.

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.


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 espeak-r55

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).

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.

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

Where is the .rock file

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.

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.

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.

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.

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.

It works! Espeak works on the 4g. I am listening to the last Harry Potter book with it.

jonsd commented on 2008-01-12 02:00

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.

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.

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.

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.

Project Manager

… or if someone gets and uses the espeak code from before it went GPLv3

jonsd commented on 2008-01-13 11:59

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?

Project Manager

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.

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.

I would like to know the status of this project?

nls commented on 2009-10-28 17:33

the status is still that espeak is gplv3 and we can't use gplv3 code with our code which is gplv2

lecky commented on 2010-01-02 22:47

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 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)

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?

lecky commented on 2010-07-22 16:42

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:

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:

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.


Available keyboard shortcuts


Task Details

Task Editing