Evaluación Codecs Audio - Universidad Miguel Hernández
Transcripción
Evaluación Codecs Audio - Universidad Miguel Hernández
Evaluación comparativa de compresores de audio José M. Catalán Máster Universitario en Ingenierı́a de Telecomunicación Universidad Miguel Hernández de Elche email: [email protected] Resumen—El objetivo de este artı́culo, es tratar de estudiar algunos los aspectos básicos que permiten estudiar el rendimiento de varios de los compresores con perdidas y sin perdidas más empleados en la actualidad. La intención es servir de orientación a todo aquel que necesite seleccionar el codec más adecuado para su aplicación. Mayo 18, 2015 I. I NTRODUCCI ÓN Actualmente escoger el compresor de audio que mas se adapta a nuestras necesidades resulta ser una tarea muy compleja debido a la enorme diversidad de opciones que encontramos en la bibliografı́a [1]. De hecho muchas personas solo consideran aspectos como el rendimiento para elegir el codec mas adecuado. Pero hay muchos otras cualidades que vale la pena tener en cuenta y estudiar en profundidad para escoger aquel que mas nos conviene [2]. Algunos de las caracterı́sticas más interesantes a tener en cuenta podrı́an ser la compatibilidad multiplataforma, robustez, alto nivel de compresión o soporte portátil entre muchos otros. Pero también otros aspectos más técnicos como los tratados en este artı́culo: porcentaje de uso de la CPU, velocidad de compresión, PSNR y etc [3]. En el caso en el que se necesite un compresor sin perdidas no supone un grave problema escoger en un principio el compresor menos adecuado, ya que siempre se puede cambiar de formato sin riesgo de perder calidad. Pero en el caso de emplear una compresión con perdidas, seleccionar el compresor correcto desde un principio es crucial. El estudio realizado en este artı́culo, pretende desvelar algunas de las diferencias existentes en el rendimiento de los codecs por los que mas habitualmente se están decantando los usuarios en la actualidad. Realizando una comparación objetiva, se busca desvelar aspectos que puedan ser claves a la hora de seleccionar alguno de ellos para una determinada aplicación. Es importante destacar que en este artı́culo no se realiza la comparación de los codecs orientada a una aplicación en concreto. Únicamente se busca realizar una comparación objetiva de algunos de los aspectos básicos más genéricos, de tal manera que pueda servir de orientación al lector en la selección de alguno de ellos para cualquiera que sea su aplicación. II. C ODECS DE AUDIO SELECCIONADOS Entre la inmensa variedad de codecs de audio que encontramos actualmente disponibles para su uso, se ha intentado seguir un criterio de búsqueda que permitiera tener una selección de codecs lo suficientemente amplia como para abarcar las diferentes opciones existentes a elegir. Todos los codecs seleccionados son ampliamente utilizados por los usuarios. Además, como puede observarse en los artı́culos más recientes de la bibliografı́a actual, existe para todos estos codecs un gran interés en obtener datos objetivos que permitan desvelar las diferencias existentes entre unos y otros. Otro aspecto tenido en cuenta es el hecho de que el codec sea fácilmente accesible para su uso. II-A. Codecs sin perdidas Los algoritmos de compresión de audio digital sin perdidas consiguen reducir el tamaño del archivo de audio sin incurrir en la pérdida de información, es decir, consiguen que el audio decodificado sea bit por bit idéntico al original. Este aspecto provoca que el archivo comprimido ocupe mucho más espacio del que se obtendrı́a si aplicáramos algoritmo de compresión con perdidas. El uso más importante en la actualidad de este tipo codec es la compresión de audio de alta calidad para CDs. En el Cuadro I se indican los codec sin perdidas seleccionados. Cuadro I S ELECCI ÓN DE CODECS SIN P ÉRDIDAS Compresor FLAC Monkey’s Audio WavPack Formato .flac .ape .wv Creador Josh Coalson/Xiph.Org [5] Matthew T. Ashland David Bryant Versión 1.3.1 4.14 4.70.0 II-A1. FLAC 1.3.1 [10]: FLAC son las siglas de Free Lossless Audio Codec (codec de audio sin perdidas gratuito). Está especı́ficamente diseñado para audio. Este codec sin perdidas tiene la particularidad de que posee un formato de audio muy similar al MP3. Actualmente destaca como el códec de audio sin pérdida más rápido y ampliamente utilizado. Existen muchas implementaciones de este codec en código abierto y además tiene un formato y una API completamente documentados. Cuenta con el apoyo de la mayorı́a de sistemas operativos, incluyendo Windows, ünix”(Linux, *BSD, Solaris, OS X, IRIX), BeOS, OS/2, y Amiga. Las caracterı́sticas mas notables de la versión FLAC 1.3.1 son: Cada trama contiene un CRC de 16 bits para la detección de errores. Possee firma MD5 para asegurar la integridad de los datos originales que se almacena en la cabecera del archivo. Es asimétrico a favor de la velocidad de decodificación. Esto es debido a que la decodificación solo requiere cálculos aritméticos de números enteros, por lo que tiene una carga computacional muy pequeña permitiendo facilitando su implementación en hardware. El sistema de metadatos de FLAC soporta etiquetas, carátulas y busca tablas y hojas de referencia. Los archivos de formato FLAC son adecuados para su uso en aplicaciones de edición de audio. Cada frame contiene datos suficientes para decodificarse independiente. FLAC utiliza códigos de sincronización y CRC (similar a MPEG y otros formatos). II-A2. Monkey’s Audio 4.14 [11]: Monkey’s Audio es un compresor de audio sin perdidas creado por Matt Ashland. Algunas de las caracterı́sticas mas importantes de la versión Monkey’s Audio 4.14 son: Alto nivel de compresión. Alta velocidad de codificación. Bueno soporte software. Incorpora un entorno gráfico que facilita su uso, haciéndolo muy sencillo e intuitivo. Soporta audio de alta calidad. Por otro lado esta versión tiene algunos aspectos negativos que podrı́an ser de gran importancia a la hora de seleccionarlo para alguna aplicación: Problemas con la licencia. Los derechos de la fuente proporcionada no permiten ninguna modificación o redistribución. No soporta multicanal. Actualmente, el soporte para hardware es bastante limitado debido a que consume muchos recursos y se hace dificil su implementación en dispositivos portátiles. Sin embargo, un detalle muy interesante de este compresor es que emplea el algoritmo de compresión MD5 (MessageDigest Algorithm 5). Es una encriptación de 128 bits diseñado por el profesor Ronald Rivest del MIT (Massachusetts Institute of Technology, Instituto Tecnológico de Massachusetts) en 1991[4], como remplazo al algoritmo MD4. Este nos permite detectar archivos alterados de manera maliciosa y reconocer descargas corruptas o incompletas. II-A3. WavPack 4.70.0 [12]: Wavpack es un compresor de audio totalmente abierto que proporciona compresión sin perdidas, compresión de alta calidad con perdidas e incluso un modo hı́brido de compresión único. Aunque la evolución de Wavpack continua basandose ligeramente en sus versiones anteriores, el nuevo formato de la versión 4 ha sufrido una evolución tan grande que ha sido diseñado desde cero para ofrecer un rendimiento y funcionalidad mucho mejor que sus predecesores. En el modo sin pérdida predeterminado de WavPack actúa de la misma manera que un compresor WinZip para archivos de audio. Sin embargo, a diferencia de MP3 o WMA en los que la codificación puede afectar a la calidad del sonido, en este no hay ninguna posibilidad de degradación. El modo hı́brido ofrece todas las ventajas de la compresión sin pérdidas con un detalle adicional. En lugar de crear un único archivo, este modo crea un conjunto de archivos de alta calidad con pérdidas que se puede utilizar por sı́ mismos, y un archivo de çorrección”que (cuando se combina con el archivo con pérdidas) proporciona la restauración sin pérdida completa. Para algunos usuarios, esto significa nunca tener que elegir entre sin pérdidas y compresión con pérdida. WavPack emplea una adaptación de los algoritmos LMS, Elı́as y Golomb, que son técnicas de dominio público. Esta intención de evitar especı́ficamente a todos aquellos métodos y algoritmos que hayan sido patentados consigue que los codificadores y decodificadores WavPack de codigo abierto y libre de regalı́as. Algunas otras caracterı́sticas y las ya mencionadas de la versión Wavpack 4.70.0 seleccionada son las siguientes: Compatible con prácticamente todos los formatos de audio incluyendo PCM 8, 16, 24 y enteros 32 bits; floats de 32 bits; mono, estéreo y multicanal. Frecuencias de muestreo 6-192 kHz (y tasas no estandar). Soporte multiplataforma, incluyendo Windows, Linux y OS X, además de un codec de Flash, un decodificador de Silverlight que puede trabajar prácticamente en cualquier lugar, y un decodificador de audio basado en web que puede decodificar archivos WavPack en lı́nea. Capacidad para streaming sin pausas. Tolerancia a fallos en formato bloque concivido para la decodificación hardware. Modo .asimétrico.opcional. MD5 para la verificación e identificación. Modo hı́brido. Libre y de código abierto. Posee una API, una librerı́a en lenguaje C, codificador y decodificador disponible en Java y C# y licencia sin restricciones(BSD), lo que facilita enormemente su uso. Existe una versión especial de baja latencia disponible para aplicaciones personalizadas. Totalmente compatible con versiones anteriores a la 1.0 de WavPack. II-B. Codecs con pérdidas Los algoritmos de codificación de audio digital con perdidas tienen como objetivo reducir al máximo la cantidad de información del archivo original. Esto se realiza mediante un procedimiento de codificación que hace imposible la reconstrucción exacta de los datos originales, ya que mediante algoritmos consiguen eliminar aquella información que resulta irrelevante y no provoca una pérdida de calidad apreciable, llegando a niveles de compresión más altos. Normalmente el aspecto que más diferencia a los codecs con perdidas es el algoritmo que emplean para seleccionar aquella información que no influye en la calidad perceptual del archivo original, ya que esto influirá en la velocidad y por tanto en el rendimiento, además de que algunos son capaces de comprimir mas que otros conservando la misma calidad. Dentro de la gran variedad de codecs con perdidas que encontramos actualmente, se han seleccionado los recogidos en el Cuadro II. Cuadro II S ELECCI ÓN DE CODECS CON P ÉRDIDAS Compresor OPUS Ogg Vorgis TwoLAME LAME Nero AAC Formato .opus .ogg .mp2 .mp3 .mp4 Creador Fundación xiph.org Michael Smith/xiph.org Mike Cheng/The LAME Project Mark left/The LAME Project Nero AG Versión 0.1.9 2.87 0.3.13 3.99.51 1.5.4.0 A continuación, introduciremos brevemente cada uno de los codecs con perdidas escogidos. II-B1. OPUS 0.1.9 [13]: Opus es un codec de audio de código abierto. El desarrollo de este codec se orienta especialmente para voz sintética y transmisión de música vı́a internet, sin embargo, posee una gran versatilidad destacando también en aplicaciones de almacenamiento y streaming. Fue estandarizado por la Internet Engineering Task Force(IETF) como RFC-6716. Esta estandarización incorporaba tecnologı́a del codec SILK implementado en Skype y del codec CELT desarrollado por la fundación Xiph.Org. Actualmente Opus soporta múltiples aplicaciones de audio, como Voz sobre IP, videoconferencias, chat en videojuegos, e incluso actuaciones musicales en directo o a distancia. Puede escalarse desde tasas de bits bajas como voz de banda estrecha hasta tasas de bits como las de la música estéreo de muy alta calidad. Sus caracterı́sticas son las siguiente: Tasa de bits de 6 kb/s hasta 510 kb/s. Tasas de muestreo de 8 kHz (banda estrecha) a 48 kHz (banda ancha). Frames de 2,5 ms a 60 ms. Soporte para tasa de bits constante (CBR) y variable (VBR). Soporte para voz y música. Soporte mono y estéreo Soporta hasta 255 canales (MultiStream) Permite ajustar dinámicamente la tasa de bits, el ancho de banda, y el tamaño del frame. Buena robustez ante pérdidas y ocultación de pérdida de paquetes(PLC). II-B2. Ogg Vorbis 2.87 [14]: Vorbis es un proyecto de código abierto encabezado por la fundación Xiph.org. El objetivo de este proyecto es desarrollar un formato de codificación de audio y un codec de compresión con pérdidas. Esta codificación suele emplearse en conjunto con el formato de contener Ogg [6] y por tanto se le suele hacer referencia como Ogg Vorbis. Vorbis es el resultado de la evolución del compresor desarrollado por Chris Montgomery en 1993. Nació como parte del proyecto Ogg de la compañı́a Xiphophorus, también conocida como (también conocido como proyecto multimedia OggSquish) donde Chris Montgomery contó con la ayuda de muchos desarrolladores. En 1998 recibió una carta de the Fraunhofer Society anunciándole su intención de comprar derechos de licencia de Vorbis para el formato de audio MP3. El 19 de Julio del 2002 fue la fecha en la cual se lanzo La primera versión estable de Vorbis. Algunas de sus caracterı́sticas técnicas son: Tasa de bits de 32 kb/s hasta 500 kb/s. Tasas de muestreo de 8 kHz a 48 kHz , 16 bits, polifónico. Soporte tasas de bits constantes (CBR) y variables (VBR) desde 16 a 128 Kbps por canal. Actualmente a demostrado conseguir mucha mejor calidad que MP3. El formato permite modo realizar streaming fácilmente. II-B3. LAME 3.99.5 [15]: LAME es un codificador MPEG de audio de capa III (MP3) empleado ampliamente en la actualidad por la mayorı́a de programas. Es el codec MP3 recomendado por Hydrogenaudio [16]. Fue el resultado de un proyecto de código abierto dirigido por Mike Cheng en el 1998. En el 2000 se presento la primera versión estable totalmente completa de LAME, pero no fue hasta 2003 cuando sufrió una gran evolución, llegando a convertirse en un codificador de audio de alta calidad con un amplio abanico de posibilidades. La última evolución de LAME fue en 2007, cuando se mejoró la velocidad de codificación del modo VBR(tasa de bits variable). Algunos de los aspectos a tener en cuenta a la hora de usar este codec son: Tasa de bits de 8 kb/s hasta 320 kb/s. Presets muy optimizados. Alta velocidad de codificación. Permite reproducción sin pausas por medio de LAMEHeaders (solo para decodificadores compatibles). Posee licencia GPL a una LGPL desde 1999, permitiendo su uso en aplicaciones comerciales LAME permite seleccionar entres tres tipos de tasa de bits: CBR (tasa de bits constante): Se utiliza si la tasa de bits de cada trama es la misma en todo el archivo. VBR (tasa de bits variable): El modo de velocidad de bits variable se emplea cuando el objetivo es alcanzar un nivel constante de calidad a lo largo de todo el archivo de audio. Suele emplearse la tasa de bits mas baja posible. ABR (tasa de bits promedio): Es una únión de los dos anteriores. Fija la cantidad media de datos transferidos por unidad de tiempo En la actualidad, como todo codificador MP3, LAME usa tecnologı́a cubierta por patentes propiedad de la Sociedad Fraunhofer, Thomson Multimedia y otras entidades, por lo que el proyecto LAME no tiene las licencias necesarias para la tecnologı́a descrita por las patentes. Por tanto, la distribución de versiones compiladas de LAME o de los trabajos derivados en los paı́ses que reconozcan estas patentes puede ser ilegal. El proyecto LAME hace mucho hincapié en que su codificador solamente se distribuye en forma de código fuente, con la intención de que sea considerado como fuente educativa para el diseño de un codificador MP3 o en su caso, como es competencia de este articulo, para el estudio, investigación y mejora de los codificadores MP3 por parte de la comunidad. Ası́ mismo, recomienda a los desarrolladores y empresas que obtengan las licencias necesarias para incluir LAME en sus aplicaciones. II-B4. TwoLAME 0.3.13 [17]: Tras dejar claro el camino a seguir con el codificador LAME para MP3, Mike Cheng comenzó a trabajar en un codificador para MP2 que se llamarı́a tooLAME. Este codificador contarı́a con las mismas caracterı́sticas y ventajas que el codificador LAME, ya que emplea el mismo modelo psicoacústico altamente sintonizado de LAME, pero empleando un formato optimizado del MPEG de audio de capa II (MP2). Esta basando en su totalidad en la codificación ISO dist10 y en el codificador LAME. Este codificador ha sufrido una evolución muy grande con respecto a su primera versión. Desde 2003 se le conoce con el nombre de TwoLAME. Algunas de las caracterı́sticas particulares de TwoLAME son: Es muy conocido y ampliamente utilizado en el campo del audio de alta calidad. Permite configurar además de la mas comúnmente empleada tasa de bits contantes (CBR), una tasa de bits variable (VBR). Tiene campo de corrección de errores CRC. También posee BWF (Broadcast Wave Format) permitiendo la transmisión digital de audio siguiendo el estándar europeo de emisión de audio DAB (Digital Audio Broadcasting), desarrollado por EUREKA. II-B5. Nero AAC 1.5.4.0 [18]: Nero AAC es una herramienta para codificar y decodificar en el formato de audio AAC (Advanced Audio Coding, Codificación de Audio Avanzada) y editar audio MPEG-4. Fue desarrollado y distribuido por Nero AG mediante un equipo interno formado por Ivan Dimkovic, Menno Bakker y otros[19]. Esta disponible para Linux y Windows de forma totalmente gratuita para uso no comercial. Este codificador AAC de Nero fue unos de los más competitivos en una época en la que únicamente era superado por el codificador AAC de Apple. En 2006, La revista alemana Chip desveló que los archivos codificados mediante el codec AAC de Nero, testeados en un reproductor de música portátil consumı́an la mitad que los archivos MP3 que poseı́an una calidad de audio similar. Se dice que la base del proyecto del Nero AAC corresponde con el codec PsyTel desarrollado por Dimkovic. En 2006 el codec se hizo idependiente de Nero. Actualmente se sigue trabajando en su desarrollo, pero aun ası́, el software es una opción de alta calidad, estable y fiable para la codificación AAC. Algunas de las caracterı́sticas principales del algoritmo de codificación AAC son: El AAC utiliza tasa de bits variable (VBR) para adaptar el número de bits utilizados por segundo para codificar el audio en función de la complejidad de la transmisión de audio. Está diseñado para emplearlo en aplicaciones de banda ancha. Se basa en la eliminación de redundancias de la señal acústica, comprimiendo mediante la transformada del coseno discreta modificada (MDCT), muy parecido al del MP3. No es compatible con MPEG-1. Las Frecuencias de muestreo compatibles son: 16 KHz, 22.05 KHz, 24 KHz, 44.1 KHz, 48 KHz, 88.2 KHz, 96 KHz. Proporciona máxima calidad entre 320 y 448 kbps para 5 canales y entre 128 y 192 para 2 canales. Soporta flujo de bits de 12 kbps (HE-AACv2) hasta 448 kbps (AAC-LC). Este compresor tiene diferentes perfiles de compresión: AAC-LC: De 16 KBps a 448 KBps HE-AAC: De 16 KBps a 128 KBps HE-AACv2: De 12 KBps a 56 KBps (perfil más eficiente en calidad de audio) III. M ÉTODO DE EVALUACI ÓN Inevitablemente, tanto los codecs de audio con perdidas como los codecs sin perdidas son dependientes de la morfologı́a de la señal de audio, es decir, en función de la evolución de la señal de audio el codec podrá comprimir más o menos. Esto viene determinado por el algoritmo de codificación que emplea el compresor. Por tanto, para realizar una comparación objetiva del rendimiento de los codecs se les debe poner a prueba con diferentes señales de audio. Para ello se debe realizar una selección de un conjunto de pistas de audio que difieran entre si. El método más sencillo para hacer esto es escoger pistas de audio de diferentes géneros musicales. El test que se realizará consiste en codificar y decodificar por separado cada una de las pistas de audio con los diferentes codecs seleccionados utilizando diferentes niveles de compresión y extrayendo los siguientes parámetros: Velocidad de codificación. Velocidad de decodificación. Uso de la CPU durante la codificación. Uso de la CPU durante la decodificación. Con esto se podrá comparar la velocidad y consumo de cada uno de ellos. Estos dos factores afectan directamente al rendimiento del codec, por lo que se podrı́a desvelar cual de ellos es el compresor más optimizado. En el caso de los compresores sin perdidas estos dos parámetros son suficientes para desvelar cual de ellos es el mejor. Sin embargo para los compresores con perdidas no se refleja cual de ellos consigue mejor calidad de audio, lo que es un parámetro clave para concluir cual es mejor que otro. Debido a esto, se estudiará la PSNR de cada uno de los compresores con perdidas para los diferentes archivos de audio (ya que para los compresores sin perdidas no tiene ningún sentido). Este parámetro nos indicará cual de ellos consigue restaurar más fielmente el archivo original. De esta manera se tiene un parámetro que puede relacionarse con la calidad de audio obtenida. Además se extraerá el espectrograma error correspondientes a los archivos decodificados, de esta manera se podrá observar visualmente la perdida de información que provoca cada uno de los compresores con perdidas por separado en una misma pista de audio, lo que también permite estudiar la calidad de audio de cada uno de los compresores. La intención de este método de evaluación no consiste en desvelar cual es el mejor compresor de audio, sino descubrir las fortalezas y debilidades de cada uno de ellos, de modo que según los requerimientos necesarios para una determinada aplicación se pueda elegir aquel que es el más conveniente. III-A. Selección de pistas de audio En el Cuadro III se enumeran todas las pista de audio escogidas. En ella se indica el artista y albúm al que pertenece cada pista de audio. Además, hay una indicación del genero musical al que pertenece. Todas ellas han sido extraidas de CDs originales para asegurar la máxima calidad de la pista de audio. Dentro de las canciones que fueron accesibles para realizar el test, se ha intentado escoger un conjunto de pistas que abarquen un gran número de técnicas diferentes. La validez de esta prueba depende en gran parte del material de audio empleado. Lo más adecuado habrı́a sido escoger un gran número de CDs completos en lugar de pistas individuales para captar la influencia de un determinado género y no la de una determinada pista, ya que en estas pueden exhibir una sola fuente caracterı́stica que podrı́a influir en la prueba, pero requerirı́a un tiempo y dedicación demasiado grande, por lo que nos conformaremos con las pistas seleccionadas III. Obtener la lista representado por el cuadro III no es tarea sencilla, ya que existen muchos y diversos géneros que pueden ser testeados. Además, contamos con la limitación de que se necesita una fuente original para emplear la máxima calidad de la pista de audio. También cabe destacar que cada elemento más en la lista aumenta la complejidad y tiempo de dedicación de la experimentación, pero añade la ventaja de acercarnos más a datos objetivos. Se cree que las pistas seleccionadas representa un conjunto caracterı́stico de géneros musicales con múltiples diferencias entre sı́, y aunque se tiene consciencia de que los datos obtenidos no puedan llegar a ser todo lo objetivos que podrı́an, si se cree que pueden obtenerse una estimación bastante cercana a la realidad. III-B. Figura 1. Imagen descriptiva del software para edición de audio WavePad. opciones sin utilidad en el desarrollo de este artı́culo. El porque se ha escogido WavePad corresponde a sus herramientas. Incluye el análisis espectral (FFT) de la señal de audio, y además nos permite extraer el espectrograma de la pista de audio. Esta última herramienta es la funcionalidad que vamos a explotar de este software. Durante el desarrollo de la experimentación emplearemos WavePad para extraer el espectrograma de la señal original y la señal decodificada empleando los diferentes codecs seleccionadosII para posteriormente calcular el error entre el espectrograma original(.wav) y el obtenido empleando los diferentes codecs. III-B2. Process Monitor v3.10 [22]: Process monitor es una herramienta avanzada de monitorización para Windows desarrollada por Mark Russinovich que muestra a tiempo real la actividad de los registros, procesos y ficheros del sistema. Combina las caracterı́sticas de Software empleado En esta sección se va a presentar el software empleado como apoyo para obtener los datos durante la experimentación. III-B1. WavePad v6.07 [21]: WavePad en un programa de edición de audio distribuido por NCH Software que destaca por sus múltiples funcionalidades y su fácil uso. Permite grabar y editar cualquier grabación de audio, dándonos la posibilidad de cortar, copiar y pegar partes de una pista de audio y luego añadirle efectos como ecualización, eco, amplificación, reducción de ruido, etcétera. Wavepad es un editor de mp3 y wav, compatible con formatos como vox, gsm, wma, real audio, au, aif, flac, ogg y más. Sin embargo, no se ha seleccionado este editor de audio por sus capacidades de edición ni por sus efectos, ya que son Figura 2. Imagen descriptiva del software de monitorización Process Monitor para Windows. Combina las caracterı́sticas de FileMon v7.04[23] y RegMonv7.04[24] (aplicaciones de monitorización para Windows), y añade una extensa una serie de mejoras en las Cuadro III S ELECCI ÓN DE CODECS CON P ÉRDIDAS Artista ACDC Bill Evans Bob Marley Carl Orff y André Rieu Chayanne Il Divo Bon Jovi Simple Minds Nightwish Nightwish Orjazzmic The BLues Brothers Album Rock Or Bust Maestros del Jazz Natural Mystic Carmina Burana En Todo Estaré The Promise Millennium Millennium Imaginaerum Imaginaerum Packin Up The Blues Brothers Canción Rock Or Bust Luck be a Lady Keep On Moving O Fortuna Humanos a Marte Enamorado Livinón a Prayer Don’t You Forget About Me Storytime Arabesque Sax beach Everybody Needs Somebody To Love Género Rock Jazz Reggae Cantos goliardos Pop/Latino Pop/Opera Hard Rock Soundtrack Metal Sinfónico Orquesta Funky Blues que se incluyen el filtrado no destructivo, identificadores de sesión y nombres de usuario, información fiable de cada proceso, pilas de subprocesos con soporte para cada operación integrado, registro simultáneo a un único archivo, y mucho más. Estas capacidades hacen de Process Monitor un software muy conocido actualmente para la solución de problemas como la caza de malware. El aspecto más interesante para el desarrollo de la experimentación es la capacidad de Process Monitor de aislar cada proceso de Windows por separado dándonos información sobre cada uno de ellos, como la duración o uso de la CPU, datos que son los que se buscan para la evaluación de los compresores. Por tanto, emplearemos Process Monitor v3.10 para extraer la duración de los procesos de codificación y decodificación por separado, ası́ como el uso de la CPU empleado por cada uno de los codecs. III-B3. Matlab: Por último, se desarrollará una pequeña aplicación en Matlab que a partir del archivo original calcule La Relación Señal Ruido de Pico o PSNR (del inglés Peak Signal-to-Noise Ratio) introducida por cada uno de los codecs con perdidas. IV. R ESULTADOS Tras haber recogido todos los datos de la experimentación hemos obtenido los siguientes resultados. Si representamos la media de los resultados obtenidos para cada una de las pistas de audio obtenemos una aproximación general de los resultados como se muestran en las figuras 3, 4, 5 y 6. En la Figura 3 podemos observar los resultados obtenidos para la velocidad y porcentaje de uso de la CPU en el proceso de codificación de los compresores sin perdidas evaluados. Observando la gráfica podemos concluir fácilmente que los compresores Flac y Wavpack tienen un rendimiento muy superior a Monkey’s Audio. Sobre todo desde el punto de vista del uso de la CPU. Sin embargo, cabe destacar que el compresor Monkey’s Audio cuenta con una API, como se explico previamente. Esto podrı́a ser sı́ntoma de la diferencia en el uso de la CPU con respecto a los otros compresores. Si observamos ahora estos mismos parámetros durante el proceso de decodificación en la figura 4, vemos como Flac destaca muy por encima de los otros dos compresores en cuanto a velocidad, sin embargo, Flac y WavPack hacen un uso Figura 3. Codificación. Media de los resultados obtenidos tras evaluar todas las pistas de audio. muy similar de la CPU durante el proceso de decodificación. De esta misma manera, observamos como Monkey’s Audio a pesar de no quedarse tan atrás como antes en cuanto a velocidad, sigue haciendo un uso excesivo de la CPU en comparación a los otros dos compresores. Fijándonos en los resultados podemos sacar otras conclusiones. Vemos como Flac tiene un mayor rango de configuración en cuanto a nivel de compresión. Nos permite comprimir en un menor nivel a cambio de realizar una compresión muy rápido, sin embargo en porcentajes de compresión altos la velocidad se equipara a la de WavPack. Por otro lado, se observa como WavPack y Monkey’s Audio entran dentro de unos rangos de velocidad y compresión bastante definidos, lo que no da pie a muchas sorpresas. Sin lugar a dudas, el codec que consigue mayor nivel de compresión es Monkey’s Audio. Figura 4. Decodificación. Media de los resultados obtenidos tras evaluar todas las pistas de audio. Figura 5. Codificación. Media de los resultados obtenidos tras evaluar todas las pistas de audio. En cuanto a los compresores con perdidas, se ve como en la Figura 5 no existe una gran diferencia ni en la velocidad ni en el uso de la CPU de los codecs durante el proceso de codificación. Y lo mismo pasa durante el proceso de decodificación, como se aprecia en la figura 6. Sin embargo, en el proceso de decodificación se observan una serie de peculiaridades. La primera que y que más llama la atención es el hecho de que el compresor AAC de Nero tenga un comportamiento inverso en la gráfica de uso de la CPU. Al contrario que los demás, usa menos CPU cuando el archivo se ha comprimido menos y cuando la compresión es muy grande, tiene mayor carga. También vemos como OPUS tiene un mayor uso de la CPU durante el proceso de decodificación, pero es interesante observar que se mantiene constante en el mismo porcentaje de compresión. Esto puede deberse al mal diseño de la experimentación. Convendrı́a emplear muchas más pistas de audio y hacer un estudio más exhaustivo para evitar peculiaridades durante la experimentación como la sufrida con OPUS. que emplea el codec para comprimir el archivo. Por tanto, no tiene ningún sentido comparar el tiempo empleado por un codec para codificar las diferentes canciones. Es por esto que se calcula la velocidad de compresión, ya que no depende del tamaño del archivo sino de la fisiologı́a de la señal, aspecto que hemos solucionado empleando diferentes pistas de audio para la evaluación como comentábamos anteriormente. En las figuras 9 y 10 podemos observar los resultados obtenidos para algunas de las pistas de audio evaluadas por separado durante en proceso de codificación y decodificación. Como vemos, los datos obtenidos difieren entre si en función de las caracterı́sticas de la señal de audio, pero si nos abstraemos, podemos observar como cada uno de los codecs sigue un patrón similar para todas las canciones, patrón que coincide con los datos expuesto en las figuras 3 y 5. IV-A. Velocidad de compresión Uno de los parámetros que se dijo se iba a extraer de la experimentación era la velocidad de compresión de cada uno de los codecs por separado. Para ello, se a codificado con un mismo codec una misma pista de audio a diferentes bitrates, evaluando mediante el software Process Monitor la duración que empleaba el codec para cada uno de los diferentes bitrates. Como es obvio, cada una de las pistas de audio tiene un tamaño diferente,aspecto que influye directamente en el tiempo IV-B. Uso de la CPU Otro dato a evaluar era el uso de la CPU de cada uno de los codecs por separado. De la misma forma que antes, con la ayuda del software Process Monitor, a la vez que calculábamos la velocidad de codificación, se ha extraido una estimación del porcentaje de uso de la CPU para cada uno de los bitrates. Cabe señalar, que este dato puede variar en función del equipo en el que se implemente el compresor, ya que a pesar de haber evaluado diferentes pistas de audio no se ha tenido a la oportunidad de testear los compresores en un ordenador completamente dedicado a la experimentación, se ha tenido que recurrir a un ordenador de uso personal con las siguientes caracterı́sticas: como unidad el decibelio. Este parámetro permitirá ver que codec se aproxima en mayor medida a la pista de audio original tras la codificación y decodificación de la misma. Siendo mayor cuanto mejor sea la codificación. Habitualmente suele emplearse la PSNR como medida cuantitativa de la calidad de la reconstrucción en el ámbito de la compresión. Su definición matemática corresponde con la de la ecuación 2. Para el calculo de la PSNR es necesario calcular previamente el error cuadrático medio, formulado según la ecuación 1, donde I y K hacen referencia a la señal original y la reconstruida, y M y N son el tamaño de cada una. M SE = M −1 N −1 1 X X ||I(i, j) − K(i, j)||2 M N i=0 j=0 P SN R = 10 log10 M AXI M AXI2 = 20 log10 √ M SE M SE (1) (2) Donde M AXI corresponde con el máximo valor que puede tomar un dato en la señal y se define por: M AXI = 2B − 1 Figura 6. Decodificación. Media de los resultados obtenidos tras evaluar todas las pistas de audio. Windows 7 Professional 64-bit SP1 Intel Core i5 2430M @ 2.40GHz 8.00GB Doble-Canal DDR3 @ 665MHz Intel HD Graphics 3000 238GB OCZ-VERTEX4 (SSD) En las figuras 11 y 12 puede observarse de la misma forma que indicamos anteriormente, los resultados obtenidos para el uso de la CPU en diferentes pistas de audio evaluadas en los procesos de codificación y decodificación. En los compresores sin perdidas, se denota un cierto perfil en los resultados que recuerda a los resultados expuesto anteriormente en la figura 3 y 4. Pero en los compresores con perdidas no es tan sencillo. A pesar de que notamos una cierta semejanza en el comportamiento de los diferentes codecs para las diferentes pistas de audio, los valores obtenidos sufren una variación apreciable. Esto es lógico, por el hecho de que cada archivo tiene un tamaño diferente, lo que hará que el codec tenga mas o menos información que codificar o decodificar, lo que se traduce a mayor o menor carga computacional. IV-C. PSNR Como hemos comentado anteriormente, los dos parámetros previamente extraı́do para cada uno de los codecs no consiguen reflejar en el caso de los compresores con perdidas la calidad del audio comprimido. Para ello necesitábamos extraer algún parámetro que nos permitiese medir la calidad del audio comprimido. La PSNR define la relación entre la máxima energı́a de una señal y el ruido que la afecta. Normalmente suele emplearse (3) En la gráfica representada por la figura 7 puede observarse el valor de la PSNR obtenida para cada uno de los diferentes codecs tras haber evaluado todas las pistas de audio. Figura 7. Resultado de la PSNR introducida por los compresores con pérdidas. A simple vista se observan ciertas peculiaridades. AAC de Nero mantiene una PSNR constante para cualquier bitrate, por otro lado, en los demás la PSNR aumenta conforme incrementa el bitrate. Esto significa que para el caso del AAC de Nero, la calidad de la codificación/decodificación se mantiene constante para cualquier bitrate, aunque a un valor bajo. Mientras que en los demás obtenemos una mayor calidad de codificación y decodificación para valores de bitrates más altos. A simple vista se aprecia como Vorbis y LAME obtienen los mejores resultados, siendo LAME superado por Vorbis. Los peores resultados han sido los obtenidos por el AAC Nero y TwoLAME. Teniendo en cuenta que según los últimos estudios el valor de la PSNR habitualmente debe oscilar entre los 30 y 50 dB para ser un codec competitivo, TwoLAME y AAC Nero han obtenido valores muy negativos. IV-D. Espectrogramas Un espectrograma puede interpretarse como una proyección de una sucesión de Transformadas de Fourier de pequeñas tramas consecutivas, donde el contenido frecuencia y la energı́a va variando a lo largo del tiempo. El espectrograma es una herramienta que se utiliza muy a menudo para representar y analizar el contenido frecuencial de una determinada señal. Este puede ayudar a comprender visualmente el contenido de la fuente. En esta sección se calculará el espectrograma error de cada uno de los codec. Esto quiere decir que se extraerá el espectrograma del archivo de audio original y del reconstruido por cada uno de los codecs para posteriormente calcular la diferencia entre el espectrograma del archivo decodificado y el original. Ha esta diferencia es lo que denominamos en este articulo espectrograma error, ya que se representa en forma de espectrograma la información eliminada por cada uno de los codecs. De esta manera podremos visualmente identificar como actúan los codecs y que información optan por eliminar. La figura 8 contiene los espectrogramas error obtenidos para cada uno de los codecs en el caso particular de una de las pistas de audio evaluadas. El contraste indica la cantidad de energı́a eliminada, es decir, los puntos mas oscuros corresponden con aquellas frecuencias en las que se ha eliminado mayor energı́a. La altura representa la frecuencia, por pistos más altos corresponden a frecuencias mas altas. En contraste con los resultados obtenidos para la PSNR se observa como en este caso AAC Nero obtiene muy buenos resultados. A pesar de haber obtenido una PSNR muy baja (indicativo de una codificación no muy buena, ya que supone una perdida de información que podrı́a influir en la calidad del archivo) se observa como las perdidas estas muy aisladas y son de poca energı́a. Ası́ que aunque el PSNR nos indique que AAC Nero tiene mayores perdidas en la señal que los demás codecs, el espectrograma indica que estas perdidas son frecuencialmente muy dispersas y de poca energı́a comparando con los demás codecs. También en la sección anterior, se vio como Vobis y LAME obtenı́an buenos resultados. En el espectrograma de estos dos codec puede apreciarse como las perdidas se concentran en las frecuencias, y como Vorbis, vuelve a superar a LAME al igual que en la sección anterior. V. C ONCLUSION A partir de la metodologı́a empleada por diversas publicaciones para la comparación objetiva de compresores de audio, se ha intentado diseñar una experimentación simple que nos permitiera desvelar algunas de las caracterı́sticas que podrı́an resultar claves para la selección del compresor adecuado. Tras haber realizado una selección entre aquellos codecs de audio que se cree mas comúnmente empleados y con intereses por parte de la comunidad en realizar comparaciones, se ha escogido un número de pistas de audio de diferentes géneros, Figura 8. Representación en forma de espectrogramas de la informaición eliminada por los compresores con perdidas. con la intención de evaluar el funcionamiento de todos estos codecs de una manera lo mas objetiva posible. Aun ası́, se ha llegado a la conclusión de que el número de pistas de audio escogido no es suficiente, es más, se requerirı́a estudiar álbumes completos para que el carácter propio de una canción en concreto no influyan en el genero musical al que pertenece. Además, es necesario un estudio mas exhaustivo de las pistas de audio seleccionadas, tarea que resulta ser muy compleja. A pesar de no contar con un entorno propicio para el estudio del rendimiento de los compresores, y teniendo en cuenta los inconvenientes previamente comentados, tras la evaluación de los resultados, se han desvelado algunos datos interesantes que orientan con respecto a las fortalezas y debilidades de los codecs evaluados. El campo en constante evolución de los compresores de audio es muy extenso, y de una complejidad muy grande a la hora del estudio y comparación objetiva de los codecs. Existen muchos otras métricas que podrı́an haberse evaluado para estudio de los compresores. En este artı́culo se han escogido los parámetros más básicos, y aun ası́, han sido suficientes para sacar algunas pequeñas conclusiones en cuanto al rendimiento de los codecs. R EFERENCIAS [1] EBU, Subjective listening test on low-bitrate audio codecs, Tech 3296. Junio 2003. [2] ITU-R, Methods for the subjetive assesment of small impairments in audio systems including multichannel sound system, ITU-R BS.1116-1. 1994-1997. [3] Martijn van Beurden, Lossless Audio Codec Comparison, Revision 4. Junio 2015. [4] R. Rivest, The MD5 Message-Digest Algorithm, MIT Laboratory for Computer Science and RSA Data Security. Abril 1992. [5] J. Coalson, FLAC - Free Lossless Audio Codec, Fundación Xiph.org. 2008. [6] S. Pfeiffer, The Ogg Encapsulation Format Version 0, CSIRO for Network Working Group. , Mayo 2003. [7] S. Pfeiffer, The Ogg Encapsulation Format Version 0, CSIRO for Network Working Group. , Mayo 2003. [8] FLAC de la Fundación Xiph.org, Lossless audio codecs comparison. ”http://xiph.org/flac/comparison.html”. [9] HydrogenAudio Knowledgebase, Lossless audio codecs comparison. ”http://wiki.hydrogenaudio.org/index.php?title=Lossless comparison”. [10] FLAC, free lossless audio codec. ”https://xiph.org/flac/”. Mayo 2015. [11] Monkey’s Audio, A fast a powerful lossless audio compressor. ”http://www.monkeysaudio.com/”. Mayo 2015. [12] WavPack, Hybrid Lossless Audio Compression. ”http://www.wavpack.com/”. Mayo 2015. [13] Opus, Opus Interactive Audio Codec. ”http://www.opus-codec.org/”. Mayo 2015. [14] Vorbis, vorbis.com. ”http://www.vorbis.com/”. Mayo 2015. [15] LAME, The LAME Project. ”http://lame.sourceforge.net/”. Mayo 2015. [16] Hydrogenaudio, LAME. ”http://wiki.hydrogenaud.io/index.php?title = LAM E”. Mayo 2015. [17] TwoLAME, TwoLAME.org. ”http://twolame.org/”. Mayo 2015. [18] Nero AAC, Nero AAC Codec. ”http://www.nero.com/esp/company/aboutnero/nero-aac-codec.php”. Mayo 2015. [19] HydrogenAudio, Discussion regarding people associated with Nero AAC development, Retrieved 23. ”http://www.nero.com/esp/company/about-nero/nero-aac-codec.php”. Octubre 2014. [20] Hydrogenaudio, Nero AAC. ”http://wiki.hydrogenaud.io/index.php?title = N eroA AC”. Mayo 2015. [21] NCH Software, Wavepad v6.07. ”http://www.nch.com.au/wavepad/es/”. Mayo 2015. [22] Microsoft TechNet, Process Monitor v3.10, por Mark Russinovich. ”https://technet.microsoft.com/en-us/library/bb896645.aspx”. Mayo 2015. [23] Microsoft TechNet, FileMon v7.04, por Mark Russinovich. ”https://technet.microsoft.com/en-us/sysinternals/bb896642”. Mayo 2015. [24] Microsoft TechNet, RegMon v7.04, por Mark Russinovich. ”https://technet.microsoft.com/en-us/sysinternals/bb896652”. Mayo 2015. Figura 9. Codificación. Resultados obtenidos tras evaluar algunas de las pistas de audio. Figura 10. Decodificación. Resultados obtenidos tras evaluar algunas de las pistas de audio. Figura 11. Codificación. Resultados obtenidos tras evaluar algunas de las pistas de audio. Figura 12. Decodificación. Resultados obtenidos tras evaluar algunas de las pistas de audio.