FS#11622 - Improved Synthesis of talk clips for CamelCased files and directories

Attached to Project: Rockbox
Opened by Steve Clarke (trumpton) - Saturday, 11 September 2010, 12:27 GMT
Task Type Patches
Category Rbutil
Status Unconfirmed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version Release 3.6
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No


The Rockbox utility generates its talk files and directory files using the filename and directory names.

If the filenames do not contain spaces, but are CamelCased, they are currently synthesized badly, for example: "I Do I Do I Do" gets pronounced eeedoyeeedoyeeedoy.

The patch to the rbutil/base/talkfile.cpp processes CamelCased filenames and directory names just before synthesis and produces much better sounding talk clips.
This task depends upon

Comment by Dominik Riebeling (bluebrother) - Saturday, 11 September 2010, 14:53 GMT
There is no patch attached -- did you forget to actually attach it?

Furthermore, IMO a better approach would be to allow filename adjustments using regular expressions -- those could easily convert CamelCase to Separate Words, and also do other nice transformations (like converting numbers like "01" to "1" as not all TTS engines can do so).
Comment by Steve Clarke (trumpton) - Saturday, 11 September 2010, 15:14 GMT
I thought I had attached the patch ... well, here it is now!
Comment by Dominik Riebeling (bluebrother) - Saturday, 11 September 2010, 18:35 GMT
Two remarks about your diff (not much of a problem with this one but for the future):

- We generally prefer patches done with svn diff (or the corresponding diff option if you use a mirror with a different VCS). svn diff has the advantage to record the revision it's done against and it also uses the unified diff format which is nicer to read.
- We usually prefer patches done from the root of the Rockbox tree (so they can get applied with patch -p0, the format created by git diff / format-patch is also ok in case you're mirroring the repository).

The patch itself looks ok from a quick look, however, as I said before (especially in the forums) I don't think this is a good approach since it hard codes only one specific use case.