¿Cómo puede la compresión FLAC ser sin pérdida? Una explicación contraintuitiva
7 min de lectura
La pregunta contraintuitiva
La frase "el archivo se reduce a la mitad pero no se pierde nada" suena ilógica la primera vez que se oye. Si reduces algo a la mitad, algo tiene que haber desaparecido, ¿no?
En realidad, no. Y para entender por qué hay que ver primero lo derrochadores que son los datos sin comprimir.
¿Por qué es tan derrochador el WAV?
Un archivo WAV contiene los valores de amplitud instantánea de una onda sonora, medidos 44.100 veces por segundo. Cada medición se escribe como un número de 16 bits, es decir, un valor entre -32768 y +32767.
Ahora el punto crucial: las mediciones vecinas no difieren mucho entre sí.
Una onda sonora es un fenómeno físico; la presión del aire no salta de -30000 a +30000 en un instante. Las muestras consecutivas suelen estar próximas. Pero al WAV eso le da igual: escribe cada muestra con 16 bits completos, como si fuera un número totalmente independiente.
Ahí está el espacio comprimible. Los datos ocupan mucho más de lo que ocupa la información que transportan.
La idea central del FLAC: registrar la diferencia
Empecemos con un ejemplo sencillo. Supongamos estas muestras consecutivas:
1000, 1005, 1009, 1012, 1014, 1015
Si las escribes tal cual, hay que dedicar un hueco completo de 16 bits a cada una. Pero si escribes las diferencias entre ellas:
1000, +5, +4, +3, +2, +1
Salvo el primer valor, todas son de una cifra. Escribir esos números no requiere 16 bits: con 4 o 5 sobra. Y no se ha perdido información: si conoces el primer valor y las diferencias, reconstruyes exactamente la secuencia original.
Lo que hace el FLAC es una versión mucho más sofisticada de este principio.
Predicción lineal: predecir y escribir la diferencia
El FLAC no se limita a tomar la diferencia con el vecino. En su lugar construye un modelo de predicción para cada bloque de audio.
El modelo responde a esta pregunta: "observando las pocas muestras anteriores, ¿cómo predigo mejor la siguiente?" Eso se llama predicción lineal. El codificador calcula los coeficientes que mejor funcionan para ese bloque.
Después registra:
- Los coeficientes del modelo (unos pocos números por bloque, muy poco espacio).
- Los valores residuales: la diferencia entre la predicción del modelo y la muestra real.
Si el modelo funciona bien, los residuos son números pequeños. Y los números pequeños necesitan pocos bits.
¿Por qué no hay pérdida?
La respuesta está en que la operación se realiza con aritmética exacta.
El decodificador lee los coeficientes del modelo almacenados en el archivo y realiza exactamente la misma predicción que hizo el codificador. Después suma el residuo registrado a esa predicción:
muestra real = predicción + residuo
Sin redondeos, sin aproximaciones, sin "lo bastante cerca". Como se usa aritmética entera, el resultado es la muestra original en sí. Cada vez, para cada muestra.
Ahí reside precisamente la diferencia con los formatos con pérdida. El MP3 dice "si descarto esta información, nadie lo notará", y la descarta de verdad. El FLAC dice "puedo escribir esta información de forma más concisa", y no descarta nada.
Codificar los residuos con eficiencia
En un último paso, el FLAC escribe los valores residuales mediante una codificación entrópica. Esa codificación está optimizada para una distribución en la que los valores pequeños son frecuentes y los grandes escasos, que es exactamente como se distribuyen los residuos de audio.
Así, los valores pequeños y frecuentes se escriben con muy pocos bits, y los grandes y raros con más. El número medio de bits baja de forma notable.
¿Qué hace el nivel de compresión?
El nivel de compresión 0-8 del FLAC determina cuánto esfuerzo dedica el codificador:
- ¿Cuántos modelos de predicción va a probar?
- ¿Cómo va a elegir el tamaño de los bloques?
- ¿Aprovechará la relación entre canales? (en estéreo, la codificación medio-lateral suele comprimir mejor que izquierda-derecha).
En un nivel alto, el codificador prueba más opciones y se queda con la mejor. Eso tarda más y produce un archivo algo más pequeño.
Pero la calidad nunca cambia. Los archivos producidos en el nivel 0 y en el nivel 8 devuelven datos PCM idénticos bit a bit al decodificarse. El nivel no es un ajuste de calidad, es un ajuste de presupuesto de cálculo.
Del lado de la decodificación, la diferencia entre niveles es prácticamente imperceptible; un archivo se decodifica rápido en cualquier nivel.
¿Por qué varía la tasa de compresión?
Ya conoces la respuesta: la previsibilidad.
- Voz hablada, solos acústicos, pasajes tranquilos: forma de onda regular, predicción acertada, residuos pequeños. Se comprimen muy bien.
- Música clásica, grabaciones de sala: dinámica amplia pero estructura regular. Se comprimen bien.
- Mezclas densas de rock o electrónica, masterizado agresivo: señal saturada y compleja, la predicción se complica. La ganancia cae.
- Ruido blanco: impredecible por definición. Apenas se comprime.
Si tu grabación se comprimió mal, no significa que hayas elegido el ajuste equivocado: simplemente es su naturaleza.
La distinción fundamental con la compresión con pérdida
Merece la pena repasar lo anterior en términos comparativos, porque de ahí suele nacer la confusión.
Un codificador con pérdida como el MP3 se pregunta: "si descarto esta información, ¿lo notará el oyente?" Apoyándose en modelos de la audición humana, identifica las componentes con pocas probabilidades de ser oídas y las elimina de verdad. La ganancia es grande —el archivo se reduce varias veces—, pero los datos eliminados no quedan en ninguna parte del archivo. Aunque después conviertas ese MP3 a FLAC, la información no vuelve, porque no hay nada que devolver.
Un codificador sin pérdida como el FLAC se pregunta otra cosa: "¿cómo puedo escribir esta información de forma más concisa?" No descarta nada, solo hace la expresión más eficiente. La ganancia es más modesta —alrededor de la mitad del tamaño—, pero el viaje de ida y vuelta es completo.
Ambos enfoques son legítimos, simplemente sirven a objetivos distintos. Un formato con pérdida tiene sentido para la escucha portátil; uno sin pérdida es imprescindible para archivar y producir. Lo que no hay que confundir: pasar a un formato sin pérdida no recupera datos perdidos previamente en un formato con pérdida. Solo protege lo que venga a partir de ahí.
La diferencia entre FLAC y ZIP
Si comprimes un WAV en ZIP, también has realizado una compresión sin pérdida. Pero la ganancia suele ser muy pequeña.
La razón: el ZIP es de propósito general y busca secuencias de bytes repetidas. Funciona de maravilla en un archivo de texto donde la palabra "the" aparece cientos de veces. En datos de audio, las secuencias de bytes que se repiten de forma idéntica son casi inexistentes.
El FLAC, en cambio, sabe qué son los datos. No busca patrones de bytes sino estructura de onda. Ese conocimiento del dominio explica la gran diferencia de rendimiento entre ambos.
Un extra: la verificación de integridad
El FLAC escribe sumas de verificación para cada bloque y para el archivo completo. Es una ventaja real de la que el WAV carece.
Cuando abras un disco de archivo años después, podrás comprobar de forma definitiva si tus archivos FLAC siguen intactos. En un WAV, una zona dañada produce en silencio un sonido erróneo; para notarlo tendrías que escuchar el archivo de principio a fin.
En resumen
El FLAC ahorra espacio sin descartar nada de los datos de audio porque el PCM sin comprimir ya es derrochador: escribe cada muestra a tamaño completo como si fuera independiente, cuando en realidad las muestras vecinas están estrechamente relacionadas. El FLAC capta esa relación con un modelo de predicción y solo registra el error de predicción. Cuando la decodificación repite la misma predicción y le vuelve a sumar el error, los datos originales regresan exactamente. Por eso puedes usar nuestro conversor de WAV a FLAC con total confianza: lo único que pierdes es espacio en disco.
Preguntas frecuentes
Si elijo el nivel de compresión 8, ¿la calidad del audio será distinta del nivel 0?
No, el sonido será exactamente igual. El nivel de compresión solo determina cuántos modelos de predicción prueba el codificador y cómo elige el tamaño de los bloques. Sea cual sea el nivel escogido, los datos PCM que obtienes al decodificar el archivo son idénticos bit a bit al original. La única diferencia está en el tamaño del archivo y el tiempo de codificación.
¿Por qué algunos archivos apenas se comprimen?
El FLAC gana sobre la parte predecible de la forma de onda. Cuanto más regular y previsible sea la estructura de una grabación, más acertado será el modelo de predicción y más pequeñas las diferencias que hay que registrar. En grabaciones con ruido, muy densas o con un masterizado muy comprimido, la predicción se complica y la ganancia cae. El ruido blanco apenas se comprime porque es impredecible por definición.
¿Cuál es la diferencia entre FLAC y ZIP?
Ambos son sin pérdida, pero están optimizados para tipos de datos distintos. El ZIP es de propósito general y busca secuencias de bytes repetidas; esas repeticiones son raras en datos de audio, por eso comprimir un WAV en ZIP suele aportar muy poco. El FLAC, en cambio, conoce la estructura de onda de una señal de audio y logra una compresión mucho mayor modelando la relación matemática entre muestras vecinas.
¿Cómo sé si mi archivo FLAC se ha corrompido?
El FLAC escribe sumas de verificación para cada bloque y para el archivo completo, así que puedes comprobar de forma definitiva la integridad de tu archivo con herramientas de verificación. Es una ventaja importante frente al WAV para el archivado a largo plazo, porque una zona dañada en un WAV produce en silencio un sonido erróneo y tendrías que escuchar todo el archivo para notarlo.
Pruébalo ahora mismo con WAV → FLAC Dönüştür.
Probar WAV → FLAC Dönüştür