Riconoscimento vocale e generazione audio

Modelli multi-modali con Hugging Face

James Chapman

Curriculum Manager, DataCamp

Parlato

 

Quali sono le parti importanti delle forme d’onda del parlato?

  • Pitch: freq. media maschi 85–180 Hz, femmine 165–255 Hz
  • Stress: dipende da lingua, accento ed emozione
  • Ritmo: influenzato da contesto, emozione e lingua

 

Post sui social media

Modelli multi-modali con Hugging Face

Riconoscimento vocale automatico

L’audio viene codificato, poi decodificato in audio o testo.

  • Testo e audio sono entrambi sequenziali
  • Esempi: trascrizione, traduzione, text-to-speech
Modelli multi-modali con Hugging Face

Riconoscimento vocale automatico

  • Modello Tiny: 39M parametri, 150MB di dimensione
  • Dati di training: 680k ore (etichettate)
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
Modelli multi-modali con Hugging Face

Riconoscimento vocale automatico

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.']
Modelli multi-modali con Hugging Face

Generazione audio

Tre componenti per generare audio:

  • Preprocessore: ricampionamento ed estrazione feature
  • Modello: trasformazione delle feature
  • Vocoder: modello generativo separato per le forme d’onda
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")
Modelli multi-modali con Hugging Face

Speaker embeddings

Schema di come un embedding vocale si inserisce in una pipeline di generazione vocale

Modelli multi-modali con Hugging Face

Generare speaker embeddings

  • Encoder pre-addestrato: array dell’onda audio → array codificato (tipicamente 512 dimensioni)
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)
Modelli multi-modali con Hugging Face

Generazione 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)

Spettrogramma prima e dopo

Modelli multi-modali con Hugging Face

Passons à la pratique !

Modelli multi-modali con Hugging Face

Preparing Video For Download...