Phase 06 - Lesson 08

Clonagem de Voz e Conversão de Voz

A clonagem de voz lê o seu texto com a voz de outra pessoa. A conversão de voz reescreve a sua voz na voz de outra pessoa preservando o que você disse. Ambas dependem da mesma primitiva: separar a identidade do locutor do conteúdo.

Tipo: Build Linguagens: Python Pré-requisitos: Fase 6 · 06 (Reconhecimento de Locutor), Fase 6 · 07 (TTS) Tempo: ~75 minutos

O Problema

Em 2026, um clipe de áudio de 5 segundos é suficiente para produzir um clone de alta qualidade da voz de qualquer pessoa com uma GPU de consumidor. ElevenLabs, F5-TTS, OpenVoice v2 e VoiceBox entregam clonagem zero-shot ou few-shot. A tecnologia é uma bênção (TTS de acessibilidade, dublagem, vozes assistivas) e uma arma (golpes por telefone, deepfakes políticos, roubo de propriedade intelectual).

Duas tarefas intimamente relacionadas:

  • Clonagem de voz (lado do TTS): texto + voz de referência de 5 segundos → áudio naquela voz.
  • Conversão de voz (lado da fala): áudio de origem (pessoa A dizendo X) + voz de referência da pessoa B → áudio de B dizendo X.

Ambas fatoram uma forma de onda em (conteúdo, locutor, prosódia) e recombinam o conteúdo de uma origem com o locutor de outra.

Restrição-chave sob a qual você agora entrega em 2026: a marca d'água (watermarking) e os portões de consentimento são legalmente obrigatórios na UE (AI Act, com vigência a partir de agosto de 2026) e na Califórnia (AB 2905, em vigor desde 2025). Seu pipeline deve emitir uma marca d'água inaudível e recusar clones não consentidos.

O Conceito

Clonagem de voz vs conversão: fatorar, trocar o locutor, recombinar

Clonagem zero-shot. Passe um clipe de 5 segundos para um modelo que foi treinado em milhares de locutores. O codificador de locutor mapeia o clipe para um embedding de locutor; o decodificador de TTS se condiciona a esse embedding mais o texto.

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

Fine-tuning few-shot. Grave de 5 a 30 minutos da voz-alvo. Faça LoRA-fine-tune de um modelo base por uma hora. A qualidade salta de "razoável" para "indistinguível". Coqui e ElevenLabs ambos suportam esse padrão; a comunidade o usa com o F5-TTS.

Conversão de voz (VC). Duas famílias:

  • Reconhecimento-síntese. Execute um modelo do tipo ASR para extrair uma representação de conteúdo (por exemplo, posteriores de fonema suaves, PPGs), depois resintetize com o embedding do locutor-alvo. Robusta a idioma e sotaque. Usada por KNN-VC (2023), Diff-HierVC (2023).
  • Desemaranhamento (disentanglement). Treine um autoencoder que separa conteúdo, locutor e prosódia no espaço latente no gargalo. Troque o embedding de locutor na inferência. Qualidade menor, porém mais rápida. Usada por AutoVC (2019), variantes VITS-VC.

Clonagem baseada em codec neural (2024+). VALL-E, VALL-E 2, NaturalSpeech 3, VoiceBox — tratam o áudio como tokens discretos de SoundStream / EnCodec, treinam um grande modelo autorregressivo ou de flow-matching sobre os tokens do codec. Qualidade comparável à do ElevenLabs em prompts curtos.

A parte ética, não um acessório

Marca d'água (watermarking). PerTh (Perth) e SilentCipher (2024) embutem um ID de ~16-32 bits de forma imperceptível no áudio. Sobrevive a recodificação, streaming e edições comuns. Open source pronto para produção.

Portões de consentimento. Deve emparelhar cada saída clonada com um registro de consentimento verificável. "Eu, Alex, em 2026-04-22, autorizo esta voz para a finalidade X." Armazene em um log à prova de adulteração.

Detecção. AASIST, RawNet2 e Wav2Vec2-AASIST são entregues como detectores. O desafio ASVspoof 2025 publicou EERs de 0,8–2,3% para detectores estado-da-arte contra saídas do ElevenLabs, VALL-E 2 e Bark.

Números (2026)

Modelo Zero-shot? SECS (sim. com alvo) WER (inteligib.) Parâmetros
F5-TTS Sim 0.72 2.1% 335M
XTTS v2 Sim 0.65 3.5% 470M
OpenVoice v2 Sim 0.70 2.8% 220M
VALL-E 2 Sim 0.77 2.4% 370M
VoiceBox Sim 0.78 2.1% 330M

SECS > 0.70 é geralmente indistinguível do alvo para a maioria dos ouvintes.

Construa

Passo 1: decompor com reconhecimento-síntese (demo só em código em main.py)

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

Conceitualmente simples; a massa da implementação está em tts_model e no codificador de locutor.

Passo 2: clone zero-shot com F5-TTS

from f5_tts.api import F5TTS
tts = F5TTS()
wav = tts.infer(
    ref_file="sample_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; uma divergência quebra o alinhamento.

Passo 3: conversão de voz com KNN-VC

import 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"])

O KNN-VC roda o WavLM para extrair embeddings por quadro da origem e do conjunto-alvo, depois substitui cada quadro de origem pelo seu vizinho mais próximo no conjunto. Não paramétrico, funciona com um minuto de fala do alvo.

Passo 4: embutir uma marca d'água

from 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 payload, detectável após recodificação MP3 e ruído leve.

Passo 5: portão de consentimento

def 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

Use

A stack de 2026:

Situação Escolha
Clone zero-shot de 5 seg, open-source F5-TTS ou OpenVoice v2
Clonagem comercial em produção ElevenLabs Instant Voice Clone v2.5
Conversão de voz (reescrita) KNN-VC ou Diff-HierVC
Fine-tune de muitos locutores StyleTTS 2 + adaptador de locutor
Clonagem cross-lingual XTTS v2 ou VALL-E X
Detecção de deepfake Wav2Vec2-AASIST

Armadilhas

  • Transcrição de referência desalinhada. F5-TTS e similares exigem que o texto de referência corresponda exatamente ao áudio de referência, pontuação incluída.
  • Referência reverberante. O eco mata o clone. Grave seco, com microfone próximo (close-mic).
  • Incompatibilidade emocional. Uma referência de treino "alegre" produz clones alegres de tudo. Combine a emoção da referência com o uso-alvo.
  • Vazamento de idioma. Clonar um falante de inglês e depois pedir ao modelo que fale francês frequentemente carrega o sotaque mesmo assim; use modelos cross-lingual (XTTS, VALL-E X).
  • Sem marca d'água. Inviável de entregar legalmente na UE a partir de agosto de 2026.

Entregue

Salve como outputs/skill-voice-cloner.md. Projete um pipeline de clonagem ou conversão com portão de consentimento + marca d'água + meta de qualidade.

Exercícios

  1. Fácil. Execute code/main.py. Demonstra a troca de embedding de locutor calculando o cosseno entre dois "locutores" antes e depois da troca.
  2. Médio. Use o OpenVoice v2 para clonar a sua própria voz. Meça o SECS entre a referência e o clone. Meça o CER via Whisper.
  3. Difícil. Aplique a marca d'água SilentCipher a 20 clones, passe-os por um encode+decode MP3 de 128 kbps, detecte o payload. Reporte a acurácia por bit.

Termos-chave

Termo O que as pessoas dizem O que realmente significa
Clone zero-shot 5 segundos bastam Modelo pré-treinado + embedding de locutor; sem treino.
PPG Posteriorgrama fonético Posteriores de ASR por quadro usados como representação de conteúdo independente de idioma.
KNN-VC Conversão por vizinho mais próximo Substitui cada quadro de origem pelo quadro mais próximo do conjunto-alvo.
TTS por codec neural Estilo VALL-E Modelo AR sobre tokens do EnCodec/SoundStream.
Marca d'água Assinatura inaudível Bits embutidos no áudio, sobrevivem à recodificação.
SECS Fidelidade da clonagem Cosseno entre os embeddings de locutor do alvo e do clone.
AASIST Detector de deepfake Modelo anti-spoof; detecta fala sintetizada.

Leitura Complementar

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).