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.

Documentos relacionados