Présentation de l'encodage audio

L'encodage audio fait référence à la manière dont les données audio sont stockées et transmises. La documentation ci-dessous décrit comment fonctionne l'encodage. Pour obtenir des instructions sur le choix du meilleur encodage pour votre application, consultez la page Bonnes pratiques.

L'encodage audio numérique est un sujet complexe, mais vous n'avez généralement pas besoin d'en connaître les détails pour traiter du contenu audio dans l'API Speech. Les concepts présentés ici ne constituent qu'un aperçu général. Certaines informations de base peuvent être utiles pour comprendre comment fonctionne l'API et la manière dont le contenu audio doit être formulé et traité dans vos applications.

Formats audio et encodages

Notez qu'un format audio est différent d'un encodage audio. Un format de fichier couramment utilisé tel que .WAV définit le format de l'en-tête d'un fichier audio, mais ne constitue pas en soi un encodage audio. Les fichiers audio .WAV utilisent souvent, mais pas toujours, un encodage PCM linéaire. Ne présumez pas qu'un fichier .WAV présente un type d'encodage particulier avant d'avoir vérifié son en-tête.

FLAC, en revanche, est à la fois un format de fichier et un encodage, ce qui prête parfois à confusion. Dans l'API Speech-to-Text, FLAC est le seul encodage qui exige que les données audio incluent un en-tête. Tous les autres encodages audio requièrent des données audio sans en-tête. Lorsque nous faisons référence à FLAC dans l'API Speech-to-Text, il s'agit toujours du codec. Pour désigner un fichier au format FLAC, nous utilisons la formulation "un fichier .FLAC".

Vous n'êtes pas obligé de spécifier l'encodage et le taux d'échantillonnage des fichiers WAV ou FLAC. En cas d'omission, Speech-to-Text détermine automatiquement l'encodage et le taux d'échantillonnage de ces fichiers à partir de leur en-tête. Si vous spécifiez une valeur d'encodage ou de taux d'échantillonnage ne correspondant pas à la valeur figurant dans l'en-tête du fichier, Speech-to-Text affiche une erreur.

Encodages audio compatibles

L'API Speech-to-Text est compatible avec de nombreux encodages différents. Le tableau suivant répertorie les codecs audio compatibles :

Codec Nom Sans perte Remarques sur l'utilisation
MP3 MPEG Audio Layer III Non Disponible uniquement en version bêta. Pour en savoir plus, consultez la documentation de référence sur RecognitionConfig.
FLAC Codec audio gratuit sans perte Oui 16 bits ou 24 bits sont requis pour les flux.
LINEAR16 PCM linéaire Oui Modulation par impulsions et codage (PCM) linéaire 16 bits
MULAW Loi μ Non Encodage PCM 8 bits
AMR Bande étroite AMR Non Le taux d'échantillonnage doit être défini sur 8 000 Hz.
AMR_WB Large bande AMR Non Le taux d'échantillonnage doit être défini sur 16 000 Hz.
OGG_OPUS Trames audio encodées au format Opus dans un conteneur Ogg Non Le taux d'échantillonnage doit être défini sur 8 000 Hz, 12 000 Hz, 16 000 Hz, 24 000 Hz ou 48 000 Hz.
SPEEX_WITH_HEADER_BYTE Large bande Speex Non Le taux d'échantillonnage doit être défini sur 16 000 Hz.

Pour plus d'informations sur les codecs audio Speech-to-Text, consultez la documentation de référence sur AudioEncoding.

Si vous avez le choix entre plusieurs types d'encodage pour votre contenu source, utilisez un encodage sans perte tel que FLAC ou LINEAR16 afin d'optimiser la reconnaissance vocale. Pour obtenir des instructions sur la sélection du codec approprié pour votre tâche, consultez la page Bonnes pratiques.

Pourquoi encoder ?

Le contenu audio est constitué de formes d'ondes, elles-mêmes composées d'ondes interposées de fréquences et d'amplitudes variées. Pour représenter ces formes d'ondes dans les médias numériques, vous devez les échantillonner à des taux pouvant (au moins) représenter les sons de la fréquence la plus élevée que vous souhaitez reproduire. Elles doivent aussi stocker une profondeur de bits suffisante pour représenter l'amplitude (force sonore et douceur) exacte des formes d'ondes à travers l'échantillon sonore.

Pour désigner la capacité d'un appareil de traitement du son à recréer des fréquences, on parle de réponse en fréquence, tandis que sa capacité à créer une force sonore et une douceur appropriées est appelée plage dynamique. Ces termes sont souvent associés pour représenter la fidélité d'un appareil audio. Dans sa forme la plus simple, un encodage est un moyen de reconstruire le son à l'aide de ces deux principes de base, tout en permettant de stocker et de transporter efficacement les données.

Taux d'échantillonnage

Le son existe en tant que forme d'onde analogique. Un segment de contenu audio numérique se rapproche de cette onde analogique en échantillonnant l'amplitude de cette onde analogique à un taux suffisamment élevé lui permettant d'imiter les fréquences intrinsèques de l'onde. Le taux d'échantillonnage d'un segment audio numérique spécifie le nombre d'échantillons à prélever du contenu source d'un contenu audio (par seconde). Un taux d'échantillonnage élevé renforce la capacité du contenu audio numérique à représenter avec fidélité les hautes fréquences.

En raison du théorème de Nyquist-Shannon, vous devez généralement échantillonner au moins deux fois la fréquence la plus élevée de toute onde sonore que vous souhaitez enregistrer numériquement. Par exemple, pour représenter le contenu audio dans la plage d'audition humaine (de 20 à 20 000 Hz), un format audio numérique doit échantillonner au moins 40 000 fois par seconde (ce qui explique en partie pourquoi le contenu audio d'un CD utilise un taux d'échantillonnage de 44 100 Hz).

Profondeurs de bits

La profondeur de bits a une incidence sur la plage dynamique d'un échantillon audio donné. Une profondeur de bits supérieure vous permet de représenter des amplitudes de manière plus précise. Si vous disposez de nombreux sons forts et doux dans le même échantillon audio, vous aurez besoin d'une plus grande profondeur de bits pour représenter correctement ces sons.

Des profondeurs de bits supérieures réduisent également le rapport signal sur bruit dans les échantillons audio. Le contenu audio musical d'un CD est reproduit avec une profondeur de 16 bits. Le contenu audio d'un DVD utilise une profondeur de 24 bits, tandis que la plupart des équipements téléphoniques sont basés sur une profondeur de 8 bits. (Certaines techniques de compression peuvent compenser des profondeurs de bits inférieures, mais elles ont tendance à entraîner des pertes.)

Contenu audio non compressé

La plupart des traitements audio numériques ont recours à ces deux techniques (taux d'échantillonnage et profondeur de bits) pour stocker des données audio de manière simple. L'une des techniques audio numériques les plus répandues (popularisées lors de l'utilisation du CD) est connue sous le nom de modulation d'impulsion codée (PCM, Pulse Code Modulation). Le son est échantillonné à des intervalles définis, et l'amplitude de l'onde échantillonnée à ce stade est stockée sous forme de valeur numérique sur la base de la profondeur de bits de l'échantillon.

La PCM linéaire (qui indique que la réponse en amplitude est linéairement uniforme dans l'échantillon) est la norme utilisée pour les CD et pour l'encodage LINEAR16 de l'API Speech-to-Text. Les deux encodages produisent un flux d'octets non compressé correspondant directement aux données audio, et les deux normes ont recours à une profondeur de 16 bits. La PCM linéaire utilise un taux d'échantillonnage de 44 100 Hz pour les CD, qui est un taux adapté à la recomposition musicale. Cependant, un taux d'échantillonnage de 16 000 Hz est plus approprié pour la recomposition vocale.

La PCM linéaire (LINEAR16) est un exemple de contenu audio non compressé, dans la mesure où les données numériques sont stockées exactement comme l'exigent les normes citées précédemment. Si vous lisiez un flux d'octets à canal unique encodé à l'aide de la PCM linéaire, vous pourriez comptabiliser tous les groupes de 16 bits (2 octets), par exemple, pour obtenir une autre valeur d'amplitude de la forme d'onde. Presque tous les appareils peuvent manipuler de telles données numériques de manière native, et vous pouvez même rogner des fichiers audio de PCM linéaire à l'aide d'un éditeur de texte. Cependant, le contenu audio non compressé n'est (évidemment) pas le moyen le plus efficace d'acheminer ou de stocker du contenu audio numérique. C'est pour cette raison que des techniques de compression numérique sont utilisées pour la plupart des contenus audio.

Contenu audio compressé

Les données audio, comme toutes les données, sont souvent compressées pour faciliter leur stockage et leur acheminement. La compression dans l'encodage audio peut être effectuée soit sans perte, soit avec perte. La compression sans perte peut être décompressée afin de restaurer les données numériques dans leur forme d'origine. La compression avec perte supprime nécessairement certaines informations lors de la compression et de la décompression, et elle est paramétrée pour indiquer la tolérance à accorder à la technique de compression pour supprimer les données.

Compression sans perte

La compression sans perte compresse les données audio numériques en réarrangeant de façon complexe les données stockées, mais n'entraîne aucune dégradation de la qualité de l'échantillon numérique d'origine. Avec la compression sans perte, aucune information n'est perdue lors de la décompression des données sous leur forme numérique d'origine.

Pourquoi les techniques de compression sans perte disposent-elles donc parfois de paramètres d'optimisation ? Ces paramètres privilégient souvent le temps de décompression par rapport à la taille de fichier. Par exemple, FLAC utilise un paramètre de niveau de compression compris entre 0 (le plus rapide) et 8 (la plus petite taille de fichier). La compression FLAC de niveau supérieur ne perd pas plus d'informations que la compression de niveau inférieur. Au lieu de cela, l'algorithme de compression devra simplement dépenser plus d'énergie de calcul lors de la construction ou de la déconstruction du contenu audio numérique d'origine.

L'API Speech-to-Text est compatible avec deux encodages sans perte : FLAC et LINEAR16. Techniquement, LINEAR16 n'est pas une "compression sans perte", car aucune compression n'est réalisée à la base. Si la taille du fichier ou la transmission de données est importante pour vous, choisissez FLAC comme encodage audio.

Compression avec perte

La compression avec perte, quant à elle, compresse les données audio en éliminant ou en réduisant certains types d'informations lors de la construction des données compressées. Bien que l'API Speech-to-Text soit compatible avec plusieurs formats avec perte, vous devez les éviter si vous exercez un contrôle sur le contenu audio, car la perte de données peut avoir une incidence négative sur la précision de la reconnaissance.

Le codec MP3, couramment utilisé, est un exemple de technique d'encodage avec perte. Toutes les techniques de compression MP3 suppriment le contenu audio situé hors de la plage audio perceptible par une personne normale, et elles affinent le niveau de compression en ajustant le débit effectif du codec MP3 ou la quantité de bits par seconde pour stocker les données audio.

Par exemple, un CD stéréo utilisant la PCM linéaire de 16 bits a un débit effectif de :

    44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps
    

La compression MP3 supprime ces données numériques grâce à des débits tels que 320 kbit/s, 128 kbit/s ou 96 kbit/s, avec pour conséquence une dégradation de la qualité audio. Le format MP3 est aussi compatible avec des débits variables permettant de compresser davantage le contenu audio. Ces deux techniques perdent des informations et peuvent affecter la qualité du contenu audio. La plupart des gens peuvent faire la différence entre de la musique MP3 encodée à 96 kbit/s ou à 128 kbit/s, par exemple.

D'autres formes de compression ont des paramètres permettant de définir d'autres contraintes.

MULAW est un encodage PCM 8 bits dans lequel l'amplitude de l'échantillon est modulée de manière logarithmique plutôt que linéaire. En conséquence, la loi µ réduit la plage dynamique effective du contenu audio ainsi compressé. Bien que cette loi ait été introduite pour optimiser spécifiquement l'encodage de la parole par rapport à d'autres types de contenu audio, le format LINEAR16 16 bits (PCM non compressé) est de loin supérieur au contenu audio compressé selon la loi µ sur 8 bits.

AMR et AMR_WB modulent l'échantillon audio encodé en introduisant un débit variable sur l'échantillon audio source.

Même si l'API Speech-to-Text offre une compatibilité avec plusieurs formats avec perte, vous devez les éviter si vous exercez un contrôle sur le contenu audio source. Bien que la suppression de telles données par compression avec perte puisse ne pas affecter sensiblement le son tel qu'il est entendu par l'oreille humaine, la perte des données par un moteur de reconnaissance vocale peut impacter considérablement la précision.