Efficient voice codecs? Speex?

I am using Ubuntu Oneiric libspeex as a voice codec. For my application, it can use nearly all the BB XM CPU. Is there an alternative that is optimized for the BB’s DSP? While it might be good for my little gray cells, I am hoping not to have to code it myself.

Any pointers welcome!

Martin

Replying to my own message, in case anyone is interested.

I was able to download Speex source and compile with NEON optimizations and -O3. That cut cpu usage by ~50% compared with the Ubuntu Oneiric distribution library, relieving the crisis for now. Speex has some support for C55 DSP, but that does not seem to work on the BB XM out of the box. Someone should work on this, but I can’t get into it for the time being.

Martin

I have compared speex with other voip codecs for android, speex is
definitely the most cpu hungry.

Prefer something like GSM8K or PCMU.

PCMU??? It uses tables for conversion and produces the highest
bitrate! Absolutely no resource consumption but huge traffic

Yes, I can send raw samples with zero cpu load. I want best compression while retaining good speech intelligibility for shortwave (ham) communications, with noise, interference, etc.

Martin AA6E wrote:

Replying to my own message, in case anyone is interested.

I was able to download Speex source and compile with NEON optimizations and -O3. That cut cpu usage by ~50% compared
with the Ubuntu Oneiric distribution library, relieving the crisis for now. Speex has some support for C55 DSP, but that
does not seem to work on the BB XM out of the box.

most likely because the BB has no C55 DSP....

Martin AA6E wrote:

Replying to my own message, in case anyone is interested.

I was able to download Speex source and compile with NEON optimizations and -O3. That cut cpu usage by ~50% compared
with the Ubuntu Oneiric distribution library, relieving the crisis for now. Speex has some support for C55 DSP, but that
does not seem to work on the BB XM out of the box.

most likely because the BB has no C55 DSP…

Yes, of course. They also have some support for C54 and C64. You need the DSP toolchain, also.

Any possibility I can get instructions for this?

Looking back at my notes, I was working with speex-1.21rc1 source code on the BeagleBoard XM. I used the following environment setting before make:

CFLAGS = -O3 -mfpu=neon -ftree-vectorize -ffast-math(?) -fsingle-precision-constant -mfloat-abi=hard (?) -mcpu=cortex-a8

[I probably experimented with -ffast-math and -mfloat-abi=hard but eventually left them out.]

The last (working) Makefile seems to have used

CFLAGS = -DFIXED_POINT -Ofast -mfpu=neon -mcpu=cortex-a8 -fsingle-precision-constant -fvisibility=hidden

I can’t swear this is the very best way to compile, but it was good enough for my work.

If I was starting over, I would try http://www.opus-codec.org/ since Speex seems to be an orphan.

Cheers,
Martin