HydrogenAudio

Lossy Audio Compression => Speech Codecs => Topic started by: mfyahya on 2012-12-25 12:52:17

Title: Recommended speech codec for audiobooks on Android
Post by: mfyahya on 2012-12-25 12:52:17
I'm looking for a low bit rate speech codec to encode audio books, podcasts, lectures etc and play back on an Android phone (galaxy nexus)
My main requirement is to minimize storage, and be compatible with audiobook player apps that remember last stopped positions (e.g.  MortPlayer AudioBook)
From what I've seen so far amrwb codec in 3gp container seems good. Opus looks excellent but I don't think Android supports it yet. Is there anything else out there HA experts would recommend for my use case?

Thanks!
Title: Recommended speech codec for audiobooks on Android
Post by: nu774 on 2012-12-25 13:55:55
Well, if you can afford some more bits, you can also consider using HE-AAC(mono) or HE-AACv2(stereo). This example is encoded by FhG encoder and around 26kbps or so.
[attachment=7262:Diner.zip]
Title: Recommended speech codec for audiobooks on Android
Post by: DonP on 2012-12-25 15:17:03
Rockbox on android (I think you still need a development build) can play opus or speex. I've been putting voice at 12 kb/s.  Another choice is a low bitrate mp3 on google music.  (mono, and 22 khz sample rate)
Title: Recommended speech codec for audiobooks on Android
Post by: mfyahya on 2012-12-25 15:24:39
Thanks for your reply and the samples.
I see your samples are at 32 44.1 khz and stereo. Wouldn't a lower sampling rate such as 22khz and mono be more than enough for speech? I would like to have bit rates at 16kbps or lower.
Is there an he-aac encoder available on Linux?
I see aac encoding available in ffmpeg
Code: [Select]
ffmpeg -codecs |grep -i aac
DEA D  aac             Advanced Audio Coding
D A D  aac_latm        AAC LATM (Advanced Audio Codec LATM syntax)

but I don't know if that's the right codec
Title: Recommended speech codec for audiobooks on Android
Post by: nu774 on 2012-12-25 15:53:03
As for sample rate, if I feed 20.05kHz input to winamp FhG encoder, it seem to encode into 44.1kHz HE-AAC(v2) and the result gets more bloated. Therefore I chose 32k.

On linux you can try Nero or FDK AAC encoder natively. If you want to use the latter, you have to build libfdk-aac, and also ffmpeg/libav yourself with libfdk-aac enabled.
However, if you want to go as low as 16kbps, HE-AAC(v2) might not be your choice anyway.