Optimiser les fichiers audio pour Cloud Speech-to-Text

Ce tutoriel explique comment effectuer un contrôle préliminaire des fichiers audio que vous vous apprêtez à utiliser avec Cloud Speech-to-Text. Il fournit des informations sur les formats de fichiers audio, explique comment les optimiser pour une utilisation avec Cloud STT, 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 de connaissance approfondie deGoogle Cloud. Il est toutefois nécessaire d'avoir acquis des connaissances de base sur l'utilisation de l'outil de ligne de commandegcloud 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 Cloud STT sur divers exemples de fichiers contenant des dialogues

Coûts

Ce tutoriel utilise les composants facturables suivants de Google Cloud :

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. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  6. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  11. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  12. Dans ce tutoriel, vous allez utiliser Cloud Shell pour effectuer les procédures, y compris celles de copie de données d'un bucket Cloud Storage vers la session Cloud Shell. Cloud Shell est un environnement de shell dans lequel la Google Cloud CLI est déjà installée. Vous allez utiliser gcloud CLI dans de nombreuses étapes de ce tutoriel. Vous allez également installer des logiciels et des exemples de fichiers audio sur votre ordinateur local et exécuter 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 d'enregistrement, de conversion et de diffusion de 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 Cloud STT, 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é à Cloud STT

    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 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 Cloud STT. 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 Cloud STT 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/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 juste. (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 Cloud STT 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 l'audio bruité afin d'obtenir de meilleurs résultats pour transcrire le fichier avec Cloud STT. Le traitement des enregistrements bruités et des interférences de bruit de fond n'entre pas dans le cadre de ce tutoriel. Pour en savoir plus, consultez Bonnes pratiques de la documentation de Cloud STT.

    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 Cloud STT
    • Conversion des taux d'échantillonnage et de débit des fichiers audio en configurations optimales pour permettre l'analyse par Cloud STT
    • 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 l'outil 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 formats de fichiers pour l'analyse de machine learning.

    Codecs reconnus par Cloud STT

    Bien que Cloud STT 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 pris en charge.

    Ce tutoriel vous invite à lire les métadonnées pour identifier et corriger d'éventuels problèmes avant d'utiliser Cloud STT. Si vous constatez qu'un fichier est dans un format non pris en charge, les mêmes outils vous permettent de le convertir.

    Cloud STT reconnaît les codecs suivants :

    • FLAC : codec audio gratuit sans perte
    • LINEAR16 : format de modulation par impulsions 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 Cloud STT.

    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 Cloud STT, 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 Cloud STT. La section Optimiser les fichiers audio pour l'analyse de ce tutoriel fournit un exemple de conversion d'un fichier dont la profondeur de vit est au format à virgule flottante en un fichier au format à nombre entier (signé) pour le transcrire dans Cloud STT.

    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 Cloud STT.

    Dans cette section, vous installez FFmpeg et configurez des variables d'environnement pointant vers les emplacements de stockage des exemples de données situés 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. In the Google Cloud console, activate Cloud Shell.

      Activate 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 :

      gcloud storage 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 d'accès 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
      
    9. Examiner les métadonnées dans les fichiers multimédias

      Lorsque vous analysez des fichiers audio ou vidéo avec Cloud STT, 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 Cloud 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, comme indiqué dans la section Optimiser les fichiers audio pour l'analyse qui se trouve plus loin dans ce tutoriel.

      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 que ce fichier génère des erreurs lorsque vous essayez de le transcrire à l'aide de Cloud STT. Plus important encore, vous verrez comment optimiser le fichier afin de l'utiliser avec Cloud STT sans erreur.

      Optimiser les fichiers audio pour l'analyse

      Comme indiqué précédemment, lorsque vous utilisez Cloud STT, 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 section Transcrire des contenus audio avec plusieurs canaux de la documentation de Cloud STT. 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 Cloud STT sur un fichier qui n'est pas au format mono.

      1. Dans Cloud Shell, exécutez Cloud STT 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 Cloud STT 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 Cloud STT est due à la tentative de traitement d'un fichier stéréo.

      Pour en savoir plus sur la gestion des fichiers stéréo avec l'écriture de script, consultez Transcrire des contenus audio avec plusieurs canaux dans la documentation de Cloud STT.

      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 droit à 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 locuteurs sont enregistrés sur différents canaux, nous vous recommandons de transcrire les canaux séparément. Cloud STT 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 Différencier les locuteurs dans un enregistrement audio dans la documentation de Cloud STT.

      • 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 Cloud STT.

      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 Cloud STT, 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 Cloud STT. 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 Cloud STT, 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 justes. 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 Cloud STT.

      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 un casque 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 stéréo à deux canaux.

        Dans l'idéal, utilisez pour Cloud STT le canal ne contenant que des dialogues. 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 des autres canaux le canal contenant uniquement des dialogues (généralement le canal central ou frontal), afin d'améliorer la capacité de Cloud STT à 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/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 trames. 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 Cloud STT.

      Transcrire des fichiers avec Cloud STT

      Maintenant que vous avez extrait les fichiers mono, vous pouvez utiliser Cloud STT pour transcrire les pistes audio. Utilisez la commande gcloud ml speech, qui appelle l'API Cloud 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 Cloud STT 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 Cloud STT.

      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 sont erronés 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 le résultat, 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 profondeurs de bits. Cela vous permet de voir le niveau de confiance de Cloud STT 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 listés dans le tableau de l'étape 1 pour effectuer des comparaisons supplémentaires de justesse entre le taux d'échantillonnage et la profondeur de bits du fichier audio.

      Le tableau suivant présente un résumé des résultats de Cloud STT pour chacun des fichiers listé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 permettant de lire des fichiers audio et vidéo directement à l'aide de la commande ffplay (plutôt que de 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 :

        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.

      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 depuis le 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 Cloud STT 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.

      Le contenu audio est trop long

      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 permet de traiter 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 avec 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.

    Effectuer un nettoyage

    Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.

    Supprimer le projet

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Étapes suivantes