• Status Closed
  • Percent Complete
  • Task Type Patches
  • Category User Interface
  • Assigned To No-one
  • Operating System SW-codec
  • 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 MikeS - 2007-11-15
Last edited by MikeS - 2007-11-18

FS#8162 - Core speex decoder and voice for SWCODEC targets

This changes the suppoted voice format from MPEG audio to Speex and moves the decoder to the core which simplifies the playback engine greatly and factors voice away from playback.c.

Closed by  MikeS
2007-11-18 17:21
Reason for closing:  Accepted
Additional comments about closing:   Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407

New format is now used as of r15668

MikeS commented on 2007-11-15 21:24

Oops…forgot to check for decoding errors. Bump the voice version to 4.00 as well.

Project Manager

I love it!!!!!!

However, there seems to be lots of unrelated changes as well, like renaming of types etc. Were these really necessary for the voice to work?

Anyway, I think this should be committed ASAP, provided that this doesn’t in any way affect the Archos players, that still need voice files in MP3 format.

MikeS commented on 2007-11-16 13:04

They were nescessary to get me to pay attention to details in pcmbuf.c (where mostly they are) so I could finish this :). Clipping changes in there were to improve the mixing speeds a bit. Can be cleaned. I’m having trouble with building the encoder (can’t find headers) or I would have put Thom’s extra changes to post a complete solution for testing.

No effect on Archos. That’s the idea.

BTW, what about setting up the daily voice as speex? Shouldn’t that be ready to go along with a full tools patch so this gets done in one felled swoop?

MikeS commented on 2007-11-16 13:26

hmmm…perhaps I should leave the type conversions since the better clipping routine for mixing requires int32_t and int16_t explicitly and it’s nicer to used the explicitely sized types for this?

Project Manager

Keep the type conversions, they are for the better anyway.

MikeS commented on 2007-11-16 16:31

Third version. Resync. Minor revisions and comments.

MikeS commented on 2007-11-17 02:38

Fourth version. Some mp3-specific code was still being called that prevented speex .talk clips from loading successfully.

EDIT: The needed version change in voicefont.c was also missing thanks to an “svn revert” on /tools. Included here.

Tried on my x5 and had no voice. Do I need particular tools, other
than rbspeexenc?

Would it be possible to summarize what it is rbspeexenc does differently
vs the standard speexenc?

There probably needs to be a special case when the voice is generated
with espeak: it’s 22.05KHz, and speexenc appears to prefer it resampled
to 16KHz.

Can I still use my mp3 talk clips?

nls commented on 2007-11-17 09:52

harry tu, no.

MikeS commented on 2007-11-17 10:38


The voice files I was using were made with eSpeak + rbspeexenc. rbspeexenc outputs raw speex data with no ogg or other container and is required for encoding. It will also be able to resample it to the proper rate (but won’t convert stereo to mono). I recorded some talk clips at 44kHz, encoded them with it and had no trouble with them playing in the file browser.

By the way, which patch did you use? I’ve tested on four of my targets and, well, it’s the same code for all of them. Basically a sure shot to it have work if everything was encoded properly.


Available keyboard shortcuts


Task Details

Task Editing