Translate

Acerca de Advanced Audio Coding

Advanced Audio Coding es una familia de codecs que incluye (hasta este año 2020) los siguientes codecs: LC-AAC, HE-AAC, HE-AAC plus (versión 2) y xHE-AAC, siendo este último aun poco adoptado por los dispositivos y software.

Comparación del codec xHE-AAC con Opus

El codec de baja complejidad (LC-AAC o simplemente AAC) surge a fines de los años 90s para sustituir a mp3. AAC incluye la tecnología Perceptual Noise Substitution mediante la cual se sustituye información innecesaria en el audio para reducir su tamaño. El codec fue actualizado a principios de los 2000 agregando la tecnología Spectral Band Replication (SBR) que elimina del audio bandas de frecuencia que después son recuperadas, reduciendo aún más el tamaño del archivo, así se da paso al codec HE-AAC (High-Efficiency Advanced Audio Coding).

Para mediados de los 2000 se incluye la tecnología Parametric Stereo con la cual es posible codificar audio estéreo como sonido monofónico y recuperar el segundo canal mediante un parámetro que ocupa muy pocos bytes, así nace HE-AAC v2 (High-Efficiency Advanced Audio Coding second version). Este codec es ampliamente utilizado en las comunicaciones y dispositivos multimedia. 

Pasó una década para que codec fuera actualizado. A mediados de los 2010 se agregó la tecnología USAC que implica una mejora de calidad sustancial a bajísimos bitrates, sobre todo en lo referente a la codificación de voz. La inclusión de USAC dio paso al sucesor de la famila: xHE-AAC (extended High-Efficiency Advanced Audio Coding), sin embargo aún no tiene un uso y compatibilidad suficiente.

En lo que se refiere a calidad, cada sucesor de la familia Advanced Audio Coding supera al anterior a bitrates cada vez más bajos. Sin embargo para altos bitrates se vuelven prácticamente equivalentes. Por lo tanto el uso de los codecs más avanzados (HE-AACv2 y xHE-AAC) es de interés para bajos bitrates, lo cual otorga ventajas de almacenamiento en espacio mínimo o de transmisión por internet prácticamente en tiempo real. De hecho la familia de Advanced Audio Coding incluye las versiones de ultra baja latencia de cada actualización de su codec: AAC-LD, AAC-ELD y AAC-ELD v2.

Comparación de percepción de calidad para los codecs de Advanced Audio Coding. Notar como después de cierto valor de bitrate, los codecs se vuelven prácticamente iguales y para bajos bitrates las curvas de calidad se van separando acentuandose las diferencias entre las tecnologías ( https://hydrogenaud.io/index.php?topic=109486.0)

Las tecnologías que se fueron incluyendo en cada generación de Advanced Audio Coding

Limitaciones notables de los codecs HE-AACv2 y xHE-AAC

xHE-AAC actualmente tiene poco uso debido a su baja compatibilidad. Aunque se supone que Android incluye licencia de uso de este codec. Asimismo el codec tiene las mismas limitaciones que su antecesor (HE-AACv2) debido a que es un upgrade de éste e incluye las tecnologías de todos sus predecesores.

El codec HE-AACv2 codifica los canales de audio como sonido monofónico y guarda en pocos bytes las diferencias entre los canales para que el decodificador pueda reconstruirlos. También aplica la eliminación de bandas de frecuencia y su posterior recuperación mediante duplicación de la información (limitación heredada de HE-AAC).

Como es lógico, entre más complicado sea el audio más difícil será obtener buenos resultados. Por ejemplo el audio con efecto estéreo fuertemente marcado o con una amplia cantidad de frecuencias, tendrá resultados menos satisfactorios.

Para las canciones o pistas de audio los mejores resultados se obtienen cuando se convierte directo desde el CD o de los archivos originales en formato flac, raw o wav. El resultado de convertir un mp3 es sutilmente inferior a convertir un archivo flac original. Tampoco sirve convertir el audio a flac primero y después codificarlo con AAC.

La licencia de Advanced Audio Coding

Para decodificar audio, todas las generaciones de Advanced Audio Coding son completamente libres. A partir del codec HE-AAC la licencia para codificar es restrictiva y pertenece a Fraunhofer IIS el cual la libera para Android y programas de pago de PC, existiendo un proyecto libre Fraunhofer FDK AAC (fdkaac) que distibuye el codificador pero en codigo fuente (el usuario debe compilarlo). Anteriormente Nero AG distribuía un ejecutable completamente gratuito (NeroAACEnc.exe) pero no siguió desarrollándolo y lo retiró de la página.

Ffmpeg no puede distrubirse compilado con los codecs de alta eficiencia ya que están patentados pero si puede distribuirse código fuente de FFmpeg con dichos codecs.

Diferencias entre fdkaac y otros codificadores

El algoritmo para codificar audio con la tecnología Advanced Audio Coding siempre sigue los estándares del codec pero cada desarrollador puede agregar variantes que conducen a resultados distintos. 

Las diferencias entre uno y otro radican en la forma que programaron los cálculos. Al final el codec toma los datos y realiza muchos cálculos con ellos. A mayor precisión, mejores resultados se tendrán. Entre más simples más rápida será la aplicación y entre más complicados más tardará en procesar el audio. Pasos del algoritmo para descartar frecuencias pueden variar de una implementación a otra.

El codec de Nero (NeroAACEnc) es muy bueno, pero no siguieron desarrollándolo desde el año 2008. Aún así los resultados que genera son muy cercanos a codecs mas actuales y casi siempre resulta en archivos más pequeños. Sin embargo falla para bitrates menores a 24 kbits/s, prácticamente se hace inutilizable.

El codec de EZ CD Audio Converter es uno de los mejores ya que el programa se actualiza constantemente y se logran apreciar resultados sutilmente superiores, sobre todo a bajísimos bitrates (menores a 16 kbits/s).

fdkaac tiene la ventaja de ser un proyecto open source soportado por miles de usuarios de todo el mundo. Es superior a NeroAACEnc e igual a EZ CD a bitrates superiores a 16 kbits/s.