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 intitulée 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.
Configuration de décodage
Les paramètres nécessaires au décodage du contenu audio transmis sont spécifiés dans l'un des paramètres decoding_config
.
Si le contenu audio est dans l'un des formats compatibles avec AutoDetectDecodingConfig
, il est vivement recommandé de définir le champ auto_decoding_config
afin que Speech-to-Text détermine les paramètres adaptés à vos besoins.
Sinon, vous devez spécifier explicitement les paramètres de décodage en définissant le champ explicit_decoding_config
. Ces paramètres se trouvent généralement dans les éléments utilisés pour enregistrer le contenu audio.
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 dispositif 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 application du théorème de Nyquist-Shannon, vous devez généralement choisir une fréquence d'échantillonnage plus de deux fois supérieure à la fréquence la plus élevée des ondes sonores 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 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 original.
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 binaire 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 binaires 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é en µ-law sur 8 bits.
AMR et AMR_WB modulent l'échantillon audio encodé en introduisant un débit binaire 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.