Phase 06: Speech & Audio

Clonagem de voz e conversão de voz

A clonagem de voz lê o seu texto na voz de outra pessoa. A conversão de voz reescreve a sua voz para a de outra pessoa, preservando o que você disse. Ambos dependem da mesma decomposição: a identidade do alto-falante separada do conteúdo.

Type: Build

Languages: Python

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

Time: ~75 minutes

O problema

Em 2026, um clip de áudio de 5 segundos é suficiente para produzir um clone de alta qualidade da voz de qualquer pessoa com uma GPU de consumo. ElevenLabs, F5-TTS, OpenVoice v2, VoiceBox todos enviam clonagem de zero-shot ou poucos-shot. A tecnologia é uma bênção (acessibilidade TTS, dobramento, vozes de assistência) e uma arma (chamadas de fraude, deepfakes políticos, roubo de IP).

Duas tarefas estreitamente relacionadas:

  • Voice cloning (TTS-side):texto + 5 segundos de voz de referência → áudio nessa voz.
  • Voice conversion (speech-side):Áudio fonte (pessoal A dizendo X) + voz de referência da pessoa B → áudio de B dizendo X.

Ambos factorizam uma forma de onda em (conteúdo, alto-falantes, prosódias) e recombinam conteúdo de uma fonte com alto-falantes de outra.

Uma restrição chave que agora se submeterá em 2026:watermarking and consent gates are legally required in the EU (AI Act, enforceable August 2026) and in California (AB 2905, effective 2025)O seu gasoduto deve emitir uma marca de água inaudivel e recusar clones não consensuais.

O conceito

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

Zero-shot cloning.Passe um clip de 5 segundos para um modelo que foi treinado em milhares de alto-falantes. O codificador de alto-falantes mapeia o clip para um integrador de alto-falantes; o decodificador TTS condiciona essa incorporação mais texto.

Usado por: F5-TTS (2024), YourTTS (2022), XTTS v2 (2024), OpenVoice v2 (2024).

Few-shot fine-tuning.Gravar 5-30 minutos da voz alvo. LoRA-fine-tune um modelo base por uma hora. Qualidade salta de "okay" para "indistinguible". Coqui e ElevenLabs ambos suportam este padrão; comunidade usa-o com F5-TTS.

Voice conversion (VC).Duas famílias:

  • Recognition-synthesis.Execute um modelo ASR para extrair representação de conteúdo (por exemplo, posteriors fonémicos moles, PPGs), em seguida, resinteze com o incorporamento de alto-falantes alvo. Robusto para a linguagem e o sotaque. usado por KNN-VC (2023), Diff-HierVC (2023).
  • Disentanglement.Treinar um autoencoder que separa conteúdo, alto-falantes e prosódias em espaço latente no gargalo de engarrafamento. Swap alto-falantes incorporando na inferência. Baixa qualidade, mas mais rápido. Usado por AutoVC (2019), variantes VITS-VC.

Neural codec-based cloning (2024+).VALL-E, VALL-E 2, NaturalSpeech 3, VoiceBox tratar o áudio como tokens discretos do SoundStream / EnCodec, treinar um grande modelo autoregressivo ou de correspondência de fluxo sobre tokens de codec. Qualidade comparável a ElevenLabs em instruções curtas.

O pouco ético, não um boleto

Watermarking.PerTh (Perth) e SilentCipher (2024) incorporam um ID de ~16-32 bits imperceptiblemente no áudio. Sobrevive ao re-encodificação, streaming e edições comuns.

Consent gates."Eu, Rohit, em 2026-04-22, autorizo esta voz para propósito X". Guarde num registro de manipulação.

Detection.AASIST, RawNet2 e Wav2Vec2-AASIST navio como detectores. ASVspoof 2025 desafio publicou EERs de 0,82,3% para os detectores de última geração contra ElevenLabs, VALL-E 2, e Bark saídas.

Números (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 é geralmente indistinguível do alvo para a maioria dos ouvintes.

Construí-lo

Passo 1: decompõe com reconhecimento-síntese (só código demo em 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)

Conceptualmente simples; massa de implementação é detts_modele um codificador de alto-falantes.

Passo 2: clone de tiro zero com 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.",
)

A transcrição de referência deve corresponder exatamente ao áudio; a descoincidência rompe o alinhamento.

Passo 3: conversão de voz com 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 executa WavLM para extrair embebimentos por quadro para pool de fonte e alvo, em seguida, substitui cada quadro de origem com o vizinho mais próximo na piscina.

Passo 4: inserir uma marca de água

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 bits de carga útil, detectável após a recodificação MP3 e ruído leve.

Passo 5: Portal de consentimento

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

Usá-lo

A pilha de 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

Encurralagens

  • Misaligned reference transcript.F5-TTS e similares exigem que o texto de referência corresponda exatamente ao áudio de referência, incluindo a pontuação.
  • Reverberant reference.O Echo mata o clone.
  • Emotional mismatch.A referência de treinamento "alegre" produz clones alegres de tudo.
  • Language leakage.Clonar um falante de inglês e depois pedir ao modelo que fale francês geralmente carrega o sotaque de qualquer maneira; use modelos interlinguários (XTTS, VALL-E X).
  • No watermark.Não é legalmente enviável na UE a partir de agosto de 2026.

Envia-o

Salva comooutputs/skill-voice-cloner.md. Desenhar um canal de clonagem ou de conversão com porta de consentimento + marca de água + meta de qualidade.

Exercícios

  1. Easy.Corra .code/main.py. Demonstra a troca de integradores de alto-falantes, calculado o cosino entre dois "falantes" antes e depois da troca.
  2. Medium.Use o OpenVoice v2 para clonar a sua própria voz. Messa o SECS entre referência e clone. Messa o CER através do Whisper.
  3. Hard.Aplique a marca de água SilentCipher em 20 clones, execute-os através de 128 kbps MP3 codificação + decodificação, detectar a carga útil.

Termos-chave

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.

Mais leitura

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.