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:

  1. 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.
  2. 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.
  3. 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

Anti-spoofing versus marca d'água versus proveniência — três camadas de defesa

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

  1. Fácil. Rode code/main.py. Detector de brinquedo + marca d'água de brinquedo para embutir/detectar em áudio sintético.
  2. 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.
  3. 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

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