En este artículo pretendo explicar algunos conceptos sobre los codecs de audio que podemos usar en VoIP y aclarar cuál es el que conviene usar en distintos escenarios.

Para empezar debemos tener claro que es un códec y cuál es su función dentro de una llamada VoIP. audio_wave

Simplificando, un códec se encarga de muestrear y comprimir la señal analógica de voz para transmitirla de manera digital y descodificarla en el otro extremo para ser reproducida. En este proceso cada códec tiene distintas características que lo hacen válido para ciertos entornos. Entendiendo que a mayor calidad de audio, es decir, mayor tamaño de muestreo, también aumenta el consumo de ancho de banda que necesitamos para transmitir la conversación.

Vamos a ver uno por uno los cinco codecs más usados en VoIP.

G711, llamado generalmente ulaw (Japón y EEUU)  o alaw (Europa) atendiendo a al método de compresión antes de codificar la señal. Liberado en 1972. Este códec no tiene compresión a nivel de datos y junto su alta tasa de muestreo hace que sea un códec de extraordinaria calidad pero con una tasa de trasferencia de datos muy alta.

G722, conocido por ser una evolución de G711, se considera como un códec HD por la gran calidad de audio que ofrece. Existen otras dos versiones, G722.1 y G722.2, no son evoluciones del primero, si no versiones totalmente nuevas. De hecho G722.2 haciendo uso de la tecnología AMR – WB es capaz de adaptarse a las condiciones de la red de 6.6 a 23.85 kbps. Se suele usar para sistemas de multiconferencia.

GSM, un viejo conocido. Con un bitrate de 13Kbits/s y una calidad aceptable, ha sido una buena elección durante años en los softphones freeware que no disponen de licencia para otro códec y en escenarios con un ancho de banda limitado.

G729, el más extendido en VoIP, se trata de un códec que guarda una buena relación entre calidad y requerimiento de ancho de banda. Con este códec podríamos tener 8 conversaciones más que si estuviésemos usando G711 con el mismo consumo de ancho de banda. No me voy a meter en el jardín del licenciamiento, solo decir que, en Europa no es necesario pagar licencia por su uso y podemos conseguirlo de manera gratuita para muchas de las arquitecturas de procesador actuales.

Opus, uno de los codecs más novedosos y que en mi opinión el mejor. Capaz de adaptarse predictivamente a las condiciones de nuestra red, y dando una excelente calidad si nuestra red tiene capacidad para ello y seguir funcionando en la peor situación. Desarrollado por la IETF, lanzado el 12 de diciembre de 2012 bajo licencia BSD, lo que nos permite usarlo sin tener que pagar por ello. Por ejemplo en Vozelia ofrecen este codec tanto en su PBX (Centralita Virtual) como en sus cuentas de sip trunking.

Comparativa de codecs

CodecPublicaciónBitrateAncho de banda (Ethernet)
G711197264 kb/s87,2 Kbps
G722198864 kb/s87.2 Kbps
G72919968 kb/s31,2 kbps
Opus20126 kb/s a 510 kb/s 8 Kbps - 128 Kbps
GSM199213 kb/s28.63 Kbps

Iperf es una herramienta open source escrita en C, que nos permite medir valores de rendimiento de red creando flujos tanto TCP como UDP. Es multiplataforma, así que podremos hacer uso de ella tanto en Linux como también en Windows.

En mi caso usaré iperf2, existe una reescritura de iperf (iperf3) hecha en enero de 2014. Como quiero medir la calidad de la red para VozIP, los ejemplos serán con el protocolo UDP. Para VozIP lo importante es tener un jitter bajo y no tener perdida de paquetes.

Lado del servidor:

iperf -s -u -f MB -i1

-s Indica que este será el servidor.

-u Indica UDP

-f MB Para formatear la salida.

-i1 Para asignar 1 segundo de intervalo entre las tramas.

 

Lado cliente:

iperf -c 192.168.1.20 -u -f MB -t 60 -b 0.1m

-c  192.168.1.20 Host del servidor.

-u Medir UDP (también lo hemos indicado en el servidor)

-fMB Formato de salida.

-t60 Tiempo de envío, cuanto estará activo. Expresado en segundos.

-b 0.1m Ancho de banda bidireccional