Monday, September 14, 2009

Can I Just Tell You How Much I Like HD Voice?


Every time I spend all day on a HD conference and then someone on a cell phone calls in I am reminded of just how horrible cell service is. It's worse than the 300~3300Hz stuff we get on the regular PSTN, which is saying a lot. Anyway, I'm just ranting. Thanks for listening.

BTW, an interesting fact came out when we were tinkering around in our conference. We have the ability to do TTS (text-to-speech for you non-telephony folks) as well as play .wav files for everyone in the conference to hear. The other day Anthony Minessale (lead FreeSWITCH developer) found a sound of crickets chirping. It's perfect for those times when you ask for help on the conference and are greeted with silence. Anyway, it happened that everyone but me was on a 8kHz connection for one reason or another. I was connected with 32kHz Polycom Siren 14, aka G.722.1c. Tony played the crickets sound and asked if we heard the crickets chirping. I said yes but everyone else said nope. After a few seconds of head-scratching Tony realized that I was on 32kHz and I was the only one who could hear the crickets.

The moral of the story: If you want to hear crickets chirping then get HD voice! :D

Okay, okay, I admit maybe that's not the most ringing endorsement of HD voice, but it is a curious phenomenon and it does demonstrate that traditional 8kHz voice has issues beyond whether someone said "S" or "F"... Anyway, if you haven't downloaded and tried out FreeSWITCH just yet then definitely do so soon! I highly recommend it, and not just for HD voice. It is more stable and scalable than Asterisk. Heck, it's more powerful than any commercial solution I've ever seen.


Thursday, September 3, 2009

Kicking It Off: Skype For Asterisk = *YAWN*

Okay, I'm not Mr. Blogger by any stretch of the imagination but occasionally I have an opinion I'd like to share so I decided to start a small blog. The inaugural blog post will deal with a topic that has the twitterverse all abuzz: Skype for Asterisk.

On the surface this seems like a really cool thing: Open Source Telephony meets Skype (and its 440+ million users) for free calls. Skype for Asterisk (SfA) is a collaboration between the Skype developers and Digium, the company behind the Asterisk open source PBX. The good thing about this union is that it does not use any proverbial hacks, that is, Digium was given access to the Skype SDK/API/whatever you call it. In plain English: you don't have to have a Skype client running on your Asterisk box for SfA to work. And it's "only" $66 per concurrent channel/user.

Okay, so what's the problem? you ask. Quite simply this: Skype has a higher quality codec called SILK, which actually sounds nice if you're used to the lousy quality of regular PSTN calls or the horrible quality of mobile phone connections. However, SfA does not use this proprietary codec. Instead it supports only two codecs: G.711 and G.729A. Suffice it to say I'm not a huge fan of either of these codecs. (See this post for my feelings on G.729.) And G.711 sucks up a lot of bandwidth and gives only marginal quality. Relatedly, the Skype for SIP program supports only G.729.

My question is this: WHY?!? Scratch that - I don't care why, I only care that SILK is not an option. I can understand not limiting the codec choices to SILK - that actually makes sense. However, having only low quality codecs available seems just plain silly to me. I can already make "free" calls on the Internet without Skype using low quality audio. With FreeSWITCH I'm able to make free calls with high quality codecs. Adding Skype and SILK to the list just makes the HQ pool bigger. Giving me more low quality calls at one-time cost of $76 per channel ($66 for SfA, $10 for G.729 license) doesn't exactly get my blood pumping.

If I'm a business and I'm looking at adding Skype capacity to my PBX then I really need to think this through. Let's say I think I might get 10 simultaneous Skype calls, and that I want to use G.729 instead of G.711 so that I can save bandwidth. That's $760 before I've spent a dime on hardware, and I haven't even tested to make sure this is going to work. Here's an alternative solution: Use FreeSWITCH with the Skypiax module. If you already run FreeSWITCH as a PBX then it's pretty easy to get Skype support: just compile and run mod_skypiax. If don't have a FreeSWITCH machine running just yet then find a spare server and start learning it! :) The author of mod_skypiax, Giovanni Maruzzelli, has nice instructions on getting up and running. You can get high-quality Skype calls on FreeSWITCH which can connect to other SIP-based communications systems. You can do this with zero out-of-pocket software costs.

So what's the catch? Simple: mod_skypiax is a bit of a hack in the programming sense of the word. Each concurrent channel of Skype requires an instance of the Skype client. Gasp! The horrors! Oh wait, it's not actually all that bad. Testing on Linux systems we've done 20 concurrent channels with decent performance. (Giovanni is working with the ALSA developers on making things even better.) If you need a lot of Skype channels then just stack the servers. Spend that SfA + G.729 money on hardware instead.

So how does it all work? How is it that SfA (and Skype for SIP) don't support SILK but the "hack" of Skypiax on FreeSWITCH does support it? Simple: the "hack" uses the Skype client, and the Skype client does the SILK transcoding. The Skype client transcodes between SILK and 16-bit signed linear audio. FreeSWITCH never sees SILK, it only sees a simple audio stream which it can then transcode into G.722, Speex, CELT, or any other supported codec. On the other hand, SfA doesn't do SILK, only G.729 and G.711. SfSIP uses only G.729 (right now). In simple terms, the "hack" uses the Skype client which does the magic of transcoding to/from SILK.

Before all the Asterisk fans get their knickers in a twist, relax. I spoke with Giovanni and he is almost done with Skypiax for Asterisk. When he releases it then all you Asterisk users will have the "free" option as well. The difference, though, is that Asterisk is less stable that FreeSWITCH and you'll have to figure out how many Skype client instances you can reliably run without your Asterisk box going haywire. Of course, since Asterisk doesn't do 16kHz codecs very well I can't tell you if you will get the high quality audio using Skypiax. Please try and report back.

Now it's your turn. Tell me what you think of all this stuff: Skype, Asterisk, FreeSWITCH, HD Voice, etc. What do you use and why? How well does it work? Do you even care about HD voice? I know I do, but I use it all day every day. When and how do you use it? I'm listening...