Spotify vs. Sky Songs

Listening testLeo en Slashdot la siguiente noticia: “Un tercio de la gente no es capaz de distinguir entre audio codificado a 48 kbps y a 160kbps”. La noticia hacía referencia a una prueba que hizo la gente de cnet, en la que comparaban la calidad de la música proporcionada por Spotify y por Sky Songs.

Spotify utiliza para transmitir la música un codificador de audio OGG Vorbis con una tasa binaria de 160kbps (en la versión de pago la tasa binaria sube hasta 320kbps), mientras que Sky Songs utiliza un codificador AAC+ con una tasa binaria de 48kbps. Para realizar la prueba se tomó a 16 personas de la redacción, se les pusieron unos cascos de 500 euros conectados a un buen amplificador, y se reprodujo la canción Billie Jean, obtenida tanto de spotify como de Sky Songs. El resultado fue, dice la noticia, sorprendente: un tercio de las personas pensaron que la canción de Sky Songs (la codificada con AAC+ a 48kbps) sonaba mejor que la de Spotify.

La noticia introduce una serie de conceptos que es necesario tener bien claros para poder entenderla correctamente. Quizás entonces el resultado nos parezca algo menos sorprendente, o cuando menos engañoso:

  • Tasa binaria: Nos dice la cantidad de bits que necesitamos almacenar por cada segundo de sonido. Por eso se mide en bits por segundo, o más normalmente en kilobits por segundo (kbps). Así, si tengo un fichero de un minuto de duración codificado a 128kbps, ocupará finalmente 128kbps*60s=768 kbits. Para que nos hagamos una idea de la cantidad de bits que se pueden llegar a ahorrar, la tasa binaria de un fichero de CD es de unos 1400kbps, mientras que un fichero mp3 codificado a 128 ó 192 kbps (10 veces menos que el CD) puede llegar a tener una calidad más que aceptable.
  • Codificador de audio: Cuando hablamos de un codificador de audio nos referimos a algún programa capaz de reducir el tamaño que ocupa un determinado fichero de audio. Es como un zip pero para ficheros de audio. El ejemplo más conocido de codificador de audio es el mp3, que nos permite reducir el tamaño de los ficheros de sonido hasta en un 90% como comentamos en el punto anterior. La mayor parte de los codificadores consiguen esta reducción a base de eliminar partes “irrelevantes” de la señal de audio original, esto es, partes cuya ausencia no podemos percibir dadas las limitaciones de nuestro sistema auditivo. Para entender esto, imaginemos que estamos grabando el sonido de un concierto de rock en directo. Ahora imaginemos que a un espectador le suena el móvil. ¿Oiríamos ese sonido? Probablemente no, porque quedaría enmascarado por el sonido ambiente del concierto. ¿Está ese sonido ahí? Si, por supuesto, aunque no sea audible. Pues bien, podemos pensar que un codificador de audio lo que haría sería eliminar del fichero de audio el sonido de ese móvil, ahorrándose así los bits que de otro modo harían falta para almacenarlo.
  • AAC+, Vorbis,…: No son más que distintos codificadores de audio, como también lo es el mp3. El mp3 es un codificador de audio basado en el estándar internacional MPEG-1. Su nombre completo es MPEG-1 Capa III, de ahí lo de mp3. AAC es, por decirlo de alguna manera, el sucesor de mp3, y forma parte del estándar MPEG-2. Sus siglas vienen de Advanced Audio Coder, y se diferencia del mp3 en que utiliza una serie de herramientas más sofisticadas para conseguir ser mucho más eficiente que el mp3, a costa de ser también bastante más complejo. El AAC+, también llamado HE-AAC (High Efficiency AAC), es una versión del AAC pensada para cuando la tasa binaria es muy baja, y forma parte del estándar MPEG-4 (No, lo siento, pero no existe el MPEG-3….). Por su parte, el Vorbis es un codificador de audio de código libre, desarrollado por la fundación Xiph.Org. Se puede ver como una alternativa al mp3, pero completamente libre, ya que no es necesario pagar licencias por patentes, tal y como ocurre con mp3, AAC y AAC+.
  • ¿Son todos los codificadores iguales? No, todo lo contrario. Incluso dos codificadores del mismo tipo (dos mp3, por ejemplo) pueden dar resultados completamente distintos. Muchos codificadores de audio se conciben de tal forma que se deja mucha libertad al programador  a la hora de ajustar su código para obtener mejores resultados, mayor velocidad de proceso, etc., siempre y cuando al final garanticen que el fichero final cumpla una serie de requisitos que lo hagan legible para un reproductor (decodificador). Así, un desarrollador puede decidir por ejemplo implementar un mp3 de muy alta calidad a costa de que tenga una elevada complejidad computacional, mientras que otro puede programar el mismo mp3 pero diseñado de forma que su complejidad sea mínima, a costa de sacrificar algo de calidad. Es normal encontrarse en la red con comparativas de codificadores de distintos desarrolladores, en las que se observa que existen claras diferencias entre unos y otros, a pesar de estar implementando el mismo estándar.
  • Tests de escucha: A la hora de evaluar la calidad de un codificador de audio uno de los métodos más utilizados es el de realizar tests de escucha. El método consiste en coger a muchas personas, entrenarlas para aprender a percibir las distorsiones más comunes en un codificador de audio, y a continuación presentarle los ficheros de los codificadores que se desea evaluar o comparar. Para hacer esto hay muchos métodos. El más típico es el conocido como test doble ciego con triple estímulo y referencia oculta, también conocido como test ABC/HR. Sí, el nombre asusta, pero la idea es muy sencilla. En este test se le presentan al sujeto tres ficheros de sonido (de ahí lo de triple estímulo). Uno de ellos, etiquetado como ‘A’, es siempre la señal de referencia (el fichero original, sin codificar), mientras que los otros dos, ‘B’ y ‘C’, contienen el fichero de referencia y la señal codificada, ordenados aleatoriamente, sin que ni el sujeto ni la persona que dirige el test sepan cuál es cuál (de ahí lo de doble ciego y referencia oculta). Al sujeto se le pide que identifique cuál de las señales ‘B’ y ‘C’ coincide con la referencia ‘A’, y después que puntúe a la otra según su calidad.

Test ABC/HR

Con todo lo explicado hasta aquí podemos destripar ya un poco mejor la noticia con la que empezaba el post. Hay que dejar claro que en la propia noticia se deja bien claro que no se trataba más que de una prueba sencilla, sin ningún ánimo de constituir un estudio serio de la calidad de estos dos sistemas, y por tanto no pretendo yo criticar la noticia en sí, sino utilizarla como base para explicar una serie de temas que no siempre se dejan lo suficientemente claros.

En primer lugar la tasa binaria no es un indicador definitivo de la calidad de un fichero. Es posible encontrarse con ficheros codificados en mp3 a 128kbps que suenan francamente bien, y también con otros que suenan francamente mal. La calidad final de un fichero codificado depende de muchos factores: del fichero en sí (los hay que son más “fáciles” de codificar que otros, de la tasa binaria utilizada, del modelo de codificador, de la implementación de dicho modelo, etc. Es por todo esto que el decir, como se dice muchas veces, que “el mp3 a 192kbps suena muy bien” es incorrecto. Como ejemplo podemos escuchar este fichero. Si lo intentamos codificar a una tasa binaria de 353kbps, podemos obtener resultados tan dispares como este, o este otro.

Sigamos. Como bien dicen en la noticia, y en los comentarios de la misma, la metodología seguida para hacer el test no es la más adecuada. En primer lugar, utilizar sólo 16 personas no tiene ninguna validez estadística. Pensémoslo un poco. Si una persona de las 16 toma su decisión al azar, supondrá un cambio en el resultado final del 1/16=6.25% hacia un lado o hacia el otro. Cuando se realiza un estudio serio de este tipo se suele utilizar un número mucho mayor de gente, que además es necesario entrenar previamente. Es por esto que este tipo de tests resultan muy costosos de hacer. Los ficheros se eligen de distintos estilos musicales, para evitar demasiados sesgos debidos a los gustos musicales de la gente, y además se procura utilizar muestras de corta duración de cada fichero (nunca una canción entera), para intentar reducir el cansancio de la gente.

Por otra parte, el mostrar a las personas sólo los dos ficheros, sin una referencia, y pedirles que elijan el mejor, siempre va a conducir a resultados sesgados si siempre mantenemos los ficheros en el mismo orden.

HeadphonesPor último, como ejemplo, dejo aquí tres ficheros para quien quiera hacer la prueba. El primer fichero es el archivo original, sin codificar. Los otros dos son versiones codificadas del anterior, uno con Vorbis a 160kbps y el otro con AAC+ a 48kbps:

Fichero de referencia

Fichero B

Fichero C

¿Sois capaces de identificar cuál es cuál?