Transcription audio-anglais en texte avec Hugging Face | NLP Python
📋 Table of Contents
- 🎯 Introduction
- 🌟 Understanding Hugging Face Transformers
- 🤔 What is Wave-to-Wake?
- 💻 How to Perform Speech Transcription with Hugging Face Transformers
- 4.1 Installing Hugging Face Transformers Library
- 4.2 Managing Audio Files with Librosa
- 4.3 PyTorch and the Transformers Classes
- 🔽 Downloading Pre-trained Models
- 🔊 Converting the Audio File to 16,000 Hz
- 6.1 Using Audacity
- 6.2 Online Tools for Audio Conversion
- 📥 Loading the Audio File and Setting Sample Rate
- 7.1 Using Librosa's
load
Function
- 🚀 Tokenizing and Preparing Input Values
- 8.1 Using the Wave2Vec Tokenizer
- 8.2 Obtaining Tensors in PyTorch Format
- 📶 Obtaining Logits and Predicted Values
- 9.1 Understanding Logits and Non-normalized Predictions
- 9.2 Applying the Softmax Function for Normalization
- 📝 Decoding Predicted IDs and Obtaining Transcriptions
- 10.1 Using the Tokenizer's Decode Function
- 10.2 Generating Transcriptions from Predicted IDs
- 💡 The Simplicity and Accuracy of Wave-to-Wake
- 11.1 Comparing Different Voices and Accents
- 11.2 Trying Wave-to-Wake on Hugging Face Website
- 11.3 Recording Audio from the Browser
- ⚠️ Note on GPU Environment and Performance
- 12.1 Running on CPU or GPU
- 12.2 Remarkable Speed and Convenience
- 🌐 Enhancing Possibilities with Hugging Face Transformers
- 13.1 Building a Streamlit Application
- 13.2 Unleashing the Potential of Speech Transcription
- 🔗 Resources
🎯 Introduction
Bienvenue dans cet article de One Little Coder. Aujourd'hui, je vais vous montrer comment vous pouvez effectuer une transcription vocale de la même manière que vous réalisez du traitement du langage naturel (NLP) avec les Transformers de Hugging Face. Oui, vous avez bien entendu ! Dans leur dernière mise à jour des Transformers, Hugging Face a ajouté une fonctionnalité très populaire : le modèle Wave-to-Wake. Cette fonctionnalité vous permet de fournir un fichier audio et d'obtenir une transcription en anglais. Dans cet article, nous allons voir comment réaliser cette transcription avec le modèle Wave-to-Wake en utilisant les Transformers de Hugging Face. Alors, allons-y !
🌟 Understanding Hugging Face Transformers
Les Transformers de Hugging Face sont une bibliothèque populaire pour l'apprentissage profond, en particulier dans le domaine du traitement du langage naturel (NLP). Ils proposent une large gamme de modèles pré-entraînés ainsi que des outils pour travailler avec ces modèles. Les Transformers sont largement utilisés dans l'industrie et la recherche pour des tâches telles que la classification de texte, la génération de texte et bien plus encore. Le modèle Wave-to-Wake est l'un des nouveaux ajouts passionnants aux Transformers de Hugging Face.
🤔 What is Wave-to-Wake?
Wave-to-Wake est un modèle développé par Hugging Face qui vous permet de réaliser des transcriptions vocales. Ce modèle est entraîné à partir d'un concept appelé "Connectionist Temporal Classification" (CTC), qui est utilisé pour traiter les séquences temporelles. Cela signifie que le modèle peut comprendre et transcrire des fichiers audio en texte. Wave-to-Wake propose des transcriptions en anglais, mais nous allons vérifier si d'autres langues sont disponibles.
💻 How to Perform Speech Transcription with Hugging Face Transformers
4.1 Installing Hugging Face Transformers Library
Avant de commencer, nous devons installer la bibliothèque Transformers de Hugging Face. Vous pouvez le faire en exécutant la commande suivante :
!pip install transformers
4.2 Managing Audio Files with Librosa
La bibliothèque Librosa est un outil puissant pour gérer les fichiers audio. Elle offre des fonctionnalités telles que le chargement des fichiers audio, la récupération des taux d'échantillonnage et bien plus encore. Pour l'utiliser, vous devez l'installer en exécutant la commande suivante :
!pip install librosa
4.3 PyTorch and the Transformers Classes
Nous aurons également besoin de la bibliothèque PyTorch pour travailler avec les Transformers de Hugging Face. Assurez-vous de l'installer en exécutant la commande suivante :
!pip install torch
Nous aurons besoin de deux classes de la bibliothèque Transformers : Wave2VecForCTC et Wave2Vec2Tokenizer. Vérifions comment les charger :
from transformers import Wave2VecForCTC, Wave2Vec2Tokenizer
🔽 Downloading Pre-trained Models
La première étape consiste à télécharger les modèles pré-entraînés nécessaires pour effectuer la transcription vocale. Heureusement, Hugging Face rend cela très facile avec sa classe "pipeline". Exécutez le code suivant pour télécharger les modèles :
from transformers import pipeline
transcription_pipeline = pipeline("text2text-generation", model="facebook/wav2vec2-base-960h")
🔊 Converting the Audio File to 16,000 Hz
Pour utiliser le modèle Wave-to-Wake, nous devons nous assurer que notre fichier audio est échantillonné à une fréquence de 16 000 Hz. Si notre fichier audio n'a pas déjà cette fréquence, nous devons le convertir. Il existe plusieurs façons de le faire :
6.1 Using Audacity
Une façon de convertir la fréquence d'échantillonnage de notre fichier audio est d'utiliser une application comme Audacity. Suivez les étapes suivantes dans Audacity :
- Ouvrez votre fichier audio.
- Accédez à "File" (Fichier) > "Export" (Exporter) > "Export as WAV" (Exporter au format WAV).
- Choisissez un emplacement de destination et donnez un nom à votre fichier.
- Dans le menu déroulant "Save as Type" (Enregistrer en tant que type), sélectionnez "WAV (Microsoft) signed 16-bit PCM".
- En dessous, vous verrez une option "Options..." (Options...). Cliquez dessus.
- Dans la fenêtre "Other uncompressed files" (Autres fichiers non compressés), sélectionnez "Signed 16-bit PCM".
- Vous verrez ensuite une option "Header" (En-tête) avec un menu déroulant "Encoding" (Encodage). Sélectionnez "16-bit PCM".
- Dans le champ "Rate (Hz)" (Fréquence (Hz)), entrez "16000".
- Cliquez sur "OK" pour fermer la fenêtre "Options...".
- Cliquez sur "Save" (Enregistrer) pour convertir votre fichier audio en 16 000 Hz.
6.2 Online Tools for Audio Conversion
Si vous n'avez pas accès à Audacity, vous pouvez utiliser des outils en ligne pour convertir votre fichier audio en 16 000 Hz. Il existe de nombreux sites web qui offrent ce service, il vous suffit de rechercher "audio sample rate converter online" (convertisseur de fréquence d'échantillonnage audio en ligne) sur votre moteur de recherche préféré. Suivez les instructions spécifiques pour convertir votre fichier audio.
Une fois que vous avez converti votre fichier audio en 16 000 Hz, vous pouvez le charger dans notre programme Python.
📥 Loading the Audio File and Setting Sample Rate
Pour le chargement du fichier audio, nous utiliserons la fonction load
de la bibliothèque Librosa. Cette fonction nous permettra de charger le fichier audio et de spécifier le taux d'échantillonnage souhaité (16 000 Hz). Voici comment procéder :
import librosa
audio_path = "chemin_vers_votre_fichier_audio.wav"
sample_rate = 16000
audio, _ = librosa.load(audio_path, sr=sample_rate)
Assurez-vous de remplacer "chemin_vers_votre_fichier_audio.wav"
par le chemin d'accès réel vers votre fichier audio.
🚀 Tokenizing and Preparing Input Values
Maintenant que nous avons chargé notre fichier audio, nous devons le tokeniser et préparer les valeurs d'entrée pour notre modèle Wave-to-Wake. Pour ce faire, nous utiliserons le tokenizer Wave2Vec2Tokenizer de la bibliothèque Transformers. Voici comment l'utiliser :
8.1 Using the Wave2Vec Tokenizer
tokenizer = Wave2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
8.2 Obtaining Tensors in PyTorch Format
input_values = tokenizer(audio, return_tensors="pt").input_values
📶 Obtaining Logits and Predicted Values
Maintenant que nous avons préparé les valeurs d'entrée, nous allons les utiliser pour obtenir les logits et les valeurs prédites de notre modèle. Les logits sont les valeurs prédites non normalisées, tandis que les valeurs prédites sont les valeurs normalisées obtenues à partir des logits. Voyons comment effectuer cette étape :
9.1 Understanding Logits and Non-normalized Predictions
model = Wave2VecForCTC.from_pretrained("facebook/wav2vec2-base-960h")
logits = model(input_values).logits
9.2 Applying the Softmax Function for Normalization
import torch.nn.functional as F
predicted_ids = torch.argmax(F.softmax(logits, dim=-1), dim=-1)
📝 Decoding Predicted IDs and Obtaining Transcriptions
Nous avons maintenant nos valeurs prédites sous forme d'IDs et nous devons les décoder pour obtenir la transcription finale. Pour ce faire, nous utiliserons la fonction decode
du tokenizer. Voici comment cela fonctionne :
10.1 Using the Tokenizer's Decode Function
transcriptions = tokenizer.batch_decode(predicted_ids)[0]
10.2 Generating Transcriptions from Predicted IDs
print(transcriptions)
💡 The Simplicity and Accuracy of Wave-to-Wake
Le modèle Wave-to-Wake de Hugging Face est incroyablement simple à utiliser et offre des résultats précis. Dans notre exemple, vous avez pu constater que la transcription de la voix d'Harvey Dent était exacte. Cependant, il est important de noter que certaines voix, comme celle de Batman, peuvent ne pas être transcrits aussi précisément. Cependant, la simplicité et la précision de Wave-to-Wake en font un outil puissant pour toute personne souhaitant réaliser des transcriptions vocales.
⚠️ Note on GPU Environment and Performance
Il est important de noter que dans cet exemple, nous avons effectué la transcription vocale en utilisant l'environnement CPU plutôt que l'environnement GPU. Cela démontre à quel point Wave-to-Wake est performant même sur le processeur. Si vous disposez d'un GPU, vous pouvez l'utiliser pour des performances encore meilleures. Dans tous les cas, vous serez étonné de la vitesse à laquelle le modèle réalise les transcriptions.
🌐 Enhancing Possibilities with Hugging Face Transformers
Avec les Transformers de Hugging Face, les possibilités sont infinies. Vous pouvez créer une application Streamlit permettant aux utilisateurs d'uploader leurs propres fichiers audio pour obtenir des transcriptions. L'utilisation de modèles pré-entraînés tels que Wave-to-Wake dans le même écosystème facilite grandement l'exploitation de ces fonctionnalités. Profitez de cette puissance et n'hésitez pas à partager vos réalisations avec la communauté !
🔗 Resources