[Speex-dev] Speex and bandwidth usage on Asterisk's IAX

Stephen Davies stephen.l.davies at gmail.com
Fri May 5 09:36:50 PDT 2006


I've just joined the list.  Thanks Jean-Marc and other contributors
for your efforts with Speex.

Anyway - I've been hired by a local firm to investigate,
write-code-as-required and generally help them get the maximum
bang-for-the-byte for VOIP traffic on the hyperexpensive Internet
bandwidth going out of South Africa.

I started the process by doing some methodical measurements and just
wanted to post the results to the list.

My test hookup was two Asterisk boxes, connected with private 100Mb
ethernet for an IAX trunk.  I used Asterisk SVN - so far I've tested
the branch-1.2; I will test the trunk too.

My customer moves a decent volume of calls, so I tested the various
codecs and configs with 5 concurrent calls, 10, 15, 20, 25 and 30.  I
used recordings of real conversations - playing the one side from
machine A to machine B, the other from B -> A (in other words, just
like real calls).

The reported results are all with IAX trunking in use (trunk
timestamps also enabled).
(IAX trunking makes a huge difference for total bandwidth usage - for
example for an 8k codec like g.729 (or speex quality=3) trunking
reduces bandwidth usage nearly in half).

I'm probably being a bit optimistic about my accuracy in quoting
results with the decimal place!

Here are some results for codecs other than Speex:

    5 concurrent calls: 67.8kbps/call
    30 concurrent calls: 66.2kbps/call

    5 concurrent calls: 13.1kbps/call
    30 concurrent calls: 10.8kbps/call

    5 concurrent calls: 16.6kbps/call
    30 concurrent calls: 15.2kbps/call

Speex is very versatile, so I started testing Speex with all the fancy
stuff off.  Quality was set to 3.  I am using an SVN checkout of

Speex "basic":
    5 concurrent calls: 13.5kbps/call
    30 concurrent calls: 11.2kbps/call

Next, started turning on the nice features:

Speex "vad":
    5 concurrent calls: 12.2kbps/call
    30 concurrent calls: 9.6kbps/call

Speex "vbr":
    5 concurrent calls: 11.2kbps/call
    30 concurrent calls: 8.95kbps/call

Speex "vbr". preprocessor on and doing denoise, agc and pp_vad:
    5 concurrent calls: 7.0kbps/call
    30 concurrent calls: 6.9kbps/call

So I think that that final result is pretty amazing.  That's 35% less
bandwidth usage than G.729.  Even without the preprocessors help you
do 17% better.

Steve Davies

More information about the Speex-dev mailing list