PDFMove
Comment la compression FLAC peut-elle être sans perte ? Une explication contre-intuitive
Guide

Comment la compression FLAC peut-elle être sans perte ? Une explication contre-intuitive

7 min de lecture

La question contre-intuitive

La phrase « le fichier est divisé par deux mais rien n'est perdu » paraît illogique la première fois qu'on l'entend. Si vous réduisez quelque chose de moitié, quelque chose a forcément disparu, non ?

En réalité, non. Et pour comprendre pourquoi, il faut d'abord voir à quel point les données non compressées sont dispendieuses.

Pourquoi le WAV est-il si dispendieux ?

Un fichier WAV contient les valeurs d'amplitude instantanée d'une onde sonore, mesurées 44 100 fois par seconde. Chaque mesure est écrite sous forme d'un nombre de 16 bits — une valeur comprise entre -32768 et +32767.

Voici le point crucial : les mesures voisines ne diffèrent guère les unes des autres.

Une onde sonore est un phénomène physique ; la pression de l'air ne bondit pas de -30000 à +30000 en un instant. Les échantillons consécutifs sont généralement proches. Mais le WAV s'en moque — il écrit chaque échantillon sur 16 bits pleins, comme s'il s'agissait d'un nombre totalement indépendant.

C'est là que réside l'espace compressible. Les données occupent bien plus de place que l'information qu'elles portent.

L'idée fondatrice du FLAC : enregistrer l'écart

Commençons par un exemple simple. Supposons ces échantillons consécutifs :

1000, 1005, 1009, 1012, 1014, 1015

Si vous les écrivez tels quels, il faut consacrer un emplacement complet de 16 bits à chacun. Mais si vous écrivez les écarts entre eux :

1000, +5, +4, +3, +2, +1

À part la première valeur, tous tiennent sur un chiffre. Écrire ces nombres ne demande pas 16 bits — 4 ou 5 suffisent largement. Et aucune information n'a été perdue : si vous connaissez la première valeur et les écarts, vous reconstituez exactement la séquence d'origine.

Ce que fait le FLAC est une version bien plus sophistiquée de ce principe.

La prédiction linéaire : prédire, puis écrire l'écart

Le FLAC ne se contente pas de prendre l'écart avec le voisin. Il construit à la place un modèle de prédiction pour chaque bloc audio.

Le modèle répond à cette question : « en observant les quelques échantillons précédents, comment prédire au mieux le suivant ? » C'est ce qu'on appelle la prédiction linéaire. L'encodeur calcule les coefficients qui fonctionnent le mieux pour ce bloc.

Puis il enregistre :

  1. Les coefficients du modèle (quelques nombres par bloc — très peu d'espace).
  2. Les valeurs résiduelles : l'écart entre la prédiction du modèle et l'échantillon réel.

Si le modèle fonctionne bien, les résidus sont de petits nombres. Et les petits nombres demandent peu de bits.

Pourquoi n'y a-t-il aucune perte ?

La réponse tient à ceci : l'opération s'effectue en arithmétique exacte.

Le décodeur lit les coefficients du modèle stockés dans le fichier et effectue exactement la même prédiction que l'encodeur. Puis il ajoute le résidu enregistré par-dessus cette prédiction :

échantillon réel = prédiction + résidu

Aucun arrondi, aucune approximation, aucun « suffisamment proche ». Comme on utilise l'arithmétique entière, le résultat est l'échantillon d'origine lui-même. À chaque fois, pour chaque échantillon.

C'est précisément là que réside la différence avec les formats avec perte. Le MP3 dit « si j'écarte cette information, personne ne le remarquera » — et l'écarte réellement. Le FLAC dit « je peux écrire cette information plus succinctement » — et n'écarte rien.

Coder les résidus efficacement

Dans une dernière étape, le FLAC écrit les valeurs résiduelles à l'aide d'un codage entropique. Ce codage est optimisé pour une distribution où les petites valeurs sont fréquentes et les grandes rares — exactement la façon dont se répartissent les résidus audio.

Les petites valeurs fréquentes s'écrivent donc avec très peu de bits, et les grandes valeurs rares avec davantage. Le nombre moyen de bits chute sensiblement.

À quoi sert le niveau de compression ?

Le niveau de compression 0-8 du FLAC détermine l'effort consenti par l'encodeur :

  • Combien de modèles de prédiction va-t-il essayer ?
  • Comment va-t-il choisir la taille des blocs ?
  • Va-t-il exploiter la relation entre canaux (en stéréo, le codage milieu-côté compresse généralement mieux que gauche-droite) ?

À un niveau élevé, l'encodeur essaie davantage d'options et retient la meilleure. Cela prend plus de temps et produit un fichier légèrement plus petit.

Mais la qualité ne change jamais. Les fichiers produits au niveau 0 et au niveau 8 restituent des données PCM identiques bit pour bit au décodage. Le niveau n'est pas un réglage de qualité, c'est un réglage de budget de calcul.

Côté décodage, l'écart entre niveaux est pour ainsi dire imperceptible ; un fichier se décode rapidement à n'importe quel niveau.

Pourquoi le taux de compression varie-t-il ?

Vous connaissez désormais la réponse : la prévisibilité.

  • Voix parlée, solos acoustiques, passages calmes : forme d'onde régulière, prédiction juste, résidus petits. Se compressent très bien.
  • Musique classique, captations de salle : dynamique large mais structure régulière. Se compressent bien.
  • Mixages rock/électro denses, mastering appuyé : signal saturé et complexe, la prédiction peine. Le gain chute.
  • Bruit blanc : imprévisible par définition. Ne se compresse quasiment pas.

Si votre enregistrement s'est mal compressé, cela ne signifie pas que vous avez choisi le mauvais réglage — c'est simplement sa nature.

La distinction fondamentale avec la compression avec perte

Il vaut la peine de reprendre ce qui précède en termes comparatifs, car c'est généralement de là que naît la confusion.

Un encodeur avec perte comme le MP3 pose la question : « si j'écarte cette information, l'auditeur le remarquera-t-il ? » S'appuyant sur des modèles de l'audition humaine, il repère les composantes peu susceptibles d'être entendues et les supprime réellement. Le gain est important — le fichier rétrécit de plusieurs fois — mais les données supprimées ne subsistent nulle part dans le fichier. Même si vous convertissez ensuite ce MP3 en FLAC, l'information ne revient pas, car il n'y a rien à faire revenir.

Un encodeur sans perte comme le FLAC pose une autre question : « comment écrire cette information plus succinctement ? » Il n'écarte rien, il rend seulement l'expression plus efficace. Le gain est plus modeste — environ la moitié de la taille — mais l'aller-retour est complet.

Les deux approches sont légitimes, elles servent simplement des objectifs différents. Un format avec perte est judicieux pour l'écoute nomade ; un format sans perte est indispensable pour l'archivage et la production. Le point à ne pas confondre : passer à un format sans perte ne récupère pas les données précédemment perdues dans un format avec perte. Cela ne protège que la suite.

La différence entre FLAC et ZIP

Si vous compressez un WAV en ZIP, vous avez également effectué une compression sans perte. Mais le gain est généralement très faible.

La raison : le ZIP est généraliste et cherche des séquences d'octets répétées. Il fonctionne à merveille sur un fichier texte où le mot « the » apparaît des centaines de fois. Dans des données audio, les séquences d'octets se répétant à l'identique sont quasi inexistantes.

Le FLAC, lui, sait ce que sont les données. Il ne cherche pas des motifs d'octets mais une structure d'onde. Cette connaissance du domaine explique le grand écart de performance entre les deux.

Un bonus : la vérification d'intégrité

Le FLAC écrit des sommes de contrôle pour chaque bloc et pour le fichier entier. C'est un avantage réel dont le WAV est dépourvu.

Quand vous ouvrez un disque d'archive des années plus tard, vous pouvez vérifier de façon définitive si vos fichiers FLAC sont toujours intacts. Dans un WAV, une zone corrompue produit silencieusement un son erroné ; pour le remarquer, il faudrait écouter le fichier du début à la fin.

En résumé

Le FLAC économise de l'espace sans rien écarter des données audio parce que le PCM non compressé est déjà dispendieux : il écrit chaque échantillon en taille pleine comme s'il était indépendant, alors que les échantillons voisins sont étroitement liés. Le FLAC capte cette relation avec un modèle de prédiction et n'enregistre que l'erreur de prédiction. Quand le décodage répète la même prédiction et y rajoute l'erreur, les données d'origine reviennent exactement. C'est pourquoi vous pouvez utiliser notre convertisseur WAV vers FLAC en toute confiance : la seule chose que vous perdez, c'est de l'espace disque.

Questions fréquentes

Si je choisis le niveau de compression 8, la qualité audio diffère-t-elle du niveau 0 ?

Non, le son est parfaitement identique. Le niveau de compression détermine seulement combien de modèles de prédiction l'encodeur essaie et comment il choisit la taille des blocs. Quel que soit le niveau retenu, les données PCM obtenues au décodage sont identiques bit pour bit à l'original. La seule différence porte sur la taille du fichier et la durée d'encodage.

Pourquoi certains fichiers ne se compressent-ils presque pas ?

Le FLAC gagne sur la part prévisible de la forme d'onde. Plus la structure d'un enregistrement est régulière et prévisible, plus le modèle de prédiction est juste et plus les écarts à enregistrer sont petits. Sur les enregistrements bruités, très denses ou fortement compressés au mastering, la prédiction devient difficile et le gain chute. Le bruit blanc ne se compresse quasiment pas car il est imprévisible par définition.

Quelle est la différence entre FLAC et ZIP ?

Les deux sont sans perte, mais ils sont optimisés pour des types de données différents. Le ZIP est généraliste et recherche des séquences d'octets répétées ; de telles répétitions sont rares dans les données audio, c'est pourquoi compresser un WAV en ZIP n'apporte généralement que très peu. Le FLAC, lui, connaît la structure d'onde d'un signal audio et atteint une compression bien supérieure en modélisant la relation mathématique entre échantillons voisins.

Comment savoir si mon fichier FLAC s'est corrompu ?

Le FLAC écrit des sommes de contrôle pour chaque bloc et pour le fichier entier ; vous pouvez donc vérifier de façon définitive l'intégrité de votre fichier avec des outils de contrôle appropriés. C'est un avantage important sur le WAV pour l'archivage à long terme, car une zone corrompue dans un WAV produit silencieusement un son erroné et il faudrait écouter tout le fichier pour s'en apercevoir.

Essayez dès maintenant avec WAV → FLAC Dönüştür.

Essayer WAV → FLAC Dönüştür