Optimiser les fichiers audio pour Speech-to-Text


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 du coût en fonction de votre utilisation prévue.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Installez Google Cloud CLI.
  5. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  6. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  7. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  8. Installez Google Cloud CLI.
  9. Pour initialiser gcloudCLI, exécutez la commande suivante :

    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 la CLI Google Cloud 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 un codec audio pour en obtenir 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.

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

  2. Dans Cloud Shell, installez la version actuelle de FFmpeg :

    sudo apt update
    sudo apt install ffmpeg
    
  3. Vérifiez que FFmpeg est installé :

    ffmpeg -version
    

    Si un numéro de version s'affiche, l'installation a fonctionné.

  4. Créez un répertoire pour les fichiers du projet :

    mkdir project_files
    
  5. Créez un répertoire pour les fichiers de sortie que vous devrez créer ultérieurement :

    mkdir output
    
  6. Téléchargez les exemples de fichiers audio :

    gsutil -m cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/
    
  7. Créez une variable d'environnement pour le nom du bucket Cloud Storage :

    export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_files
    
  8. 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.

  1. 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é).
  2. 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.

  3. 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.

  1. 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.

  2. 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) et HumptyDumptySample_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é.

  1. 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
    (...)
    
  2. 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
    
  3. É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

  1. 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.

  2. 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)
  1. 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.

  2. 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.

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 net Alice_FC.flac :

    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.

  1. 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.

  1. 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
  2. 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"
    
  3. 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 %.

  4. 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.

  1. 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
    
  2. 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 et flt 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é.

  3. 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é.

  4. 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 et s16.

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).

  1. Dans un terminal de votre ordinateur local, installez l'outil FFmpeg :

    sudo apt update
    sudo apt install ffmpeg
    
  2. Téléchargez les exemples de fichiers sur votre ordinateur local :

    gsutil -m cp gs://cloud-samples-data/speech/project_files/*.* local_destination_path
    

    Remplacez local_destination_path par l'emplacement où placer les exemples de fichiers.

  3. 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.

  4. 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.

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

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étape suivante