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 >