Nhận dạng giọng nói và tạo âm thanh

Mô hình đa phương thức với Hugging Face

James Chapman

Curriculum Manager, DataCamp

Lời nói

 

Những thành phần quan trọng của dạng sóng lời nói là gì?

  • Cao độ (pitch): tần số trung bình nam 85–180Hz, nữ 165–255Hz
  • Trọng âm (stress): phụ thuộc ngôn ngữ, giọng, cảm xúc
  • Nhịp điệu (rhythm): chịu ảnh hưởng ngữ cảnh, cảm xúc, ngôn ngữ

 

Bài đăng mạng xã hội

Mô hình đa phương thức với Hugging Face

Nhận dạng giọng nói tự động

Âm thanh được mã hóa, rồi giải mã thành âm thanh hoặc văn bản.

  • Văn bản và âm thanh đều là dữ liệu tuần tự
  • Ví dụ: phiên âm, dịch, văn bản thành giọng nói
Mô hình đa phương thức với Hugging Face

Nhận dạng giọng nói tự động

  • Mô hình Tiny: 39M tham số, kích thước 150MB
  • Dữ liệu huấn luyện: 680k giờ (đã gán nhãn)
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
Mô hình đa phương thức với Hugging Face

Nhận dạng giọng nói tự động

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.']
Mô hình đa phương thức với Hugging Face

Tạo âm thanh

Ba thành phần để tạo âm thanh:

  • Bộ tiền xử lý: lấy mẫu lại và trích xuất đặc trưng
  • Mô hình: biến đổi đặc trưng
  • Vocoder: mô hình sinh riêng cho dạng sóng âm thanh
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")
Mô hình đa phương thức với Hugging Face

Speech embeddings

Sơ đồ cách embedding giọng nói nằm trong pipeline tạo giọng nói

Mô hình đa phương thức với Hugging Face

Tạo embedding người nói

  • Encoder tiền huấn luyện: mảng dạng sóng âm thanh → mảng mã hóa (thường 512 chiều)
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)
Mô hình đa phương thức với Hugging Face

Tạo âm thanh

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)

Phổ âm trước và sau

Mô hình đa phương thức với Hugging Face

Ayo berlatih!

Mô hình đa phương thức với Hugging Face

Preparing Video For Download...