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.
C’est également possible de réaliser cette tache avec un script Python (non décrit dans cet article).
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).
# 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é ».
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.
[…] d’un fichier audio en texte via Google Speech-to-Text est au final relativement contraignante du fait que les vidéos dépassant 60 secondes doivent […]