viernes, 30 de enero de 2015

OGG vs MP3 vs AAC vs FLAC vs WAV: Comparación de formatos de audio

Para los amantes de la música digital existen muchos formatos de audio en los que se puede guardar la música. En total se resumen en dos: con pérdida de datos y sin pérdida de datos. Cualquier audiófilo sabrá que para obtener la mejor calidad es mejor usar formatos sin pérdida de datos, pero, ¿qué tanto provecho se saca de estos formatos? Aunque han crecido mucho los medios de almacenamiento, para la mayoría de las personas la mejor opción sigue siendo usar formatos con compresión tales como mp3, ogg y aac. En este post hacemos una comparación entre estos formatos, así como wav y flac. Si deseas leer la versión corta y menos técnica, puedes hacerlo aquí.

La comparación consiste en un clip de sonido de 42 segundos de lluvia obtenido de freesound.org en formato wav a 24 bits. Se escogió este sonido ya que es un sonido real muy parecido al sonido blanco con respecto a que tiene componentes en un gran rango de frecuencias. Este tipo de sonidos es más difícil de comprimir, ya que muchos codecs utilizan información perceptual para descartar información que no percibimos y así ahorrar espacio. Esto se ve muy claramente en aspectos como la frecuencia de corte de varios formatos, como se muestra a continuación en algunos espectrogramas.

En esta ocasión se analizarán varios formatos mencionados en la siguiente tabla. Algunos de los sitios más comunes que los utilizan son mencionados también:

Formatos de audio comunes y sus usos


Comparación de espectrogramas:
Empezamos con una comparación de los espectrogramas, que fueron obtenidos con Sonic Visualizer. Para un mejor análisis visual es mejor comparar los espectrogramas contra el original en una visualización de pantalla completa, cambiando entre uno y otro para ver las pequeñas diferencias.


Formatos sin pérdida de datos:

WAV 16-bits

FLAC 16-bits
Formatos con compresión con pérdida de datos:


aac 160-kbps
mp3 128-kbps

mp3 256-kbps

mp3 320-kbps
ogg 96-kbps
ogg 160-kbps

ogg 320-kbps
Al comparar los espectrogramas se puede apreciar que los formatos flac y wav son virtualmente idénticos al sonido original wav de 24 bits. El formato aac no presenta frecuencia de corte, pero al comparar más de cerca se ve que en el espectrograma cambia un poco la textura entre los colores verdes y amarillos.  También, la cantidad de información representada por la línea verde a aproximadamente 5KHz se atenúa un poco en intensidad.

En el caso de los mp3s, lo más notorio son las frecuencias de corte que se tienen en las diferentes calidades. En 128 kbps además se ve cierta pérdida de información  en frecuencias más bajas, esto se puede ver en forma de "granos" de color verde oscuro. En el caso de las calidades 256 y 320 kbps se puede notar que entre ellas son casi idénticas entre ellas excepto por la frecuencia de corte. Sin embargo, se puede ver que la "textura" del espectrograma varía con respecto al original.

Para los formatos ogg se puede notar que la "textura" parece cambiar menos fuera de la frecuencia de corte del filtro. A 96 kbps la línea a 5KHz se encuentra un poco modificada, pero a 160 y 320 kbps se mantiene prácticamente idéntica. En el caso de 320 kbps las diferencias son casi nulas con respecto al audio original. Para las tres calidades, inclusive para 96 kbps, debajo de los 5KHz las diferencias con el audio original son muy pequeñas, favoreciendo a las calidades más altas.

Comparación por descriptores de audio:
Después de revisar los espectrogramas se extrajeron dos descriptores de audio (Spectral Centroid y Spectral Spread) para intentar entender cómo afecta la compresión del audio al contenido espectral. Esto se hizo para ventanas de 10.67 ms de audio que al final se promediaron y restaron para obtener un sólo número por clip de audio.

El Spectral Centroid nos dice dónde se encuentra el mayor peso de frecuencias en el audio, siendo una medida de tendencia central. El Spectral Spread es una forma de medir el ancho de banda del espectro. Al medir estos dos descriptores, podemos darnos cuenta que tanto cambia el contenido espectral al convertir a los diferentes formatos.

Dentro de los resultados se tomaron en cuenta el promedio, la variación contra el promedio y la suma de la diferencia contra el original por cada ventana, que se normalizó a medida de porcentaje entre el formato más diferente (100%) y el menos diferente (0%).



Dentro de estos resultados se puede notar que el cambio en el espectro más grande ocurre en los formatos mp3. El Spectral Centroid tiende hacia un valor más bajo. En primera instancia esto parece comprensible si se toma en cuenta que se cortan la frecuencias más altas. Sin embargo, el cambio es mucho mayor que en los archivos ogg, que también presentan este fenómeno. También se reduce mucho el ancho de banda descrito por el Spectral Spread en los archivos mp3.

Los archivos flac y wav presentan cambios que son prácticamente nulos en cuanto a estos descriptores. El archivo aac presenta una gran diferencia medida ventana por ventana en cuanto a el centro de la frecuencia, al igual que los formatos mp3. Los archivos ogg parecen conservar mejor el espectro en cuanto al resto de archivos con compresión con pérdida.

Comparación por audio residual:
El audio residual es un buen indicio para comparar que tan semejantes son dos archivos de audio que en principio deberían de ser iguales. Al hacer la resta matemática de estos dos archivos de audio se puede ver cuál es la diferencia que existe entre estos dos. Para hacer esta resta se utilizó un script de python utilizando ffmpeg para decodificar los diferentes formatos. Todos los archivos de audio residual se guardaron en wav a 16 bits.

A continuación se muestran los espectros del audio residual. Entre más oscuro se ve el espectrograma quiere decir que hay menos energía y por lo tanto es más parecido al audio wav de 24 bits original. En caso de querer escuchar los audios residuales puedes hacerlo aquí.

Formatos sin pérdida de datos:

WAV - 16 bits residual

FLAC residual


Formatos con compresión con pérdida de datos: 

aac 160 kbps residual


mp3 128 kbps resiudal

mp3 256 kbps residual
mp3 320 kbps residual

ogg 96 kbps residual

ogg 160 kbps residual

ogg 320 kbps residual


Al comparar los espectrogramas se puede ver claramente que los formatos sin pérdida de datos tienen un espectrograma casi vacío. Esto indica que los archivos son prácticamente iguales y que se pierde muy poca información al bajar de 24 a 16 bits. La diferencia en los espectros probablemente es dada por el "dithering" que puede meter el algoritmo al hacer bajar la resolución.

De los formatos con pérdida de datos, a primera vista el aac parece tener el espectro más lleno, sugiriendo que tiene la mayor diferencia contra el audio original. Los formatos mp3 parecen irse pareciendo más al audio original conforme sube la resolución. Algo a notar es que se alcanza a distinguir la línea de frecuencia de corte del codificador.

Con respecto a los archivos ogg, los archivos mp3 parecen tener un menor contenido residual, con excepción del audio a 320 kbps, en el cual el archivo ogg tiene un espectro más vacío. Cabe notar que en todos estos formatos la información debajo de los 4KHz está muy presente todavía. Esto es en parte porque en el archivo original es donde más información se concentra.

Se puede hacer un análisis por medio de un descriptor para el audio residual y hacer la comparación de manera más objetiva. En este caso se utiliza la medida de energía RMS del archivo residual y se compara en porcentaje con respecto a la energía del audio original. De esta forma un resultado más bajo nos dará un mejor índice que el audio es más parecido al original.

Energía de audio residual
En la tabla podemos ver que el formato aac tiene mucho más residuo que los otros formatos. En un principio se pensó que era un error, sin embargo al repetir la codificación de audio y volver a hacer la prueba se obtuvo el mismo resultado. Una explicación para esto puede ser que el algoritmo no codifica bien los sonidos de naturaleza estocástica, tal como con el que estamos lidiando. De esta tabla se pueden corroborar las mismas conclusiones que con los espectrogramas.

Tamaño y compresión:
Por último se compara el tamaño de los archivos. El debate principal involucra que tanta calidad sacrifica el archivo para obtener un menor tamaño. En la siguiente tabla se muestran los tamaños de los diferentes archivos en Kilobytes, así como su compresión relativa al archivo original.



Al bajar la resolución del archivo WAV de 24 a 16 bits se reduce naturalmente el tamaño del archivo. Para los archivos ogg se puede notar que tienen una compresión más grande que los archivos mp3 y aac (160 kbps), excepto para la calidad de 320 kbps, en donde es mayor la compresión del archivo mp3.

Conclusiones:
Después de este análisis se pueden hacer varias conclusiones. En primer lugar cabe constatar que este análisis sólo es un ejemplo, y los resultados pueden variar con otros tipos de clips de audio, así como con otros métodos de análisis. También es importante tener presente que se eligió un sonido de naturaleza estocástica ya que es probablemente un peor escenario para varios algoritmos de compresión. Su eficiencia puede ser diferente con sonidos más armónicos.

Es importante saber el uso que se le va a dar al audio, ya que hay muchas situaciones en las que es muy fácil elegir el formato adecuado. Si lo más importante es la calidad, y el espacio no es ningún problema, entonces el audio original con la mayor calidad posible siempre será la mejor opción. Si por otro lado, el espacio es prioridad, y además las bocinas donde se reproducirá no son muy buenas, la mayor compresión aunque tenga calidad más baja será la mejor opción. Es importante ser coherentes en cuanto a dónde se va a reproducir el audio, ya que no serviría de mucho reproducir con la mejor calidad posible en unas bocinas de teléfono móvil o portátiles de bluetooth.

Asignando un valor de 0 a 10 para cada prueba se obtienen los resultados de la siguiente tabla. Cabe aclarar que para los totales se tomó un peso para que la compresión representara el 33% y 50% del valor total en el Total 1 y Total 2 respectivamente. Se hizo de esta manera para sacar dos conclusiones diferentes, una favoreciendo a la calidad, y la otra a la compresión.

Total de puntuación para la comparación entre los diferentes formatos.
* La compresión equivale al 33% del total** La compresión equivale al 50% del total
Como conclusión final se puede decir que el formato ogg es el que mejor relación ofrece entre calidad y tamaño, de acuerdo a este análisis. Es probablemente por esta razón que Spotify eligió este formato para su música, ya que ayuda a conservar el ancho de banda sin sacrificar mucha calidad.

Para conseguir los mejores equipos que reproduzcan este tipo de formatos, y más, visítanos en http://www.homeclick.com.mx/audio.

P.S. Si te interesa conseguir los datos o los archivos originales puedes hacerlo en https://drive.google.com/folderview?id=0ByL9I01q5KNbVlRmODJCQXlEbGM&usp=sharing


6 comentarios:

  1. Me ha sido de mucha utilidad este articulo, tiempo llevaba buscando algo así, sin duda me quedo con el formato .ogg. Gracias :D

    ResponderEliminar
  2. si pero que hay del aac a 320kbps y del ac3 /tambien a 320
    podrian hacerlo con ambos a 256, 220, 190, 180, 160, kbps?

    ResponderEliminar
  3. me he dado cuenta en la entrada
    http://www.homeclick.com.mx/audio.html

    al darle "INICIO" no pasa nada
    lo podrian arreglar

    ResponderEliminar
  4. Muy bueno el articulo, me sirvio bastante para aclarar muchas dudas que tenia con respecto a los formatos de audio y sus compresiones relacionadas con la calidad del mismo.

    ResponderEliminar
  5. La información que ofreces en este artículo no es del todo precisa. Al presentar la tabla comparativa de compresión aparecen incongruencias,debido a que has utilizado bitrates variables. Una misma pista de audio de 320 kbps pesará lo mismo independientemente del formato utilizado,pesará 320 kilobits (1 byte son 8bits, entonces 40kilobytes) por cada segundo que dure la pista. Para que los datos que muestras sean más precisos lo óptimo sería o utilizar un bitrate constante (CBR) o bien en caso de ultilizar una bitrate variable (VBR) mostrar el bitrate promedio real resultante.

    ResponderEliminar