Phase 06 - Lesson 16
Anti-spoofing de Voz e Marca d'Água em Áudio — ASVspoof 5, AudioSeal, WaveVerify
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
A clonagem de voz chegou ao mercado mais rápido que as defesas. Sistemas de voz em produção em 2026 precisam de duas coisas: um detector (AASIST, RawNet2) que classifica fala real versus falsa, e uma marca d'água (AudioSeal) que sobrevive a compressão e edição. Entregue os dois ou não entregue clonagem de voz.
Tipo: Build Linguagens: Python Pré-requisitos: Fase 6 · 06 (Reconhecimento de Locutor), Fase 6 · 08 (Clonagem de Voz) Tempo: ~75 minutos
O Problema
Três defesas relacionadas:
- Anti-spoofing / detecção de deepfake. Dado um trecho de áudio, ele é sintético ou real? Os benchmarks ASVspoof (ASVspoof 2019 → 2021 → 5) são o padrão de referência.
- Marca d'água em áudio. Embutir um sinal imperceptível no áudio gerado que um detector pode extrair depois. AudioSeal (Meta) e WavMark são as opções abertas.
- Proveniência autenticada. Assinatura criptográfica de arquivos de áudio + metadados. C2PA / Content Authenticity Initiative.
A detecção lida com adversários que não cooperam. A marca d'água lida com conformidade — áudio gerado por IA deveria ser identificável como tal. Ambas são obrigatórias em 2026.
O Conceito
ASVspoof 5 — o benchmark de 2024-2025
A maior mudança em relação às edições anteriores:
- Dados crowdsourced (não limpos de estúdio) — condições realistas.
- ~2000 locutores (versus ~100 antes).
- 32 algoritmos de ataque. TTS + conversão de voz + perturbação adversária.
- Duas trilhas. Detecção autônoma por contramedida (CM); ASV robusto a spoofing (SASV) para sistemas biométricos.
Estado da arte no ASVspoof 5: ~7,23% de EER. No ASVspoof 2019 LA mais antigo: 0,42% de EER. Implantação no mundo real: espere de 5 a 10% de EER em trechos in-the-wild.
AASIST e RawNet2 — famílias de modelos de detecção
AASIST (2021, atualizado até 2026). Atenção em grafo sobre características espectrais. SOTA atual na tarefa de contramedida do ASVspoof 5.
RawNet2. Front-end convolucional sobre a forma de onda bruta + backbone TDNN. Baseline mais simples; ainda competitivo com fine-tuning.
NeXt-TDNN + características SSL. Variante de 2025: estilo ECAPA + características WavLM + focal loss. Alcança os 0,42% de EER no ASVspoof 2019 LA.
AudioSeal — a marca d'água padrão de 2024
O AudioSeal da Meta (jan 2024, v0.2 dez 2024). Design principal:
- Localizado. Detecta a marca d'água quadro a quadro na resolução de amostra de 16 kHz (1/16000 s).
- Gerador + detector treinados em conjunto. O gerador aprende a embutir um sinal inaudível; o detector aprende a encontrá-lo apesar das augmentações.
- Robusto. Sobrevive a compressão MP3 / AAC, EQ, alteração de velocidade ±10%, mistura de ruído +10 dB SNR.
- Rápido. O detector roda a 485× tempo real; 1000× mais rápido que o WavMark.
- Capacidade. Payload de 16 bits (pode codificar ID do modelo, timestamp de geração, ID do usuário) embutível em cada locução.
WavMark
O baseline aberto anterior ao AudioSeal. Rede neural invertível, 32 bits/seg. Problemas:
- A força bruta de sincronização é lenta.
- Pode ser removido por ruído gaussiano ou compressão MP3.
- Não é amigável a tempo real.
WaveVerify (julho de 2025)
Aborda as fraquezas do AudioSeal — especificamente manipulações temporais (reversão, velocidade). Usa gerador baseado em FiLM + detector Mixture-of-Experts. Competitivo com o AudioSeal em ataques padrão; lida com edições temporais.
A brecha que os adversários exploram
Do AudioMarkBench: "sob alteração de tom, todas as marcas d'água mostram Bit Recovery Accuracy abaixo de 0,6, indicando remoção quase completa." A alteração de tom é o ataque universal. Nenhuma marca d'água de 2026 é totalmente robusta à modificação agressiva de tom. É por isso que você precisa de detecção (AASIST) ao lado da marca d'água.
C2PA / Content Authenticity Initiative
Não é uma técnica de ML — é um formato de manifesto. Arquivos de áudio carregam metadados assinados criptograficamente sobre ferramenta de criação, autor, data. Audobox / Seamless o utilizam. Bom para proveniência; não faz nada se um ator mal-intencionado recodificar e remover os metadados.
Mãos à Obra
Passo 1: um detector simples baseado em características espectrais (de brinquedo)
def spectral_rolloff(spec, percentile=0.85):
cum = 0
total = sum(spec)
if total == 0:
return 0
threshold = total * percentile
for k, v in enumerate(spec):
cum += v
if cum >= threshold:
return k
return len(spec) - 1
def is_suspicious(audio):
spec = magnitude_spectrum(audio)
rolloff = spectral_rolloff(spec)
return rolloff / len(spec) > 0.92
A fala sintética frequentemente tem energia de alta frequência incomumente plana. Detectores de produção usam AASIST, não isto. Mas a intuição se sustenta.
Passo 2: AudioSeal embutir + detectar
from audioseal import AudioSeal
import torch
generator = AudioSeal.load_generator("audioseal_wm_16bits")
detector = AudioSeal.load_detector("audioseal_detector_16bits")
audio = load_wav("generated.wav", sr=16000)[None, None, :]
payload = torch.tensor([[1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0]])
watermark = generator.get_watermark(audio, sample_rate=16000, message=payload)
watermarked = audio + watermark
result, decoded_payload = detector.detect_watermark(watermarked, sample_rate=16000)
# result: float em [0, 1] — probabilidade de presença da marca d'água
# decoded_payload: 16 bits; compare com o payload embutido
Passo 3: avaliação — EER
def eer(real_scores, fake_scores):
thresholds = sorted(set(real_scores + fake_scores))
best = (1.0, 0.0)
for t in thresholds:
far = sum(1 for s in fake_scores if s >= t) / len(fake_scores)
frr = sum(1 for s in real_scores if s < t) / len(real_scores)
if abs(far - frr) < best[0]:
best = (abs(far - frr), (far + frr) / 2)
return best[1]
Passo 4: a integração de produção
def safe_tts(text, voice, clone_reference=None):
if clone_reference is not None:
verify_consent(user_id, clone_reference)
audio = tts_model.synthesize(text, voice)
audio_with_wm = audioseal_embed(audio, payload=build_payload(user_id, model_id))
manifest = c2pa_sign(audio_with_wm, user_id, timestamp=now())
return audio_with_wm, manifest
Cada geração entrega: (1) marca d'água, (2) manifesto assinado, (3) log de auditoria em conformidade com a política de retenção.
Use na Prática
| Caso de uso | Defesa |
|---|---|
| Entregar TTS / clonagem de voz | Embutir AudioSeal em cada saída (não negociável) |
| Desbloqueio biométrico por voz | Conjunto AASIST + ECAPA; desafio de vivacidade |
| Detecção de fraude em call-center | AASIST em 20% das chamadas recebidas |
| Autenticidade de podcast | Assinatura C2PA no upload, AudioSeal se gerado por IA |
| Pesquisa / treinamento de detectores | Conjuntos train/dev/eval do ASVspoof 5 |
Armadilhas
- Marca d'água sem que o detector jamais rode. Inútil. Coloque o detector no seu CI.
- Detecção sem calibração. AASIST treinado no ASVspoof LA sofre overfitting; a precisão no mundo real cai. Calibre no seu domínio.
- Brecha da alteração de tom. A alteração agressiva de tom remove a maioria das marcas d'água. Tenha um fallback de detecção.
- Remover metadados e re-hospedar. O C2PA é trivialmente contornável por recodificação. Sempre adicione defesa criptográfica + perceptual (marca d'água) juntas.
- Vivacidade como detecção. Peça ao usuário para dizer uma frase aleatória. Previne ataques de replay, mas não a clonagem em tempo real.
Entregue
Salve como outputs/skill-spoof-defender.md. Escolha o modelo de detecção, a marca d'água, o manifesto de proveniência e o playbook operacional para uma implantação de geração de voz.
Exercícios
- Fácil. Rode
code/main.py. Detector de brinquedo + marca d'água de brinquedo para embutir/detectar em áudio sintético. - Médio. Instale o
audioseal, embuta um payload de 16 bits em uma saída de TTS, decodifique novamente. Corrompa o áudio com ruído e meça a Bit Recovery Accuracy. - Difícil. Faça fine-tuning de um RawNet2 ou AASIST no ASVspoof 2019 LA. Meça o EER. Teste em um conjunto reservado de trechos gerados pelo F5-TTS — veja como a detecção OOD se degrada.
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| ASVspoof | O benchmark | Desafio bienal; 2024 = ASVspoof 5. |
| CM (contramedida) | Detector | Classificador: fala real versus sintética / convertida. |
| SASV | Verificação de locutor + CM | Detecção biométrica + de spoofing integrada. |
| AudioSeal | Marca d'água da Meta | Localizada, payload de 16 bits, 485× mais rápida que o WavMark. |
| Bit Recovery Accuracy | Sobrevivência da marca d'água | Fração dos bits do payload recuperados após o ataque. |
| C2PA | Manifesto de proveniência | Metadados criptográficos sobre criação / autoria. |
| AASIST | Família de detectores | Anti-spoofing SOTA baseado em atenção em grafo. |
Leitura Complementar
- Todisco et al. (2024). ASVspoof 5 — o benchmark atual.
- Defossez et al. (2024). AudioSeal — a marca d'água padrão.
- Chen et al. (2025). WaveVerify — detector MoE para ataques temporais.
- Jung et al. (2022). AASIST — o backbone de detecção SOTA.
- AudioMarkBench (2024) — avaliação de robustez.
- Especificação C2PA — formato de manifesto de proveniência.