Estudio de diferentes códecs de audio

17 Oct 2005

Aunque debería estar trabajando en unas webs, el proyecto y los laboratorios de mi escuela me dedico a las cosas que me apetecen hacer una tarde de domingo. ¿Qué cosas son? Pues hoy toca comparativa de codecs de audio, mira tú por dónde.

He leido algunas comparativas sobre esto en internet, en inglés y no recuerdo haber encontrado una comparativa con los datos de esta: un análisis espectral. Sólo una vez en Pc-Plus y no incluía a Ogg. Conclusiones: Ogg es el mejor códec de audio (con pérdidas) que existe en este momento. ¿La pega? El tiempo de compresión es demasiado alto y, por experiencia (no he hecho el test, pero lo haré pronto ;) ) consume mucha más CPU que WMA.
<!--more-->

Procedimiento

Primero hice un WAV desde un CD. La canción elegida fue Irish Jig ya que además de gustarme mucho (^_^) tiene muchos agudos, graves y momentos de solos de instrumentos; dura 2:40. Luego lo comprimí a los siguientes formatos, en los que he apuntado, para cada uno, el tiempo que tardó en comprimirse:

Formato Tiempo Tamaño (KB)
ogg_2q (96kbps) 29s 1.999
ogg_1q (80kbps) 30s 1.681
ogg_0.2q (67kbps) 28s 1.430
lame_mpeg2_160 4s 3.137
lame_mpeg2_128 4s 2.510
lame_mpeg2_64 6s 1.255
lame_mpeg1_128 13s 2.509
lame_mpeg1_64 19s 1.255
wma_96 12s 1.904
wma_80 13s 1.590
wma_64 11s 1.276

Luego hice un wav de cada uno de ellos usando Audacity y los analicé utilizando SpectraLab. Hice un análisis en frecuencia sacando gráficas lineales en el eje de la frecuencia (haciéndolas logarítmicas se veían peor cuando los codecs cortan en altas frecuencias) configurando al programa para que hiciera una FFT cada 4096 muestras y mostrara la media de cada 30 FFTs. Luego configuré la opción Peak Hold, que deja marcado el máximo valor de nivel espectral en cada rango de frecuencias, por lo que lo que se observa en los gráficos son las mayores amplitudes alcanzadas por cada codec en las diferentes frecuencias. Los he subido a mi cuenta Flickr.

Notas

LAME me comprimió los mp3 a 64 con una frecuencia de muestreo de 22050 Hz por lo que no he hecho gráficas por no poder compararse con las otras; además se oye de pena. A partir de la bajada que se observa en la gráfica (excepto en el wav) se debe suponer un “cero” en la práctica ya que esos datos corresponden a los máximos alcanzados en algunas partes, pero se “llena” de golpe a partir de esa bajada, esto es porque el codec distorsiona esas frecuencias y las “almacena” como una sola (o unas pocas).

Conclusiones/Resumen:

Las imágenes muestran cómo mientras Ogg a 67kbps se comporta bastante bien hasta los 16Khz, WMA a 64kbps no llega ni a los 13Khz, comportándose un poquito peor que un MP3 a 128Kbps. Con lo que queda patente cómo: (1) Ogg en ese bitrate destroza a WMA y (2) cómo la moto de Microsoft de que WMA a 64 se escuchaba mejor que MP3 a 128 la pudo vender, pero mentía.

Ahora vayamos a los 96Kbps (2q en Ogg). Aquí WMA se comporta mejor que Ogg en los graves reproduciendo un poco más fielmente la envolvente en frecuencia que presenta el Wav original, ya que sobre los 3Khz Ogg pierde un poco de potencia. De hecho me atrevo a decir que, al menos en este resultado y hasta 12Khz WMA no ofrece pérdidas (virtualmente) ya que ambas gráficas son iguales. De todas maneras para las bajas frecuencias este test no es el idea. En altas frecuencias vuelve a ganar Ogg llegando hasta los 16 Khz salvando el tipo cuando WMA apenas sobrepasa los 15.

El resto es verlo vosotros, si alguien llega a alguna otra conclusión o conoce otra web donde se haya hecho un test similar estaría bien que lo comentara. Tan sólo decir que es curioso cómo todos los codecs trabajan mejor a altas frecuencias en el canal derecho que en el izquierdo… ¿Psicoacústica? Seguramente.

¿Mi opinión? Aunque me resulte triste seguiré utilizando WMA para escuchar música en mi PDA por tres razones: es un muy buen códec a 96kbps, tarda poquísimo en comprimir (casi 3 veces menos que Ogg) (y por las mañanas, cuando voy a toda prisa comprimiendo música para pasarla a una tarjeta de memoria, no me sobra el tiempo) y el el descompresor quema poca CPU, que gasta la batería que necesito en mi PDA. Eso sí, para almacenar música, sin ninguna duda, Ogg a 96kbps, que ya a 80Kbps funciona muy bien pero se inventa demasiado los agudos para mi gusto.

Es un poco tarde y no tengo muchas ganas, si alguien se curra un mosaiquito con las gráficas y/o las superpone con distintos colores ¡bienvenido sea!<!--more-->