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 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
- Fácil. Execute
code/main.py. Demonstra a troca de embedding de locutor calculando o cosseno entre dois "locutores" antes e depois da troca. - 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.
- 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
- Chen et al. (2024). F5-TTS — clonagem zero-shot SOTA open-source.
- Baevski et al. / Microsoft (2023). VALL-E e VALL-E 2 (2024) — TTS por codec neural.
- Qian et al. (2019). AutoVC — conversão de voz baseada em desemaranhamento.
- Baas, Waubert de Puiseau, Kamper (2023). KNN-VC — VC baseada em recuperação.
- SilentCipher (2024) — Audio Watermarking — marca d'água de áudio de 32 bits pronta para produção.
- ASVspoof 2025 results — corrida armamentista entre detector e sintetizador, atualizado em 2026.