Una sala, un microfono per il presentatore e gli ospiti, qualche esibizione musicale dal vivo in mezzo, e una videocamera appoggiata dove capitava. Il video è quel che è, ma l'audio si può almeno rendere ascoltabile: meno fruscio, meno rimbombo tra una parola e l'altra, voci tutte allo stesso volume. Qui raccontiamo l'idea e lo strumento che ne è uscito; le prove su una serata vera arriveranno con un aggiornamento.
Il trucco: non trattare tutto allo stesso modo
La prima idea è di passare l'intera registrazione in un programma di riduzione del rumore. È l'idea sbagliata. I filtri antirumore più efficaci sono pensati per la voce: applicati a una canzone ne mangiano le armoniche e il suono diventa «acquoso». Parlato e musica vogliono trattamenti opposti.
La soluzione è lavorare per tratti: prima si stabilisce dove si parla e dove si suona (ne abbiamo già scritto, vedi separare il parlato dalla musica), poi si dà il trattamento forte solo al parlato, lasciando alla musica un semplice taglio dei bassi. Al confine tra i due c’è una breve dissolvenza incrociata (0,4 secondi, regolabile con --dissolvenza), perché il passaggio non si senta.
Due motori
Il comando casoweb pulisci-audio, nel nostro repository casoweb-tools, può lavorare in due modi.
- Filtri di ffmpeg (non serve installare nulla): taglio dei bassi (
highpass), riduzione del rumore (afftdn), un gate che abbassa il volume tra una parola e l’altra, dove restano le code del rimbombo (agate), e un compressore che avvicina il volume dei vari relatori (acompressor). Tre profili: leggero, sala (il predefinito) e forte. - DeepFilterNet, una rete neurale per ridurre il rumore nel parlato, sviluppata da Hendrik Schröter e colleghi e distribuita con licenza libera (MIT o Apache 2.0). Lavora su audio a 48 kHz e il suo programma da riga di comando accetta solo file WAV a quella frequenza: lo strumento si occupa da sé delle conversioni. Dopo la rete, gate e compressore del profilo rifiniscono il risultato.
Come si usa
casoweb separa-parlato serata.mp4 --solo-segmenti casoweb pulisci-audio serata.mp4 --segmenti serata_output/serata_segmenti.tsv --motore deepfilternet --volume-finale
Se l’ingresso è un video, l’immagine viene copiata senza ricodificarla e si sostituisce solo la traccia audio. L’elenco dei tratti (_segmenti.tsv) è un file di testo: se il riconoscimento ha sbagliato un’etichetta si corregge a mano. Con --volume-finale il volume complessivo viene portato a -16 LUFS.
Gli applausi
Un dettaglio che ci ha insegnato la pratica: gli applausi cadono spesso dentro un tratto etichettato come parlato, e gate e compressore li farebbero a pezzi. Per questo il comando accetta un elenco di tratti da lasciare come nell’originale, che si ricava con un altro strumento, casoweb rileva-suoni (vedi la sua documentazione; gli dedicheremo un articolo a parte):
casoweb rileva-suoni serata.mp4 casoweb pulisci-audio serata.mp4 --segmenti serata_output/serata_segmenti.tsv --escludi serata_suoni.tsv
I limiti, senza giri di parole
- Il rimbombo non scompare. Nessun filtro gratuito lo elimina davvero: il gate attenua le code tra le parole, ma una sala riverberante resta una sala riverberante. DeepFilterNet è nato per il rumore; la documentazione del progetto non promette nulla sul riverbero e non l’abbiamo verificato altrove.
- Sulla musica dal vivo non si fanno miracoli. Per questo la lasciamo quasi intatta.
- Il profilo forte pulisce di più ma può dare una voce «artificiale»; lo stesso vale per il post-filtro di DeepFilterNet (
--post-filtro). Conviene sempre provare su un minuto:ffmpeg -ss 600 -t 60 -i serata.mp4 prova.mp4.
Cosa vorremmo aggiungere
- La prova su una serata vera, con un minuto da ascoltare prima e dopo il trattamento: aggiorneremo questo articolo.
- Un confronto tra i due motori, filtri di ffmpeg e DeepFilterNet, sulla stessa registrazione e con i tempi di calcolo su un computer modesto.
- Il riverbero: valutare se esistono strumenti liberi capaci di ridurlo davvero, cosa che oggi il comando non fa.
- Un profilo scelto in automatico, misurando il rumore di fondo nei tratti di silenzio invece di lasciare la scelta a chi usa il comando.
Gli strumenti sono su GitHub: casoweb-tools, con la documentazione di pulisci-audio.
Il lavoro è stato svolto con l'aiuto di Claude, l'assistente di Anthropic, che ha contribuito alla scelta degli strumenti, alla scrittura degli script e alle verifiche sui risultati.
