Stephen Davies
2006-May-05 09:36 UTC
[Speex-dev] Speex and bandwidth usage on Asterisk's IAX
Hi,
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:
G.711a:
5 concurrent calls: 67.8kbps/call
30 concurrent calls: 66.2kbps/call
G.729:
5 concurrent calls: 13.1kbps/call
30 concurrent calls: 10.8kbps/call
iLBC:
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.
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.
Regards,
Steve Davies
Jean-Marc Valin
2006-May-05 17:17 UTC
[Speex-dev] Speex and bandwidth usage on Asterisk's IAX
Hi Stephen, Thanks for posting these results. Just curious, what VBR_QUALITY did you set for VBR? Jean-Marc Le vendredi 05 mai 2006 ? 18:36 +0200, Stephen Davies a ?crit :> Hi, > > 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: > > G.711a: > 5 concurrent calls: 67.8kbps/call > 30 concurrent calls: 66.2kbps/call > > G.729: > 5 concurrent calls: 13.1kbps/call > 30 concurrent calls: 10.8kbps/call > > iLBC: > 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. > > 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. > > Regards, > Steve Davies > _______________________________________________ > Speex-dev mailing list > Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev >