Phase 06: Speech & Audio

Phân phối giọng nói & chuyển đổi giọng nói

Phân bản giọng nói đọc văn bản của bạn bằng giọng nói của người khác. Chuyển đổi giọng nói viết lại giọng nói của bạn vào tiếng nói của người khác trong khi vẫn giữ lại những gì bạn nói. Cả hai đều gắn liền với sự phân hủy tương tự: tách biệt danh tính loa khỏi nội dung.

Type: Build

Languages: Python

Prerequisites: Phase 6 · 06 (Speaker Recognition), Phase 6 · 07 (TTS)

Time: ~75 minutes

Vấn đề

Năm 2026, một đoạn âm thanh 5 giây là đủ để tạo ra một bản sao âm thanh chất lượng cao của bất kỳ ai với GPU tiêu dùng. ElevenLabs, F5-TTS, OpenVoice v2, VoiceBox tất cả các tàu không bắn hoặc ít bắn sao. Công nghệ là một ân phước (tải tiếp cận TTS, dubbing, tiếng nói hỗ trợ) và một vũ khí (scam cuộc gọi, deepfakes chính trị, IP trộm cắp).

Hai nhiệm vụ liên quan chặt chẽ:

  • Voice cloning (TTS-side):văn bản + giọng nói tham chiếu 5 giây → âm thanh trong giọng nói đó.
  • Voice conversion (speech-side):âm thanh nguồn (người A nói X) + giọng nói tham chiếu của người B → âm thanh của B nói X.

Cả hai đều tính toán một dạng sóng thành (container, speaker, prosody) và tái kết hợp nội dung từ một nguồn với speaker từ một nguồn khác.

Một hạn chế quan trọng mà bạn đang phải đặt vào năm 2026:watermarking and consent gates are legally required in the EU (AI Act, enforceable August 2026) and in California (AB 2905, effective 2025)Đường ống của bạn phải phát ra một dấu nước không thể nghe được và từ chối các bản sao không đồng ý.

Khái niệm

!Voice cloning vs conversion: factorize, swap speaker, recombine

Zero-shot cloning.Chuyển một clip 5 giây cho một mô hình đã được đào tạo trên hàng ngàn loa. Bộ mã hóa loa lập bản đồ clip cho một loa nhúng; bộ mã hóa TTS điều kiện trên nhúng cộng với văn bản.

Được sử dụng bởi: F5-TTS (2024), YourTTS (2022), XTTS v2 (2024), OpenVoice v2 (2024).

Few-shot fine-tuning.Lập lại 5-30 phút của giọng nói mục tiêu. LoRA-định chỉnh một mô hình cơ bản trong một giờ. chất lượng nhảy từ "tốt" đến "không thể phân biệt". Coqui và ElevenLabs đều hỗ trợ mô hình này; cộng đồng sử dụng nó với F5-TTS.

Voice conversion (VC).Hai gia đình:

  • Recognition-synthesis.Động cơ ASR để lấy biểu diễn nội dung (ví dụ: hậu âm mềm, PPG), sau đó tổng hợp lại với nhúng loa mục tiêu. Năng bằng ngôn ngữ và giọng nói. Được sử dụng bởi KNN-VC (2023), Diff-HierVC (2023).
  • Disentanglement.Trình tạo một bộ mã hóa tự động phân tách nội dung, loa và prosody trong không gian ẩn tại nút chai. Swap loa nhúng tại suy luận. chất lượng thấp hơn nhưng nhanh hơn. Được sử dụng bởi AutoVC (2019), biến thể VITS-VC.

Neural codec-based cloning (2024+).VALL-E, VALL-E 2, NaturalSpeech 3, VoiceBox xử lý âm thanh như các token riêng biệt từ SoundStream / EnCodec, đào tạo mô hình tự rút hoặc phù hợp dòng chảy lớn hơn các token codec. Chất lượng tương đương với ElevenLabs trên các lời nhắc ngắn.

Một phần đạo đức, không phải là một cái nắp

Watermarking.PerTh (Perth) và SilentCipher (2024) nhúng một ID ~ 16-32 bit vô hình trong âm thanh. tồn tại mã hóa lại, phát trực tuyến và chỉnh sửa phổ biến.

Consent gates."Tôi, Rohit, vào ngày 2026-04-22, cho phép giọng nói này cho mục đích X".

Detection.AASIST, RawNet2 và Wav2Vec2-AASIST đóng vai trò là các máy dò. ASVspoof 2025 Challenge đã công bố EER 0,82,3% cho các máy dò hiện đại chống lại các sản phẩm ElevenLabs, VALL-E 2 và Bark.

Số (2026)

ModelZero-shot?SECS (target sim)WER (intel.)Params
F5-TTSYes0.722.1%335M
XTTS v2Yes0.653.5%470M
OpenVoice v2Yes0.702.8%220M
VALL-E 2Yes0.772.4%370M
VoiceBoxYes0.782.1%330M

SECS > 0,70 thường không thể phân biệt với mục tiêu đối với hầu hết người nghe.

Hãy xây dựng nó

Bước 1: phân hủy với công nhận-sínhết (chỉ dùng mã demo trong main.py)

pythondef clone_pipeline(ref_audio, text, target_embedder, tts_model):
    speaker_emb = target_embedder.encode(ref_audio)
    mel = tts_model(text, speaker=speaker_emb)
    return vocoder(mel)

Khả năng thực hiện là rất đơn giản.tts_modelvà bộ mã hóa loa.

Bước 2: Klon không bắn với F5-TTS

pythonfrom f5_tts.api import F5TTS
tts = F5TTS()
wav = tts.infer(
    ref_file="rohit_5s.wav",
    ref_text="The quick brown fox jumps over the lazy dog.",
    gen_text="Please add milk and bread to my list.",
)

Bản sao tham chiếu phải phù hợp chính xác với âm thanh; sự không phù hợp phá vỡ sự sắp xếp.

Bước 3: chuyển đổi giọng nói với KNN-VC

pythonimport torch
from knnvc import KNNVC  # 2023 model, https://github.com/bshall/knn-vc
vc = KNNVC.load("wavlm-base-plus")
out_wav = vc.convert(source="my_voice.wav", target_pool=["alice_1.wav", "alice_2.wav"])

KNN-VC chạy WavLM để trích xuất các nhúng mỗi khung cho nguồn và mục tiêu pool, sau đó thay thế mỗi khung nguồn với hàng xóm gần nhất trong hồ.

Bước 4: Nhập một dấu nước

pythonfrom silentcipher import SilentCipher
sc = SilentCipher(model="2024-06-01")
payload = b"consent_id:abc123;ts:1745353200"
watermarked = sc.embed(wav, sr=24000, message=payload)
detected = sc.detect(watermarked, sr=24000)   # returns payload bytes

~ 32 bit tải trọng hữu ích, có thể phát hiện sau khi mã hóa lại MP3 và tiếng ồn nhẹ.

Bước 5: Cổng đồng ý

pythondef cloned_inference(text, ref_audio, consent_record):
    assert verify_signature(consent_record), "Signed consent required"
    assert consent_record["speaker_id"] == hash_speaker(ref_audio)
    wav = tts.infer(ref_file=ref_audio, gen_text=text)
    wav = watermark(wav, payload=consent_record["id"])
    return wav

Sử dụng nó

Số 2026:

SituationPick
5-sec zero-shot clone, open-sourceF5-TTS or OpenVoice v2
Commercial production cloningElevenLabs Instant Voice Clone v2.5
Voice conversion (rewriting)KNN-VC or Diff-HierVC
Many-speaker fine-tuneStyleTTS 2 + speaker adapter
Cross-lingual cloningXTTS v2 or VALL-E X
Deepfake detectionWav2Vec2-AASIST

Những bẫy

  • Misaligned reference transcript.F5-TTS và các loại tương tự yêu cầu văn bản tham chiếu phù hợp chính xác với âm thanh tham chiếu, bao gồm dấu chấm.
  • Reverberant reference.Echo giết người.
  • Emotional mismatch.Thuật ngữ "hạnh phúc" tạo ra những bản sao vui vẻ của mọi thứ.
  • Language leakage.Khả năng nhân bản một người nói tiếng Anh sau đó yêu cầu mô hình nói tiếng Pháp thường mang theo giọng nói; sử dụng các mô hình đa ngôn ngữ (XTTS, VALL-E X).
  • No watermark.Không được vận chuyển hợp pháp tại EU từ tháng 8 năm 2026.

Chuyển nó

Cứ như outputs/skill-voice-cloner.mdThiết kế một đường ống khống chế hoặc chuyển đổi với cổng đồng ý + dấu nước + mục tiêu chất lượng.

Các bài tập

  1. Easy.Đi chạycode/main.py. Kiểm tra sự trao đổi nhúng loa bằng cách tính toán cosine giữa hai "những loa" trước và sau khi trao đổi.
  2. Medium.Sử dụng OpenVoice v2 để nhân bản giọng nói của riêng bạn. đo SECS giữa tham chiếu và nhân bản. đo CER thông qua Whisper.
  3. Hard.Lấy dấu nước SilentCipher vào 20 bản sao, chạy chúng qua mã MP3 128 kbps + mã hóa, phát hiện tải trọng hữu ích.

Các điều khoản chính

TermWhat people sayWhat it actually means
Zero-shot clone5 seconds is enoughPretrained model + speaker embedding; no training.
PPGPhonetic posteriorgramPer-frame ASR posteriors used as language-agnostic content rep.
KNN-VCNearest-neighbor conversionReplace each source frame with nearest target-pool frame.
Neural codec TTSVALL-E styleAR model over EnCodec/SoundStream tokens.
WatermarkInaudible signatureBits embedded in audio, survive re-encode.
SECSCloning fidelityCosine between target and clone speaker embeddings.
AASISTDeepfake detectorAnti-spoof model; detects synthesized speech.

Đọc thêm

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.