Transcription avec Google Speech-to-Text

T

Introduction

Speech-to-Text est un service de Google qui transforme un fichier audio en texte. Cet outil a une précision pouvant atteindre près de 90 %, selon des facteurs tels que la qualité de l’audio et le contexte (dixit Google).

Dans un précédent article j’ai abordé le formatage des articles de la base Europresse aux exigences du logiciel IRAMUTEQ.

L’apparition de médias alternatifs à la presse conventionnelle ouvre la voie à la collecte de vastes quantités de données (Big Data). Le script vise donc à collecter des interview via des plateforme comme Youtube par exemple. Cependant, le script ne se limite pas à la transcription de contenus issus de ces nouveaux médias ; il est aussi parfaitement adapté à la transcription de fichiers audio (classique) provenant de vos entretiens qualitatifs.
Cette approche permet donc non seulement d’extraire des données à partir de plateformes telles que YouTube, mais aussi de convertir en texte des enregistrements audio d’entretiens.

Dans cet article, l’objectif est de vérifier si la transcription obtenue grâce à Google Speech-to-Text est précise, en utilisant comme point de référence l’extraction d’un fichier audio provenant d’une vidéo YouTube.
A travers cet article nous allons donc explorer la méthodologie pour extraire une piste audio d’un fichier Youtube et le transcrire en format texte.

Avant de commencer voici en quelques lignes les principales informations :

  • Google Speech-to-Text est une API payante. Vous pouvez tester l’API, Google offre gratuitement 60 minutes par mois. De plus, à l’inscription, Google crédite votre compte de 300.
  • Vous pouvez simuler les coût de Speech-to-text =>(L’entreprise propose également un simulateur de coût).
  • Il est nécessaire de créer un projet dans Google Cloud en activant l’API Google Speech-to-Text, ce qui prend environ 15 minutes.
  • Vous devrez récupérer un fichier JSON contenant votre clé, à déposer sur votre Mac/PC.
  • Google Speech-to-text gère la ponctuation, ce qui est avantageux car le logiciel IRAMUTEQ utilise la ponctuation pour segmenter les textes.
  • L’API offre également une option pour la retranscription d’une ou plusieurs voix (comme l’intervieweur et l’interviewé). Cela peut s’avérer compliqué avec l’analyse de vidéos/audio YouTube, où le style d’interview informel rend difficile la séparation des voix pour la retranscription.
  • Google Speech-to-text propose des modes spécialisés tels que le dictionnaire médical, que vous pouvez activer.
  • L’API permet l’import de votre fichier audio en local (depuis votre Mac/PC) qui ne doit pas excéder 60 secondes… Pour des fichiers audio plus longs, il est nécessaire de les déposer sur Google Cloud Storage et de créer un Bucket (un conteneur de stockage) qui vous fournira une URL de retour de votre fichier.
  • Il est vivement conseillé de convertir votre fichier audio au format .WAV (mono).
  • Actuellement, il n’est pas possible de réaliser une retranscription directement à partir d’un lien YouTube. Il est nécessaire d’extraire la piste audio avec un convertisseur avant de procéder à la retranscription.
  • Enfin, la qualité de la retranscription dépend grandement de la qualité du son et des moyens techniques employés lors de la prise de son.

 

Extraire la piste audio

Le début de l’aventure commence par l’extraction de la piste audio de votre vidéo YouTube. Vous pouvez utiliser une plateforme en ligne comme TubeRipper. Cette méthode est simple et pratique pour obtenir la piste audio d’une vidéo.

C’est également possible de réaliser cette tache avec un script Python (non décrit dans cet article).

Une fois l’extraction audio effectuée, vous pouvez utiliser le logiciel libre Audacity, pour éditer le fichier. Vous pouvez y sélectionner une séquence spécifique ou améliorer le fichier en enlevant des éléments non nécessaires, comme l’introduction et la conclusion, selon vos besoins.

!!!! Il est crucial de transformer votre fichier audio en format « mono » si celui-ci a été initialement enregistré en « stéréo ». !!!!

 

Texte court vs texte long

L’API permet de tester la retranscription d’un fichier audio d’une durée maximale de 60 secondes, ce qui est assez limité… pour une analyse textuelle en recherche en Sciences Humaines.
Pour traiter des fichiers plus longs, vous devrez les charger sur Google Cloud Storage. Vous devrez y créer un Bucket pour uploader le fichier et obtenir une URI (Uniform Resource Identifier).

Dans le contexte de Google Cloud Storage, une URI est un identifiant unique pour accéder à un fichier stocké sur la plateforme, permettant ainsi à l’API/Script de le localiser et de l’utiliser (Un lien dans un espace sécurisé en quelque sorte).

Les modes de reconnaissance vocale

Speech-to-Text offre différents modèles de reconnaissance vocale optimisés pour des scénarios spécifiques. Chacun de ces modèles est conçu pour améliorer la précision de la transcription dans des contextes particuliers.
Pas de chance… ces modèles sont principales utilisable pour les fichiers audios en langue Anglaise. Vous trouverez dans le script une ligne de code vous permettant d’activer (commentez « # » ou décommentez la ligne de code si besoin) ces modèles.
Sachez que si vous utilisez le modèle « Vidéo » (par exemple) avec un fichier audio en langue française le script va « planter ».


Voici un descriptif de ces différents modes :

  • Default (Par défaut): Ce modèle est polyvalent et conçu pour reconnaître la parole dans des enregistrements audio généraux. Il est adapté à une variété de contenus, y compris des dictées et des enregistrements de réunions.
  • Vidéo: Ce modèle est optimisé pour les fichiers audio extraits de vidéos ou contenant plusieurs locuteurs. Il est idéal pour transcrire des émissions de télévision, des films, et des vidéos YouTube.
  • Phone Call (Appel téléphonique): Spécifiquement conçu pour transcrire des enregistrements d’appels téléphoniques. Il fonctionne bien avec les fréquences audio limitées typiques des appels téléphoniques.
  • Command and Search (Commande et Recherche): Ce modèle est optimisé pour les courtes requêtes audio et les commandes vocales. Il est idéal pour les applications nécessitant des interactions vocales courtes et précises, comme les assistants vocaux.
  • Medical Dictation (Dictée Médicale): Spécialement conçu pour la transcription de dictées dans le domaine médical. Ce modèle est optimisé pour comprendre le jargon médical.

 

Obtenir une clé API Google Cloud

Pour utiliser l’API Google Cloud Speech-to-Text, vous aurez besoin d’une clé API de Google Cloud. Cette clé API est utilisée pour authentifier vos requêtes auprès des services de Google Cloud et pour suivre et contrôler l’utilisation de ces services. Particularité de Google Speech-to-text vous pourrez l’utiliser qu’après avoir renseigné vos coordonnées pour la facturation (si vous dépassez le quota).
No stress! Google n’engage aucune facturation sans vous avertir que vous avec consommez tous vos crédits gratuits.

Cette partie étant longue et si vous êtes perdu => ici vous avez un tuto en Anglais.

 

Timeout du serveur de google ?

Lors de ma première utilisation du service Google Speech-to-text pour transcrire un fichier audio de 1h38, le script a rencontré un problème de « timeout », interrompant la transcription de l’audio.
J’ai ajusté le script en incluant une interface graphique qui affiche la progression de la transcription. Cette progression est estimée en se basant sur la durée de la vidéo plus une marge d’erreur.
Personnellement, je trouve que la transcription se fait assez rapidement, bien que je n’aie pas encore déterminé un moyen précis pour mesurer sa vitesse exacte.

 

Google Speech-to-text vs youtube-transcript-api

Avant de m’intéresser à Google Speech je me suis intéressé à la librairie Python youtube-transcript-api.
Cette méthode (plus simple) exploite une fonctionnalité de Google YouTube en récupérant des transcriptions automatiquement générées par Google sur YouTube (manuellement dans Youtube vous pouvez accéder directement à cette transcription => une fenêtre apparaît sur le côté droit de l’écran affichant le texte). Comme vous pouvez le voir sur l’image ci-dessous la transcription n’est pas franchement qualitative.


Google ne fournit pas de détails sur le modèle linguistique utilisé pour la transcription affiché dans l’interface de Youtube.
L’avantage de cette méthode réside dans sa simplicité, sa facilité d’utilisation et son coût quasi nul. « Quasi nul » dans la mesure ou vous n’auriez pas à retravailler votre fichier texte… le temps c’est de l’argent ?!

Toutefois, un inconvénient majeur est l’absence de ponctuation dans le texte récupéré.

Lorsqu’on utilise le logiciel IRAMUTEQ pour une analyse lexicale, la ponctuation est importante, car le logiciel s’appuie en premier lieu sur cette syntaxe permettant de segmenter le texte en segment de texte, respectant ainsi sa structure originale.

L’obtention d’une transcription via Google Speech-to-Text qui inclut la ponctuation représente donc un avantage significatif.
Pour bénéficier de cette fonctionnalité, il est nécessaire de l’activer explicitement dans le script, car elle n’est pas sélectionnée par défaut.

De plus, une option permet d’indiquer si l’enregistrement audio comporte une ou plusieurs voix.
Bien que j’aie activé cette fonction, je n’ai pas encore évalué si elle améliore la précision de la transcription par rapport au réglage standard.
Dans mon étude, je me concentre sur une vidéo d’interview menée par un blogueur avec Laurent Alexandre, traitant de l’intelligence artificielle générative.

Ce format « podcast » présente une dynamique d’entretien complexe où l’intervieweur participe activement, ce qui peut rendre difficile la distinction entre les questions et les réponses.

 

Le script python

Avant de lancer le script, vous devez importer dans votre environnement virtuel les librairies :

# pip install google.cloud.speech
# pip install google-auth

Ainsi que la librairie tqdm (pour la mini interface graphique / barre de progression).
Vous devrez renseigner votre clé API (sous forme fichier JSON) dans cette partie du code :

# Chemin vers votre fichier de clé
JSON os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'ICI LE CHEMIN DE VOTRE FICHIER JSON/CLÉ API'

# pip install google.cloud.speech
# pip install google-auth
# pip install tqdm

import os
import time
from google.cloud import speech
from tqdm import tqdm  # Importez tqdm

# Chemin vers votre fichier de clé JSON
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'ICI LE CHEMIN DE VOTRE FICHIER JSON/CLÉ API'

# Initialisation du client Speech-to-Text
client = speech.SpeechClient()

# Configuration de la requête
config = speech.RecognitionConfig(
    encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,  # LINEAR16 --> Encodage wav
    language_code='fr-FR',  # code de la langue
    # model='video',  # Ajoutez cette ligne pour utiliser le modèle vidéo (ne fonctionne pas pour l'audio en Français)
    enable_automatic_punctuation=True, # activation de la ponctuation
    # activation de la detection de plusieurs voix
    diarization_config=speech.SpeakerDiarizationConfig(
        enable_speaker_diarization=True,
        min_speaker_count=2,
        max_speaker_count=2,
    ),
)

# URI GCS du fichier audio via google cloud storage
gcs_uri = "gs://audiolaurentalexandre/laurentalexandrefullmono.wav"

audio = speech.RecognitionAudio(uri=gcs_uri)

# Durée de la vidéo en secondes (1 heure et 39 minutes)
duree_video = (60 * 60) + (39 * 60)

print("Connexion à l'API en cours...")
operation = client.long_running_recognize(config=config, audio=audio)

# Barre de progression
with tqdm(total=100, unit=" %", position=0, leave=True) as pbar:
    start_time = time.time()
    while not operation.done():
        elapsed_time = time.time() - start_time
        percent_complete = (elapsed_time / duree_video) * 100
        pbar.n = percent_complete
        pbar.last_print_n = percent_complete
        pbar.update()
        time.sleep(10)  # Mettre à jour la barre de progression toutes les 10 secondes

print("Transcription en cours...")

# Utilisez la durée de la vidéo comme timeout
timeout = duree_video + 500  # Ajoutez une marge de sécurité de 5 minutes (300 secondes)

# Attendre la fin de l'opération avec le timeout calculé
response = operation.result(timeout=timeout)

with open('transcriptionfull.txt', 'w') as file:
    print("Traitement de la transcription...")
    for result in response.results:  # Utilisez 'response' au lieu de 'responses'
        transcription = result.alternatives[0].transcript
        file.write(transcription + '\n')

print("Transcription terminée. Le fichier de transcription est prêt dans 'transcription.txt'")

 

Conclusion

Cet article explore deux méthodes de transcription : l’utilisation de la librairie youtube-transcript-api (un tutoriel sera bientôt disponible) et l’API Google Speech-to-Text.
La vidéo sélectionnée pour ces tests bénéficie d’une qualité sonore optimale, ce qui est un point de départ favorable.
Google Speech-to-Text révèle un avantage notable : la présence de ponctuation, qui améliore significativement la lisibilité du texte.
Cependant, une (rapide) analyse de la transcription met en évidence un problème récurrent avec la reconnaissance des entités nommées (NER), où « GPT » est mal interprété en « j’ai pété ».

Google aurait-il une allergie avec OpenAI ???

Je prévois de poursuivre les expérimentations avec d’autres vidéos pour élargir cette étude.

Toutefois, il est déjà évident qu’une révision du corpus transcrit sera indispensables pour corriger de telles erreurs et affiner la qualité de la transcription.
Google m’aurait-il vendu du rêve avec ses 90% de précision.

 

A propos de l'auteur

Stéphane Meurisse

1 Commentaire

Stéphane Meurisse