Reconnaissance de la parole et génération audio

Modèles multimodaux avec Hugging Face

James Chapman

Curriculum Manager, DataCamp

Parole

 

Quelles sont les composantes clés des ondes de parole ?

  • Hauteur : fréquences moyennes ; hommes 85–180 Hz, femmes 165–255 Hz
  • Intensité : varie selon la langue, l'accent et l'émotion
  • Rythme : influencé par le contexte, l'émotion et la langue

 

Publication sur les médias sociaux

Modèles multimodaux avec Hugging Face

Reconnaissance automatique de la parole

Le signal audio est encodé, puis décodé en audio ou en texte.

  • Le texte et l'audio sont tous deux séquentiels
  • Exemples : transcription, traduction, synthèse vocale
Modèles multimodaux avec Hugging Face

Reconnaissance automatique de la parole

  • Modèle « Tiny » : 39 M de paramètres, taille de 150 Mo
  • Données d'entraînement : 680 k heures (étiquetées)
from transformers import WhisperProcessor, WhisperForConditionalGeneration
processor = WhisperProcessor.from_pretrained("openai/whisper-tiny")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny")
1 https://github.com/openai/whisper
Modèles multimodaux avec Hugging Face

Reconnaissance automatique de la parole

from datasets import load_dataset, Audio
dataset = load_dataset("CSTR-Edinburgh/vctk")["train"]
dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))

sample = dataset[0]["audio"]
input_preprocessed = processor(sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt")
predicted_ids = model.generate(input_preprocessed.input_features)
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True) print(transcription)
['Please cool Stella.']
Modèles multimodaux avec Hugging Face

Génération audio

Trois composantes pour générer de l'audio :

  • Préprocesseur : rééchantillonnage et extraction de caractéristiques
  • Modèle : transformation des caractéristiques
  • Vocodeur : modèle génératif distinct pour les formes d'onde audio
from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan

processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc") model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc") vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
Modèles multimodaux avec Hugging Face

Plongements vocaux

Schéma montrant l'emplacement d'un plongement vocal dans une chaîne de génération vocale

Modèles multimodaux avec Hugging Face

Générer des plongements de locuteur

  • Encodeur préentraîné : tableau d'onde audio → tableau encodé (souvent 512 dimensions)
from speechbrain.inference.speaker import EncoderClassifier
speaker_model = EncoderClassifier.from_hparams(source="speechbrain/spkrec-xvect-voxceleb")
speaker_embeddings = speaker_model.encode_batch(torch.tensor(dataset[0]["audio"]["array"]))

speaker_embeddings = torch.nn.functional.normalize(speaker_embeddings, dim=2).unsqueeze(0)
Modèles multimodaux avec Hugging Face

Génération audio

inputs = processor(audio=dataset[0]["audio"], 
                   sampling_rate=dataset[0]["audio"]["sampling_rate"], 
                   return_tensors="pt")


speech = model.generate_speech(inputs["input_values"], speaker_embedding, vocoder=vocoder)

Spectrogramme avant et après

Modèles multimodaux avec Hugging Face

Passons à la pratique !

Modèles multimodaux avec Hugging Face

Preparing Video For Download...