Phase 06 - Lesson 08
Clonación de Voz y Conversión de Voz
La clonación de voz lee tu texto con la voz de otra persona. La conversión de voz reescribe tu voz en la voz de otra persona conservando lo que dijiste. Ambas dependen de la misma primitiva: separar la identidad del hablante del contenido.
Tipo: Build Lenguajes: Python Requisitos previos: Fase 6 · 06 (Reconocimiento de Hablante), Fase 6 · 07 (TTS) Tiempo: ~75 minutos
El Problema
En 2026, un clip de audio de 5 segundos basta para producir un clon de alta calidad de la voz de cualquier persona con una GPU de consumo. ElevenLabs, F5-TTS, OpenVoice v2 y VoiceBox ofrecen clonación zero-shot o few-shot. La tecnología es una bendición (TTS de accesibilidad, doblaje, voces asistivas) y un arma (llamadas de estafa, deepfakes políticos, robo de propiedad intelectual).
Dos tareas estrechamente relacionadas:
- Clonación de voz (lado del TTS): texto + voz de referencia de 5 segundos → audio en esa voz.
- Conversión de voz (lado del habla): audio de origen (persona A diciendo X) + voz de referencia de la persona B → audio de B diciendo X.
Ambas factorizan una forma de onda en (contenido, hablante, prosodia) y recombinan el contenido de un origen con el hablante de otro.
Restricción clave bajo la cual ahora entregas en 2026: la marca de agua (watermarking) y las compuertas de consentimiento son legalmente obligatorias en la UE (AI Act, exigible desde agosto de 2026) y en California (AB 2905, vigente desde 2025). Tu pipeline debe emitir una marca de agua inaudible y rechazar clones sin consentimiento.
El Concepto
Clonación zero-shot. Pasa un clip de 5 segundos a un modelo entrenado con miles de hablantes. El codificador de hablante mapea el clip a un embedding de hablante; el decodificador de TTS se condiciona a ese embedding más el texto.
Usada por: F5-TTS (2024), YourTTS (2022), XTTS v2 (2024), OpenVoice v2 (2024).
Fine-tuning few-shot. Graba de 5 a 30 minutos de la voz objetivo. Haz LoRA-fine-tune de un modelo base durante una hora. La calidad salta de "aceptable" a "indistinguible". Coqui y ElevenLabs ambos soportan este patrón; la comunidad lo usa con F5-TTS.
Conversión de voz (VC). Dos familias:
- Reconocimiento-síntesis. Ejecuta un modelo tipo ASR para extraer una representación de contenido (por ejemplo, posteriores de fonema suaves, PPGs), luego resintetiza con el embedding del hablante objetivo. Robusta al idioma y al acento. Usada por KNN-VC (2023), Diff-HierVC (2023).
- Desenredo (disentanglement). Entrena un autoencoder que separa contenido, hablante y prosodia en el espacio latente en el cuello de botella. Intercambia el embedding de hablante en la inferencia. Menor calidad pero más rápida. Usada por AutoVC (2019), variantes VITS-VC.
Clonación basada en codec neuronal (2024+). VALL-E, VALL-E 2, NaturalSpeech 3, VoiceBox — tratan el audio como tokens discretos de SoundStream / EnCodec, entrenan un gran modelo autorregresivo o de flow-matching sobre los tokens del codec. Calidad comparable a la de ElevenLabs en prompts cortos.
La parte ética, no un añadido
Marca de agua (watermarking). PerTh (Perth) y SilentCipher (2024) incrustan un ID de ~16-32 bits de forma imperceptible en el audio. Sobrevive a la recodificación, el streaming y las ediciones comunes. Open source listo para producción.
Compuertas de consentimiento. Debe emparejar cada salida clonada con un registro de consentimiento verificable. "Yo, Alex, el 2026-04-22, autorizo esta voz para el propósito X." Almacénalo en un registro a prueba de manipulaciones.
Detección. AASIST, RawNet2 y Wav2Vec2-AASIST se entregan como detectores. El reto ASVspoof 2025 publicó EERs de 0,8–2,3% para detectores de última generación contra salidas de ElevenLabs, VALL-E 2 y Bark.
Cifras (2026)
| Modelo | ¿Zero-shot? | SECS (sim. con objetivo) | WER (inteligib.) | Parámetros |
|---|---|---|---|---|
| F5-TTS | Sí | 0.72 | 2.1% | 335M |
| XTTS v2 | Sí | 0.65 | 3.5% | 470M |
| OpenVoice v2 | Sí | 0.70 | 2.8% | 220M |
| VALL-E 2 | Sí | 0.77 | 2.4% | 370M |
| VoiceBox | Sí | 0.78 | 2.1% | 330M |
SECS > 0.70 es generalmente indistinguible del objetivo para la mayoría de los oyentes.
Constrúyelo
Paso 1: descomponer con reconocimiento-síntesis (demo solo en código en 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)
Conceptualmente simple; la masa de la implementación está en tts_model y el codificador de hablante.
Paso 2: clon zero-shot con 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.",
)
La transcripción de referencia debe coincidir exactamente con el audio; una discrepancia rompe el alineamiento.
Paso 3: conversión de voz con 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"])
KNN-VC ejecuta WavLM para extraer embeddings por cuadro del origen y del conjunto objetivo, luego reemplaza cada cuadro de origen por su vecino más cercano en el conjunto. No paramétrico, funciona con un minuto de habla del objetivo.
Paso 4: incrustar una marca de agua
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, detectable tras recodificación MP3 y ruido leve.
Paso 5: compuerta de consentimiento
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
Úsalo
El stack de 2026:
| Situación | Elige |
|---|---|
| Clon zero-shot de 5 seg, open-source | F5-TTS u OpenVoice v2 |
| Clonación comercial en producción | ElevenLabs Instant Voice Clone v2.5 |
| Conversión de voz (reescritura) | KNN-VC o Diff-HierVC |
| Fine-tune de muchos hablantes | StyleTTS 2 + adaptador de hablante |
| Clonación cross-lingual | XTTS v2 o VALL-E X |
| Detección de deepfake | Wav2Vec2-AASIST |
Trampas
- Transcripción de referencia desalineada. F5-TTS y similares exigen que el texto de referencia coincida exactamente con el audio de referencia, puntuación incluida.
- Referencia reverberante. El eco mata el clon. Graba en seco, con micrófono cercano (close-mic).
- Incompatibilidad emocional. Una referencia de entrenamiento "alegre" produce clones alegres de todo. Haz coincidir la emoción de la referencia con el uso objetivo.
- Fuga de idioma. Clonar a un hablante de inglés y luego pedirle al modelo que hable francés a menudo arrastra el acento de todos modos; usa modelos cross-lingual (XTTS, VALL-E X).
- Sin marca de agua. Imposible de entregar legalmente en la UE a partir de agosto de 2026.
Entrégalo
Guárdalo como outputs/skill-voice-cloner.md. Diseña un pipeline de clonación o conversión con compuerta de consentimiento + marca de agua + objetivo de calidad.
Ejercicios
- Fácil. Ejecuta
code/main.py. Demuestra el intercambio de embedding de hablante calculando el coseno entre dos "hablantes" antes y después del intercambio. - Medio. Usa OpenVoice v2 para clonar tu propia voz. Mide el SECS entre la referencia y el clon. Mide el CER vía Whisper.
- Difícil. Aplica la marca de agua SilentCipher a 20 clones, pásalos por un encode+decode MP3 de 128 kbps, detecta el payload. Reporta la exactitud por bit.
Términos clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| Clon zero-shot | 5 segundos bastan | Modelo preentrenado + embedding de hablante; sin entrenamiento. |
| PPG | Posteriorgrama fonético | Posteriores de ASR por cuadro usados como representación de contenido independiente del idioma. |
| KNN-VC | Conversión por vecino más cercano | Reemplaza cada cuadro de origen por el cuadro más cercano del conjunto objetivo. |
| TTS por codec neuronal | Estilo VALL-E | Modelo AR sobre tokens de EnCodec/SoundStream. |
| Marca de agua | Firma inaudible | Bits incrustados en el audio, sobreviven a la recodificación. |
| SECS | Fidelidad de la clonación | Coseno entre los embeddings de hablante del objetivo y del clon. |
| AASIST | Detector de deepfake | Modelo anti-spoof; detecta habla sintetizada. |
Lectura Adicional
- Chen et al. (2024). F5-TTS — clonación zero-shot SOTA de código abierto.
- Baevski et al. / Microsoft (2023). VALL-E y VALL-E 2 (2024) — TTS por codec neuronal.
- Qian et al. (2019). AutoVC — conversión de voz basada en desenredo.
- Baas, Waubert de Puiseau, Kamper (2023). KNN-VC — VC basada en recuperación.
- SilentCipher (2024) — Audio Watermarking — marca de agua de audio de 32 bits lista para producción.
- ASVspoof 2025 results — carrera armamentista entre detector y sintetizador, actualizado en 2026.