Ce tutoriel explique comment effectuer un contrôle en amont des fichiers audio que vous vous apprêtez à utiliser avec Speech-to-Text.
Il fournit des informations sur les formats de fichiers audio, explique comment les optimiser pour une utilisation avec Speech-to-Text et comment diagnostiquer les erreurs. Ce tutoriel est destiné aux professionnels non techniques du secteur des médias et du divertissement, ainsi qu'aux professionnels de la postproduction. Il ne requiert pas une connaissance approfondie de Google Cloud. Il est toutefois nécessaire d'avoir acquis des connaissances de base sur l'utilisation de l'outil de ligne de commande gcloud
avec des fichiers stockés à la fois en local et dans un bucket Cloud Storage.
Objectifs
- Installer l'outil FFMPEG
- Télécharger les exemples de fichiers multimédias
- Lire des fichiers audio et vidéo à l'aide des solutions FFmpeg
- Extraire, transcoder et convertir les propriétés des fichiers audio à l'aide des solutions FFmpeg
- Exécuter Speech-to-Text sur divers exemples de fichiers contenant des dialogues
Coûts
Ce tutoriel utilise les composants facturables Google Cloud suivants :
Vous pouvez utiliser le simulateur de coût pour générer une estimation des coûts en fonction de l'utilisation prévue.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Dans ce tutoriel, vous allez utiliser Cloud Shell pour effectuer les procédures telles que la copie de données d'un bucket Cloud Storage vers la session Cloud Shell. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installée. Vous allez utiliser gcloud CLI pour de nombreuses étapes de ce tutoriel. Vous installerez également des logiciels et des exemples de fichiers audio sur votre ordinateur local et exécuterez ces exercices à partir de votre terminal, comme décrit plus loin dans la section Exécuter des exemples du tutoriel sur un terminal local.
Présentation
Dans ce tutoriel, vous allez utiliser FFMPEG, un outil Open Source pour enregistrer, convertir et diffuser du contenu audio et vidéo. Des informations supplémentaires sur cet outil sont fournies plus loin dans ce tutoriel.
Comprendre les attributs d'un fichier audio
Cette section décrit les types de fichiers audio classiques, les taux d'échantillonnage, les profondeurs de bits et les supports d'enregistrement que l'on trouve généralement dans les workflows de production et de postproduction.
Pour obtenir des résultats optimaux avec Speech-to-Text, vous devez vous assurer que les fichiers utilisés pour la transcription sont des fichiers monauraux (mono) répondant à certaines spécifications minimales décrites ci-dessous. Si les fichiers ne répondent pas aux spécifications, vous devrez peut-être générer des fichiers modifiés. Par exemple, vous devrez peut-être procéder comme suit :
- Extraire les données audio d'un fichier vidéo
- Extraire une seule piste monaurale d'un fichier audio multipiste
- Transcoder d'un codec audio vers un autre mieux adapté à Speech-to-Text.
Taux d'échantillonnage (plage de fréquences)
Le taux d'échantillonnage détermine la plage de fréquences du fichier audio. Il est basé sur le nombre d'échantillons par seconde qui constituent le fichier audio. En règle générale, la fréquence reproductible la plus élevée d'un fichier audio numérique équivaut à la moitié du taux d'échantillonnage. Par exemple, la fréquence la plus élevée pouvant être reproduite à partir d'un fichier audio de 44,1 kHz est d'environ 22 kHz, ce qui se situe dans la partie supérieure ou au-delà de la plage de réponses en fréquence de l'appareil auditif humain.
Les taux d'échantillonnage dans la téléphonie et les télécommunications sont généralement compris entre 8 et 16 kHz. Ce tutoriel se concentre sur les formats spécifiques au secteur des médias et du divertissement, qui sont généralement supérieurs à 16 kHz. Pour en savoir plus sur la téléphonie et les autres domaines d'application de l'audio, consultez la page Transcrire des fichiers audio enregistrés à partir d'un téléphone avec des modèles améliorés.
Nous vous recommandons d'utiliser un taux d'échantillonnage d'au moins 16 kHz dans les fichiers audio que vous utilisez pour la transcription avec Speech-to-Text. En règle générale, les taux d'échantillonnage des fichiers audio sont de 16 kHz, 32 kHz, 44,1 kHz et 48 kHz. Étant donné que l'intelligibilité est fortement affectée par la plage de fréquences, en particulier dans les fréquences les plus élevées, un taux d'échantillonnage inférieur à 16 kHz produit un fichier audio contenant peu d'informations au delà de 8 kHz, voire aucune. Cela peut empêcher Speech-to-Text de transcrire correctement l'audio parlé. Pour préserver l'intelligibilité de la voix, des informations doivent être présentes dans la plage de 2 kHz à 4 kHz. De même, la présence des harmoniques (multiples) de ces fréquences dans la plage supérieure est également importante. Par conséquent, il est recommandé de ne pas utiliser un taux d'échantillonnage inférieur à 16 kHz.
Vous pouvez également passer d'un taux d'échantillonnage à un autre. Cependant, il n'est pas avantageux d'effectuer une conversion vers un taux d'échantillonnage plus élevé, car les informations de la plage de fréquences sont limitées par le taux d'échantillonnage inférieur et ne peuvent pas être récupérées ainsi. Cela signifie qu'une augmentation du taux d'échantillonnage de 8 à 44,1 kHz limiterait la plage de fréquences reproductible à la moitié du taux d'échantillonnage inférieur, soit environ 4 kHz. Dans ce tutoriel, vous écoutez des fichiers audio enregistrés à différents taux d'échantillonnage et profondeurs de bits pour vous rendre compte par vous-même de la différence.
Profondeur de bits (plage dynamique)
La profondeur de bits du fichier audio détermine la plage des sons des plus calmes aux plus forts, ainsi que le rapport signal sur bruit du fichier. La plage dynamique a un impact moins important sur la qualité de la transcription que la réponse en fréquence. Cependant, des profondeurs de bits égales ou inférieures à 8 bits peuvent provoquer un bruit de quantification excessif sur la piste audio et ainsi compliquer la production d'une transcription précise. (Les erreurs de quantification sont des erreurs d'arrondi entre le signal d'entrée analogique et le mappage de la valeur de sortie numérique de ce signal. Ces erreurs entraînent une distorsion audible qui affecte directement la fidélité du son.) La profondeur de bits recommandée pour l'analyse des fichiers avec Speech-to-Text est de 16 bits ou plus. Comme pour la fréquence d'échantillonnage, il n'y a aucun avantage à convertir la profondeur de bits de 8 à 16 bits, car les informations de plage dynamique sont limitées au format d'origine de 8 bits.
Support d'enregistrement
Le support d'enregistrement d'origine peut également affecter la qualité du fichier audio. Par exemple, le contenu audio enregistré à l'origine sur une bande magnétique peut comporter un sifflement d'arrière-plan qui est intégré au fichier. Dans certains cas, vous devrez peut-être prétraiter le fichier audio bruyant afin d'obtenir de meilleurs résultats pour transcrire le fichier avec Speech-to-Text. Le traitement des enregistrements bruyants et des interférences de bruit de fond n'entre pas dans le cadre de ce tutoriel. Pour en savoir plus, consultez la page Bonnes pratiques de la documentation Speech-to-Text.
Présentation de l'outil FFMPEG
Dans ce tutoriel, vous utilisez FFmpeg pour travailler avec des fichiers audio. La suite d'outils FFmpeg offre de nombreuses fonctions, dont les suivantes :
- Lecture d'un fichier audio ou vidéo
- Conversion des fichiers audio vers un des codecs reconnus par Speech-to-Text
- Conversion des taux d'échantillonnage et de débit des fichiers audio en configurations optimales pour permettre l'analyse par Speech-to-Text
- Extraction des pistes audio ou des flux individuels à partir d'un fichier de flux de transport ou d'un fichier vidéo
- Division des fichiers stéréo en deux fichiers monauraux
- Division des fichiers audio 5.1 en six fichiers monauraux
- Application de l'égalisation et du filtrage pour améliorer la clarté du son
Vous pouvez également utiliser la fonction ffprobe de FFmpeg pour afficher les métadonnées associées à un fichier multimédia. Cette fonction est particulièrement utile pour diagnostiquer des problèmes liés aux types et aux formats de fichiers pour l'analyse de machine learning.
Codecs reconnus par Speech-to-Text
Bien que Speech-to-Text reconnaisse un certain nombre de formats de fichiers audio, il est possible que certains codecs ne soient pas lus ou analysés correctement. Le tutoriel vous explique comment vérifier que le format de votre contenu est compatible.
Ce tutoriel vous invite à lire les métadonnées pour identifier et corriger d'éventuels problèmes avant d'utiliser Speech-to-Text. Si vous constatez qu'un fichier n'est pas dans un format compatible, les mêmes outils vous permettent de le convertir.
Speech-to-Text reconnaît les codecs suivants :
- FLAC : codec audio gratuit sans perte
- LINEAR16 : format de modulation par impulsions et codage non compressé (PCM) utilisé dans les conteneurs WAV, AIFF, AU et RAW
- MULAW : codec PCM conçu pour les télécommunications aux États-Unis et au Japon
- AMR : codec adaptatif taux multiple conçu pour la voix
- AMR_WB : variante large bande d'AMR avec deux fois plus de bande passante
- OGG_OPUS : codec avec pertes conçu pour les applications à faible latence
- SPEEX_WITH_HEADER_BYTE : codex conçu pour les applications de voix sur IP (VoIP)
Il est important de comprendre que les codecs et les formats de fichiers sont deux choses différentes. L'extension du nom de fichier n'indique pas nécessairement que le codec utilisé pour créer le fichier peut être lu par Speech-to-Text.
Ce tutoriel se concentre sur les codecs FLAC et LINEAR16, car ils sont le plus fréquemment utilisés dans les environnements de workflow multimédia. Ces deux codecs correspondent à des formats sans perte.
Si vous utilisez des fichiers WAV (au format PCM linéaire non compressé) avec Speech-to-Text, ils ne doivent pas être codés au format virgule flottante et leur profondeur ne doit pas dépasser 16 bits. L'extension de nom de fichier .wav
ne garantit pas que le fichier peut être lu par Speech-to-Text. La section Optimiser les fichiers audio pour l'analyse de ce tutoriel fournit un exemple de conversion du fichier au format virgule flottante en nombre entier (signé) pour le transcrire dans Speech-to-Text.
Initialiser votre environnement
Avant d'exécuter les tâches de ce tutoriel, vous devez initialiser votre environnement en installant l'outil FFmpeg, en définissant des variables d'environnement et en téléchargeant des fichiers audio. Vous utilisez des fichiers multimédias stockés à la fois dans une instance Cloud Shell et dans un bucket Cloud Storage. L'utilisation de différentes sources vous permet de travailler avec différentes fonctionnalités de Speech-to-Text.
Dans cette section, vous installez FFmpeg et configurez des variables d'environnement pointant vers les emplacements de stockage des exemples de données dans le stockage de votre instance Cloud Shell et dans un bucket Cloud Storage. Les fichiers multimédias sont identiques aux deux emplacements, et ce tutoriel utilise à la fois les fichiers se trouvant dans Cloud Shell et dans le bucket Cloud Storage. Vous pouvez installer FFmpeg sur votre ordinateur local et exécuter ces mêmes exercices, comme décrit plus loin dans la section Exécuter des exemples du tutoriel sur un terminal local.
-
In the Google Cloud console, activate Cloud Shell.
Dans Cloud Shell, installez la version actuelle de FFmpeg :
sudo apt update sudo apt install ffmpeg
Vérifiez que FFmpeg est installé :
ffmpeg -version
Si un numéro de version s'affiche, l'installation a fonctionné.
Créez un répertoire pour les fichiers du projet :
mkdir project_files
Créez un répertoire pour les fichiers de sortie que vous devrez créer ultérieurement :
mkdir output
Téléchargez les exemples de fichiers audio :
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/
Créez une variable d'environnement pour le nom du bucket Cloud Storage :
export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_files
Créez une variable d'environnement pour le chemin du répertoire de l'instance Cloud Shell qui pointe vers les exemples de fichiers audio téléchargés :
export PROJECT_FILES=~/project_files
Examiner les métadonnées dans les fichiers multimédias
Lorsque vous analysez des fichiers audio ou vidéo avec Speech-to-Text, vous devez connaître les détails des métadonnées du fichier. Cela vous permet d'identifier les incohérences ou les paramètres incompatibles susceptibles de causer des problèmes.
Dans cette section, vous utilisez la commande ffprobe
dans FFmpeg pour examiner les métadonnées de plusieurs fichiers multimédias et comprendre ainsi les spécifications d'un fichier.
Dans Cloud Shell, affichez les métadonnées du fichier
HumptyDumptySample4416.flac
:ffprobe $PROJECT_FILES/HumptyDumptySample4416.flac
Le résultat est le suivant :
Input #0, flac, from 'project_files/HumptyDumptySample4416.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 283 kb/s Stream #0:0: Audio: flac, 44100 Hz, mono, s16
Ce résultat donne les métadonnées suivantes sur le fichier :
- La durée du fichier audio est de 26,28 secondes.
- Le débit est de 283 Ko par seconde.
- Le codec est au format FLAC.
- Le taux d'échantillonnage est de 44,1 kHz.
- Le fichier est un fichier à canal unique (mono).
- La profondeur de bits est de 16 bits (entier signé).
Affichez les métadonnées du fichier
HumptyDumptySampleStereo.flac
:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
Le résultat est le suivant :
Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
La différence entre ce fichier et le précédent est qu'il s'agit d'un fichier stéréo dont le débit est plus élevé (378 Ko/seconde au lieu de 283 Ko/seconde), car il contient une lecture à deux canaux au lieu d'une seule piste mono. Toutes les autres valeurs sont identiques.
Il est conseillé de vérifier le nombre de canaux d'un fichier audio que vous souhaitez traiter avec Speech-to-Text. Les fichiers audio ne doivent avoir qu'un seul canal audio. Pour transcrire plusieurs canaux audio dans un même fichier, nous vous recommandons de créer un script pour les commandes décrites dans la section Optimiser les fichiers audio pour l'analyse.
Affichez les métadonnées d'un fichier de mixage audio 5.1 :
ffprobe $PROJECT_FILES/Alice_51_sample_mix.aif
Le résultat est le suivant :
Duration: 00:00:58.27, bitrate: 4610 kb/s Stream #0:0: Audio: pcm_s16be, 48000 Hz, 5.1, s16, 4608 kb/s
Des informations supplémentaires s'affichent, car ce fichier n'est pas au format mono ou stéréo. Dans ce cas, l'audio est au format PCM linéaire, enregistré avec un taux d'échantillonnage de 44,1 kHz et un débit de 16 bits (entier signé, little-endian).
Notez la mention
5.1
. Dans ce fichier, le débit de données de 4 608 kbit/s est nettement supérieur à celui des deux exemples précédents, car le fichier audio contient six pistes audio.Plus loin dans ce tutoriel, vous verrez comment ce fichier génère des erreurs lorsque vous essayez de le transcrire à l'aide de Speech-to-Text. Plus important encore, vous verrez comment optimiser le fichier afin de l'utiliser avec Speech-to-Text sans erreur.
Optimiser les fichiers audio pour l'analyse
Comme indiqué précédemment, lorsque vous utilisez Speech-to-Text, les fichiers audio doivent être des fichiers à canal unique (mono), afin d'éviter les erreurs dans le processus de transcription. Le tableau suivant répertorie les formats audio courants et le processus requis pour la conversion de fichiers mono à des fins de traitement.
Format audio actuel | Processus de conversion | Format audio de sortie |
---|---|---|
Mono | Aucune extraction nécessaire | FLAC ou LINEAR16 |
Stéréo | Diviser en deux fichiers mono ou réduire en un fichier mono | FLAC ou LINEAR16 |
Multipistes (5.1) | Diviser en six fichiers mono | FLAC ou LINEAR16 |
Contenu audio/vidéo multiflux | Diviser en plusieurs fichiers mono | FLAC ou LINEAR16 |
Pour traiter des fichiers comportant plusieurs pistes audio, vous devez extraire des pistes mono du fichier stéréo à l'aide de FFmpeg ou d'autres outils de montage audio. Vous pouvez également automatiser le processus comme décrit dans la page Transcrire des contenus audio avec plusieurs canaux de la documentation Speech-to-Text. Dans le cadre de ce tutoriel, vous allez découvrir comment utiliser FFmpeg pour extraire des pistes mono individuelles du fichier stéréo.
Comme indiqué dans la section précédente, vous pouvez utiliser la commande ffprobe
pour déterminer le nombre de canaux audio contenus dans un fichier, puis utiliser la commande ffmpeg
pour extraire ou convertir le fichier au format mono si nécessaire.
Prévisualiser une erreur causée par un format non valide
Pour voir comment un format incorrect affecte la transcription, exécutez Speech-to-Text sur un fichier qui n'est pas au format mono.
Dans Cloud Shell, exécutez Speech-to-Text sur le fichier
HumptyDumptySampleStereo.flac
:gcloud ml speech recognize $PROJECT_FILES/HumptyDumptySampleStereo.flac \ --language-code='en-US'
Le résultat est le suivant :
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid audio channel count
Bien que le format du codec, le taux d'échantillonnage et la profondeur de bits du fichier soient corrects, le descripteur stéréo indique que le fichier audio contient deux pistes. Par conséquent, l'exécution de Speech-to-Text génère une erreur
Invalid audio channel count
.Exécutez la commande
ffprobe
sur le fichier :ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
Le résultat est le suivant :
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Cela signifie que l'erreur Speech-to-Text est due à la tentative de traitement d'un fichier stéréo.
Pour en savoir plus sur la gestion des fichiers stéréo via des scripts, consultez la page Transcrire des contenus audio avec plusieurs canaux de la documentation Speech-to-Text.
Diviser un fichier stéréo en plusieurs fichiers mono FLAC
Par exemple, pour éviter l'erreur multipiste, vous pouvez extraire deux pistes mono d'un fichier audio stéréo. Les pistes obtenues sont au format FLAC et sont écrites dans le répertoire de sortie. Lorsque vous extrayez deux fichiers mono d'un fichier stéréo, il est recommandé de nommer les fichiers extraits en indiquant l'emplacement d'origine du canal du fichier. Par exemple, dans la procédure suivante, vous désignez le canal de gauche à l'aide du suffixe FL
et le canal approprié à l'aide du suffixe FR
.
Si l'échantillon audio à transcrire est présent sur les deux canaux, un seul canal est utilisé pour la transcription. Toutefois, si plusieurs enceintes sont enregistrées sur différents canaux, nous vous recommandons de transcrire les canaux séparément. Speech-to-Text peut reconnaître plusieurs voix sur un même enregistrement. Cependant, l'isolation de chaque voix sur des canaux distincts entraîne des niveaux de confiance plus élevés dans la transcription. (Le niveau de confiance est également appelé taux d'erreur sur les mots, ou WER, dans la reconnaissance vocale.) Pour en savoir plus sur l'utilisation de plusieurs voix dans le même enregistrement, consultez la page Différencier les locuteurs dans un enregistrement audio de la documentation Speech-to-Text.
Dans Cloud Shell, divisez le fichier stéréo
HumptyDumptySampleStereo.flac
en deux fichiers mono :ffmpeg -i $PROJECT_FILES/HumptyDumptySampleStereo.flac -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]" output/HumptyDumptySample_FL.flac -map "[right]" output/HumptyDumptySample_FR.flac
Le résultat affiche les fichiers mono
HumptyDumptySample_FL.flac
(canal avant gauche) etHumptyDumptySample_FR.flac
(canal avant droit).Output #0, flac, to 'HumptyDumptySample_FL.flac': Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s16 Stream mapping: Stream #0:0 (flac) -> channelsplit channelsplit:FL -> Stream #0:0 (flac) channelsplit:FR -> Stream #1:0 (flac) (...) Output #0, flac, to 'HumptyDumptySample_FL.flac': (...) Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s (...) Output #1, flac, to 'HumptyDumptySample_FR.flac': (...) Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s (...) size=918kB time=00:00:26.27 bitrate= 286.2kbits/s speed= 357x video:0kB audio:1820kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Ce fichier est désormais optimisé pour Speech-to-Text.
Diviser un fichier audio 5.1 en plusieurs fichiers mono
Un autre exemple d'optimisation des fichiers audio consiste à diviser les fichiers audio 5.1 en fichiers mono FLAC individuels. Lorsque vous faites référence à des canaux dans un mixage multicanal tel qu'un mixage 5.1, les noms de fichiers sont généralement différents de ceux des fichiers stéréo ou mono. Le fichier du canal de gauche est généralement appelé FL
pour la partie avant gauche et le canal de droite FR
pour la partie avant droite. Les autres canaux d'un mixage 5.1 sont appelés ici FC
pour la partie avant centrale, LFE
pour les effets basse fréquence, BL
pour la partie arrière gauche (également appelée "ambiophonique gauche") et BR
pour la partie arrière droite (ou "ambiophonique droit"). Il ne s'agit pas de désignations standards, mais d'une pratique classique permettant d'identifier l'origine d'un fichier audio.
En règle générale, dans les fichiers audio multicanaux pour les films et la télévision, le dialogue principal est diffusé par le canal avant central. Il s'agit généralement du fichier préconisé pour l'utilisation de Speech-to-Text, car il contient généralement la majeure partie des dialogues du mixage.
Dans un environnement de postproduction, les principaux éléments du dialogue, de la musique et des effets sont divisés en groupes appelés tiges. Ainsi, le dialogue est séparé de la musique et des effets jusqu'à ce que le mixage soit terminé. L'utilisation d'une tige ne contenant rien d'autre que le dialogue vous permet d'obtenir de meilleurs résultats de transcription avec Speech-to-Text. En effet, cela vous évite d'avoir à extraire le canal central du mixage final qui peut contenir d'autres sons que les dialogues, et nuire ainsi à l'intelligibilité.
Dans Cloud Shell, divisez le fichier
Alice_51_sample_mix.aif
en fichiers FLAC, en spécifiant les noms des fichiers de sortie pour chaque canal :ffmpeg -i $PROJECT_FILES/Alice_51_sample_mix.aif -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/Alice_FL.flac -map "[FR]" output/Alice_FR.flac -map "[FC]" output/Alice_FC.flac -map "[LFE]" output/Alice_LFE.flac -map "[BL]" output/Alice_BL.flac -map "[BR]" output/Alice_BR.flac
Le résultat est le suivant :
Duration: 00:00:55.00, bitrate: 4235 kb/s Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 5.1, s16, 4233 kb/s Stream mapping: Stream #0:0 (pcm_s16le) -> channelsplit channelsplit:FL -> Stream #0:0 (flac) channelsplit:FR -> Stream #1:0 (flac) channelsplit:FC -> Stream #2:0 (flac) channelsplit:LFE -> Stream #3:0 (flac) channelsplit:BL -> Stream #4:0 (flac) channelsplit:BR -> Stream #5:0 (flac) Press [q] to stop, [?] for help Output #0, flac, to 'Alice_FL.flac': (...) Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s (...) Output #1, flac, to 'output/Alice_FR.flac': (...) Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s (...) Output #2, flac, to 'output/Alice_FC.flac': (...) Stream #2:0: Audio: flac, 44100 Hz, mono, s16, 128 kb/s (...) Output #3, flac, to 'output/Alice_LFE.flac': (...) Stream #3:0: Audio: flac, 44100 Hz, 1 channels (LFE), s16, 128 kb/s (...) Output #4, flac, to 'output/Alice_BL.flac': (...) Stream #4:0: Audio: flac, 44100 Hz, 1 channels (BL), s16, 128 kb/s (...) Output #5, flac, to 'output/Alice_BR.flac': (...) Stream #5:0: Audio: flac, 44100 Hz, 1 channels (BR), s16, 128 kb/s (...)
Cliquez sur le fichier suivant pour l'écouter. Ce fichier se trouve dans le bucket Cloud Storage. Lorsque vous cliquez sur son nom, il est lu dans un nouvel onglet du navigateur.
Alice_mono_downmix.flac
Écoutez le FC (fichier de canal central uniquement) que vous venez de créer. (Le dialogue commence après quelques secondes de silence.)
Alice_FC.flac
Notez la différence de clarté par rapport au fichier précédent. Cette piste est basée uniquement sur la partie dialogue du mixage.
Tester la qualité des fichiers audio
Avant de convertir les fichiers multimédias à l'aide de Speech-to-Text, il est conseillé de les écouter pour déterminer s'ils présentent des anomalies de qualité audio susceptibles d'empêcher les outils de machine learning de fournir des résultats précis. Dans cette section, vous pouvez lire les fichiers dans votre navigateur en cliquant sur leur nom. (Nous vous recommandons d'utiliser un casque ou des haut-parleurs à large plage dynamique.)
Écouter les contenus audio d'un fichier vidéo
Cliquez sur le fichier suivant pour le lire :
HumptyDumptySample4416.flac
Ce fichier a une fréquence de 44,1 kHz et une profondeur de 16 bits. Notez la clarté, la fidélité, l'absence de distorsion et l'intelligibilité de ce fichier. Cela en fait un bon candidat pour la transcription avec Speech-to-Text.
Lisez l'échantillon suivant de fichier vidéo au format 5.1 pour entendre un mixage ambiophonique sur lequel aucun canal ne contient de dialogue, à l'exception du canal central :
sample_51_mix_movie.mp4
Le fichier est conçu pour être lu sur un système audio 5.1. Si vous l'écoutez avec des écouteurs ou un système à deux canaux, il est possible que certains canaux ne soient pas audibles. Pour entendre les six canaux, la lecture doit être décodée sur un système 5.1 ou vous devez créer un mixage vidéo stéréo à deux canaux.
Dans l'idéal, utilisez uniquement le canal de dialogue pour Speech-to-Text. Dans cet exemple de fichier, un seul des six canaux contient des dialogues. Dans la section Optimiser les fichiers audio pour l'analyse, vous apprendrez à extraire individuellement les six canaux audio mono encodés dans le fichier 5.1 afin d'écouter chaque piste séparément. Cela vous permet d'isoler le canal contenant uniquement les dialogues (généralement le canal central ou frontal) des autres canaux afin d'améliorer la capacité de Speech-to-Text à transcrire le fichier.
Tester un même fichier à des taux d'échantillonnage différents
Le tableau suivant répertorie plusieurs versions du même fichier audio que vous pouvez écouter. Chaque version est dotée d'une profondeur de bits et d'un taux d'échantillonnage différents.
Fichier audio | Taux d'échantillonnage/profondeur de bits |
---|---|
HumptyDumptySample4416.flac |
PCM linéaire 44,1 kHz/16 bits |
HumptyDumptySample2216.flac |
PCM linéaire 22 kHz/16 bits |
HumptyDumptySample1616.flac |
PCM linéaire 16 kHz/16 bits |
HumptyDumptySample1116.flac |
PCM linéaire 11 kHz/16 bits |
HumptyDumptySample0808.flac |
PCM linéaire 8 kHz/8 bits |
HumptyDumptyUpSample4416.flac |
PCM linéaire 44,1 kHz (suréchantillonné)/16 bits |
HumptyDumptySample4408.flac |
PCM linéaire 44,1 kHz /8 bits |
HumptyDumptySample4408to16.flac |
PCM linéaire 44,1 kHz/16 bits (converti au niveau supérieur) |
Dans le tableau précédent, cliquez sur le nom de chaque fichier pour l'écouter (le lecteur audio s'ouvre dans un nouvel onglet du navigateur). Notez la différence de qualité lorsque le taux d'échantillonnage est réduit.
La fidélité des fichiers 16 bits est réduite à des taux d'échantillonnage inférieurs et le rapport signal sur bruit est considérablement réduit dans les versions 8 bits en raison des erreurs de quantification. Le dernier fichier du tableau est à l'origine un fichier 8 kHz/8 bits qui a été suréchantillonné à 44,1 GHz/16 bits. Notez que la qualité du son est identique à celle du fichier 8 kHz/8 bits.
Dans Cloud Shell, examinez les métadonnées du fichier
HumptyDumptySampleStereo.flac
:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
Le résultat est le suivant :
Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Ce résultat indique que :
- La durée du fichier est de 26 secondes et il contient 28 images. Ces informations sont utiles pour les cas d'utilisation avancée : par exemple, si vous souhaitez traiter des fichiers d'une durée supérieure à une minute à l'aide de la commande
gcloud speech recognize-long-running
. - Le débit du fichier est de 378 Ko/s.
- Le fichier contient 1 flux (le nombre de flux est différent du nombre de canaux).
- Le taux d'échantillonnage du fichier est de 44,1 kHz.
- Le fichier contient deux canaux audio (stéréo).
- Le fichier a une profondeur de bits de 16 bits.
Un flux de transport peut contenir un certain nombre de flux, y compris audio, vidéo et de métadonnées. Chaque flux possède des caractéristiques différentes, telles que le nombre de canaux audio par flux, ainsi que le codec et le nombre d'images par seconde des flux vidéo.
Notez que les métadonnées indiquent qu'il s'agit d'un fichier stéréo. Cette information est importante, car il est recommandé par défaut d'utiliser un seul canal audio mono pour l'analyse avec Speech-to-Text.
- La durée du fichier est de 26 secondes et il contient 28 images. Ces informations sont utiles pour les cas d'utilisation avancée : par exemple, si vous souhaitez traiter des fichiers d'une durée supérieure à une minute à l'aide de la commande
Transcrire des fichiers avec Speech-to-Text
Maintenant que vous avez extrait les fichiers mono, vous pouvez utiliser Speech-to-Text pour transcrire les pistes audio. Utilisez la commande gcloud ml speech
, qui appelle l'API Speech-to-Text.
Transcrivez le fichier de dialogue
Alice_FC.flac
nettoyé :gcloud ml speech recognize ~/output/Alice_FC.flac \ --language-code='en-US' --format=text
Attendez quelques secondes jusqu'à ce que la transcription soit terminée. Le résultat est le suivant :
results[0].alternatives[0].confidence: 0.952115 results[0].alternatives[0].transcript: the walrus and the carpenter were walking close at hand they whip like anything to see such quantities of sand if this were only cleared away they said it would be grand results[1].alternatives[0].confidence: 0.968585 results[1].alternatives[0].transcript: " if 7 Maids with seven mops swept it for half a year do you suppose the walrus said that they could get it clear I doubt it said the Carpenter and shed a bitter tear" results[2].alternatives[0].confidence: 0.960146 results[2].alternatives[0].transcript: " oysters come and walk with us the walrus did beseech a pleasant walk a pleasant talk along the Briny Beach we cannot do with more than four to give a hand to each the eldest oyster look at him but never a word he said the eldest oyster winked his eye and shook his heavy head"
Transcrire une piste brouillée
Vous pouvez avoir des fichiers sur lesquels les dialogues sont mélangés avec d'autres éléments sonores. Ces pistes sont souvent appelées "pistes brouillées" en opposition aux pistes composées exclusivement de dialogues qui ne contiennent pas d'autres éléments sonores. Même si Speech-to-Text est capable d'isoler le son de la voix dans des environnements bruyants, les résultats peuvent être moins précis qu'avec des pistes nettes. Il peut être nécessaire d'effectuer un filtrage et un traitement audio supplémentaires pour améliorer l'intelligibilité des dialogues avant d'analyser le fichier avec Speech-to-Text.
Dans cette section, vous transcrivez un mixage réducteur mono du fichier audio 5.1 que vous avez analysé dans l'exemple précédent.
Dans Cloud Shell, transcrivez le fichier
Alice_mono_downmix.flac
:gcloud ml speech recognize $PROJECT_FILES/Alice_mono_downmix.flac \ --language-code='en-US' --format=text
Le résultat est le suivant :
results[0].alternatives[0].confidence: 0.891331 results[0].alternatives[0].transcript: the walrus and the carpenter Milwaukee Corsicana they reflect anything to see such quantity if this were only results[1].alternatives[0].confidence: 0.846227 results[1].alternatives[0].transcript: " it's Sunday 7th March 23rd happy few supposed former said that they could get it clear I doubt it to the doctor and she said it did it to just come and walk with us" results[2].alternatives[0].confidence: 0.917319 results[2].alternatives[0].transcript: " along the Briny Beach it cannot do with more than four to give a hand to each the eldest oyster look at him but he said it was poised to Rich's eye and shook his head"
Les résultats de cette analyse ne sont pas précis en raison des autres sons qui masquent les dialogues. Le niveau de confiance de la transcription est inférieur à 85 %. Comme vous pouvez le constater dans la sortie, le texte ne correspond pas exactement au dialogue de l'enregistrement.
Transcrire des fichiers audio ayant des taux d'échantillonnage et profondeurs de bits différents
Pour mieux comprendre l'impact du taux d'échantillonnage et de la profondeur de bits sur la transcription, vous allez transcrire un même fichier audio enregistré avec différents taux d'échantillonnage et de profondeurs de bits. Cela vous permet de voir le niveau de confiance de Speech-to-Text et le lien avec la qualité audio globale.
Cliquez sur les noms de fichiers dans le tableau suivant pour écouter l'exemple et constater la différence de qualité. Chaque fois que vous cliquez sur le nom d'un fichier, le fichier audio est lu dans un nouvel onglet du navigateur.
Nom du fichier audio Spécifications du fichier Speech_11k8b.flac
Taux d'échantillonnage : 11 025 Hz/Profondeur : 8 bits Speech_16k8b.flac
Taux d'échantillonnage : 16 kHz/Profondeur : 8 bits Speech_16k16b.flac
Taux d'échantillonnage : 16 kHz/Profondeur : 16 bits Speech_441k8b.flac
Taux d'échantillonnage : 44 100 Hz/Profondeur : 8 bits Speech_441k16b.flac
Taux d'échantillonnage : 44 100 Hz/Profondeur : 16 bits Dans Cloud Shell, transcrivez le fichier
Speech_11k8b.flac
, qui représente la qualité audio la plus faible dans cet exemple :gcloud ml speech recognize $PROJECT_FILES/Speech_11k8b.flac \ --language-code='en-US' --format=text
Le résultat est le suivant :
results[0].alternatives[0].confidence: 0.77032 results[0].alternatives[0].transcript: number of Pentacle represent results[1].alternatives[0].confidence: 0.819939 results[1].alternatives[0].transcript: " what people can get in trouble if we take a look at the X again"
Transcrivez le fichier
Speech_441k16b.flac
, qui est enregistré avec une fidélité beaucoup plus élevée :gcloud ml speech recognize $PROJECT_FILES/Speech_441k16b.flac \ --language-code='en-US' --format=text
Le résultat est le suivant :
results[0].alternatives[0].confidence: 0.934018 results[0].alternatives[0].transcript: that gives us the number of pixels per inch when magnified to a 40-foot screen size now we take that number and multiply it by the distance between our eyes the interocular distance of 2 and 1/2 inch number of 10 pixels in other words on a 40-foot screen 10 pixels of information represents 2 and 1/2 in anything farther apart than that and positive Parallax is going to start to force the eyes to rotate that word in order to use the image results[1].alternatives[0].confidence: 0.956892 results[1].alternatives[0].transcript: " where people tend to get in trouble is by looking at these images on a small monitor now if we take a look at the same math using a smaller monitor in this case 60 in the screen size in the resolution to multiply It Again by the distance between our eyes we end up with eighty pixels of Divergence on a monitor which equals two and a half inches so on the monitor things might look fine but when magnified up to the larger screen in this case for defeat we've created a situation that's eight times what we can stand to look at its very painful and should be avoided"
Notez la différence de confiance dans le résultat des deux exemples. Le premier fichier (
Speech_11k8b.flac
), enregistré à 11 kHz avec une profondeur de 8 bits, présente un niveau de confiance inférieur à 78 %. Le deuxième fichier présente un niveau de confiance d'environ 94 %.Si vous le souhaitez, transcrivez les autres fichiers répertoriés dans le tableau de l'étape 1 pour effectuer des comparaisons supplémentaires entre le taux d'échantillonnage et la précision de la profondeur de bits du fichier audio.
Le tableau suivant présente un résumé des résultats de Speech-to-Text pour chacun des fichiers répertoriés dans le tableau de l'étape 1 de la procédure précédente. Notez la différence des résultats de confiance pour chaque type de fichier. (vos résultats peuvent varier légèrement). Les transcriptions des fichiers audio ayant les taux d'échantillonnage et de débit les plus faibles ont tendance à produire des résultats de confiance inférieurs en raison de la mauvaise qualité du son.
Nom du fichier audio | Confiance (section 1) | Confiance (section 2) |
---|---|---|
Speech_11k8b.flac |
0,770318 | 0,81994 |
Speech_16k8b.flac |
0,935356 | 0,959684 |
Speech_16k16b.flac |
0,945423 | 0,964689 |
Speech_44.1k8b.flac |
0,934017 | 0,956892 |
Speech_44.1k16b.flac |
0,949069 | 0,961777 |
Optimiser les fichiers vidéo pour l'analyse
Cette section du tutoriel décrit les étapes requises pour extraire le son 5.1 d'un fichier vidéo.
Dans Cloud Shell, extrayez six canaux mono d'un fichier vidéo 5.1 et convertissez les fichiers individuels au format FLAC :
ffmpeg -i $PROJECT_FILES/sample_51_mix_movie.mp4 -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/sample_FL.flac -map "[FR]" output/sample_FR.flac -map "[FC]" output/sample_FC.flac -map "[LFE]" output/sample_LFE.flac -map "[BL]" output/sample_BL.flac -map "[BR]" output/sample_BR.flac
Cette commande extrait les fichiers suivants dans le répertoire de sortie :
sample_BL.flac sample_BR.flac sample_FC.flac sample_FL.flac sample_FR.flac sample_LFE.flac
Vérifiez les métadonnées de l'exemple de fichier :
ffprobe $PROJECT_FILES/Speech_48kFloat.wav
Le résultat est le suivant :
Duration: 00:00:05.12, bitrate: 1536 kb/s Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 48000 Hz, mono, flt, 1536 kb/s
Les valeurs de métadonnées
pcm_f32le
etflt
indiquent que le débit de ce fichier est à virgule flottante. Vous devez convertir un fichier WAV dont le débit est à virgule flottante au format entier signé.Convertissez le débit du fichier au format entier signé :
ffmpeg -i $PROJECT_FILES/Speech_48kFloat.wav -c:a pcm_s16le output/Speech_48k16bNonFloatingPoint.wav
Cette commande crée un fichier WAV dont le débit est au format entier signé.
Examinez les métadonnées du fichier créé :
ffprobe ~/output/Speech_48k16bNonFloatingPoint.wav
Le résultat est le suivant :
Duration: 00:00:05.12, bitrate: 768 kb/s Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s16, 768 kb/s
Les métadonnées indiquent maintenant que le débit du fichier converti est au format entier signé (little-endian), comme indiqué par les désignations
pcm_s16le
ets16
.
Exécuter des exemples du tutoriel sur un terminal local
Vous pouvez exécuter tous les exemples de ce tutoriel à partir d'un terminal sur votre ordinateur local. L'exécution locale des exemples constitue une fonctionnalité importante pour lire des fichiers audio et vidéo directement à l'aide de la commande ffplay
(plutôt que de simplement les écouter dans le navigateur).
Dans un terminal de votre ordinateur local, installez l'outil FFmpeg :
sudo apt update sudo apt install ffmpeg
Téléchargez les exemples de fichiers sur votre ordinateur local :
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* local_destination_path
Remplacez local_destination_path par l'emplacement où placer les exemples de fichiers.
Définissez la variable d'environnement
LOCAL_PATH
sur l'emplacement de votre ordinateur où vous avez téléchargé les exemples de fichiers :export LOCAL_PATH=local_destination_path
Remplacez local_destination_path par le chemin d'accès de l'étape précédente.
Dans le terminal, utilisez la commande
ffplay
pour écouter un exemple de fichier audio :- Fichier audio :
ffplay
$LOCAL_PATH/HumptyDumpty4416.flac
- Fichier vidéo :
ffplay $LOCAL_PATH/sample_51_mix_movie.mp4
- Lecture du bucket Cloud Storage :
ffplay
$GCS_BUCKET_PATH/HumptyDumpty4416.flac
Dans votre terminal local, testez les exemples que vous avez utilisés précédemment dans ce tutoriel. Cela vous permet de mieux comprendre comment utiliser Speech-to-Text de manière optimale.
- Fichier audio :
Dépannage
Les erreurs peuvent être causées par un certain nombre de facteurs. Il est donc utile d'examiner certaines erreurs courantes et d'apprendre à les corriger. Un fichier audio peut contenir plusieurs erreurs qui empêchent le processus de transcription de se terminer.
La durée du fichier est trop longue
La commande gcloud speech recognize
peut traiter des fichiers d'une durée maximale d'une minute. Essayez l'exemple suivant :
gcloud ml speech recognize $PROJECT_FILES/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Le résultat est le suivant :
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.
L'erreur est due à l'utilisation de la commande speech recognize
pour traiter un fichier d'une durée supérieure à une minute.
Pour les fichiers de plus d'une minute et de moins de 80 minutes, vous pouvez utiliser la commande speech recognize-long-running
. Pour connaître la durée du fichier, vous pouvez utiliser la commande ffprobe
, comme dans l'exemple suivant :
ffprobe $PROJECT_FILES/HumptyDumpty4416.flac
Le résultat ressemble à ce qui suit :
Duration: 00:04:07.91, start: 0.000000, bitrate: 280 kb/s Stream #0:0: Audio: flac, 44100 Hz, mono, s16
Notez que la durée d'exécution du fichier audio est d'environ 4 minutes et 8 secondes.
Lire des fichiers volumineux sur votre ordinateur local
La commande speech recognize-long-running
ne traite que les fichiers d'une durée inférieure ou égale à une minute à partir de l'ordinateur local. Pour déterminer à quel moment vous pourriez rencontrer une erreur dans un fichier d'une durée plus longue, utilisez la commande speech recognize-long-running
dans Cloud Shell :
gcloud ml speech recognize-long-running $PROJECT_FILES/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Le résultat est le suivant :
ERROR: (gcloud.ml.speech.recognize-long-running) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.
Cette erreur n'est pas le résultat de la durée du fichier, mais de sa taille sur l'ordinateur local. Lorsque vous utilisez la commande recognize-long-running
, le fichier doit se trouver dans un bucket Cloud Storage.
Pour lire des fichiers de plus d'une minute, utilisez recognize-long-running
de sorte à lire un fichier à partir d'un bucket Cloud Storage, comme dans la commande suivante :
gcloud ml speech recognize-long-running $GCS_BUCKET_PATH/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Cela prend quelques minutes.
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étape suivante
- Lisez la documentation Speech-to-Text.
- Lisez la documentation sur les commandes speech recognize et speech recognize-long-running.
- Suivez latranscription Speech-to-text avec l'atelier de programmation Cloud Speech-to-Text API.