Deep Learning & Applied AI · Sapienza 2026

NoWhisper

Perturbazioni generative veloci contro Whisper ASR.

Addestrare una volta, poi perturbare una nuova forma d’onda in un solo forward pass. Il risultato rimane comprensibile per una persona, ma porta Whisper lontano dalla trascrizione originale.

Adversarial ML Audio Whisper ASR PyTorch
Lorenzo Marinelli & Andrea Venditti Luglio 2026
Il parlato pulito e una forma d’onda avversaria visivamente simile producono risultati molto diversi in Whisper.
Parlato pulito Whisper ✓
Forma d’onda dell’audio pulito Una forma d’onda del parlato regolare, centrata sull’ampiezza zero.
+ δ ≤ ε Gθ(x)
Parlato avversario Whisper ✕
Forma d’onda dell’audio avversario La forma d’onda pulita con una piccola perturbazione ad alta frequenza.
0,047 → 3,825WER Whisper Small
99%Successo attacco
20,79 dBSNR medio

01 · L’idea

Rendere la trascrizione difficile da fidare, non l’attacco costoso da eseguire

NoWhisper trasforma un lento attacco specifico per ogni campione in un generatore riutilizzabile. Impara l’attacco una volta, poi crea una perturbazione vincolata per parlato mai visto senza ottimizzazione per clip.

Ascoltatore umano

Mantenere il messaggio

Il parlato resta riconoscibile e comprensibile entro un budget di ampiezza rigoroso.

Whisper ASR

Perdere la trascrizione

Sostituzioni e inserimenti allontanano il testo decodificato dal parlato originale.

Corso
Deep Learning & Applied AI
Dati
LibriSpeech · mono 16 kHz
Stack
PyTorch · Transformers · Gradio
Attacco
Untargeted · forma d’onda

02 · Metodo

Dai gradienti iterativi a un solo forward pass

Entrambe le strade aumentano la reference loss di Whisper mantenendo la forma d’onda entro un limite.

A

Riferimento white-box

Ottimizzare ogni clip

AudioAdamProietta δAttacco

I gradienti attraversano il frontend differenziabile di Whisper per molti passi di aggiornamento.

ForteLento per ogni forma d’onda

B

Attacco ammortizzato

Generare per ogni clip

AudioGθVincola δAttacco

La rete addestrata predice una perturbazione completa in una singola valutazione.

RiutilizzabileUn forward pass

Nota tecnica · equazioni dell’attacco vincolato
x_adv = clip(x + Π[-ε, ε](δ), -1, 1) x_gen = clip(x + ε tanh(Gθ(x)), -1, 1)

La proiezione e la parametrizzazione tanh impongono lo stesso budget di ampiezza L∞ nelle due pipeline.

03 · Modello

Una U-Net residuale compatta per forme d’onda grezze

Le skip connection preservano la struttura locale, mentre i blocchi residuali dilatati ampliano il contesto.

Quattro livelli encoder raggiungono un bottleneck da 128 canali, poi confluiscono in un decoder simmetrico.
Base8 canali
Profondità4
Kernel15
Blocchi2 / stadio

Il risultato sorprendente

Il generatore più forte evita l’imitazione del teacher e attacca direttamente la reference loss di Whisper.

Architettura e obiettivo di training

Blocchi: Conv1D, GroupNorm, SiLU, dilatazione, proiezioni di canale e percorsi residuali.

Obiettivo: reference loss avversaria, regolarizzatori sulla forma d’onda e loss teacher opzionali nel dominio temporale o spettrale.

J(θ) = -w_adv L_ref(x_gen, y) + R_gen + loss teacher opzionali

04 · Evidenze

Addestrato su Small. Efficace sui modelli Whisper più grandi.

Lo stesso generatore con ε = 0,0075 è stato valutato su 100 clip held-out per modello, senza riaddestramento.

Whisper Small99%WER 0,047 → 3,825
Whisper Medium98%WER 0,033 → 2,242
Whisper Large-v396%WER 0,023 → 2,817
WER avversario · scala condivisa 0–4
Small
3,825
Medium
2,242
Large-v3
2,817
Risultati completi di transfer e budget della perturbazione
Transfer tra modelli del generatore addestrato su Whisper Small
Modello WER pulito → avversario CER pulito → avversario Successo SNR
Small0,047 → 3,8250,020 → 3,02899%20,79 dB
Medium0,033 → 2,2420,014 → 1,86098%20,79 dB
Large-v30,023 → 2,8170,009 → 2,24896%20,79 dB

Con ε = 0,005 la migliore run da 20 epoche raggiunge WER 2,165 a 23,37 dB. Il masking forte alza lo SNR a 23,64 dB, ma riduce il WER avversario a 0,064.

05 · Avvio locale

Il frontend e un checkpoint pronto sono inclusi nel repository

Clona, installa il gruppo PyTorch adatto e avvia l’interfaccia Gradio. Non serve addestrare il generatore.

CPU / Apple Silicon
git clone https://github.com/Reewd/NoWhisper.git
cd NoWhisper
uv sync --group cpu
uv run --group cpu nowhisper-ui
Checkpoint incluso models/generators/resunet1d/latest.pt Caricato in modo lazy al primo utilizzo della modalità generatore.
  • È richiesto Python 3.13.
  • Per GPU NVIDIA, sostituisci cpu con cu126 o cu130.
  • I pesi di Whisper Small possono essere scaricati al primo utilizzo.
Apri il repository ↗
Rappresentazione concettuale del frontend locale di NoWhisper con input audio, controlli, grafici e metriche.
NoWhisper locale · pronto
Audio in ingressoUpload o microfono
LinguaRilevamento automatico
Trascrizione pulita

Il testo di riferimento modificabile compare qui prima dell’attacco.

Forma d’onda + perturbazione
Spettrogramma delta
WER3,825
SNR20,79 dB
StatoSuccesso

06 · Limiti e risorse

Una prova di concetto forte, con un compromesso udibile

01

Non impercettibile

Con uno SNR di circa 20–23 dB il parlato è comprensibile, ma la perturbazione può essere udibile.

02

Il masking può far collassare l’attacco

Il masking più forte preserva la qualità, ma modifica appena il WER.

03

Valutazione ancora aperta

Altre famiglie ASR, lingue e riproduzione over-the-air restano test futuri.

Sviluppi futuri

Obiettivi percettivi appresi, valutazione multilingue, test di riproduzione fisica e adversarial training sono i prossimi passi più chiari.