Montando il video di una serata, ci siamo trovati a voler sapere dove applaude il pubblico: per lasciare intatti quei momenti quando si ripulisce l’audio, o semplicemente per avere dei segnaposto sulla timeline. Ascoltare ore di registrazione con il dito sul pulsante non è un grande piano. Qui raccontiamo lo strumento che ne è uscito; le prove su una serata vera arriveranno con un aggiornamento.
Un orecchio già addestrato: YAMNet
YAMNet è un classificatore audio pubblicato da Google e addestrato su AudioSet: riconosce 521 categorie di suoni, tra cui Applause, Clapping (battito di mani), Cheering (grida di approvazione), ma anche risate, musica, campanelli. Non serve addestrare nulla: si ascolta la registrazione a pezzetti e si guarda quali categorie ottengono il punteggio più alto.
Di YAMNet esiste una versione TFLite, pensata per i telefoni: il file del modello pesa 4,1 MB e per farlo girare basta un piccolo runtime (ai-edge-litert, 58 MB una volta installato) al posto dell’intero TensorFlow, che occupa un paio di gigabyte. Lavora solo sulla CPU, senza scheda grafica. L’abbiamo provato su un portatile del 2010 con un Intel Core i3 M 370, un processore così vecchio da non avere le istruzioni AVX che TensorFlow richiede: il modello TFLite parte lo stesso.
Come si usa
Il comando è casoweb rileva-suoni, nel nostro repository casoweb-tools. Il README spiega come installarlo con uv, insieme al suo runtime leggero (l’extra si chiama rileva-suoni). La prima volta il modello si scarica da solo e resta in una cartella di cache; poi basta indicare la registrazione, anche un video:
casoweb rileva-suoni serata.mp4
Accanto all’ingresso compaiono due file:
serata_suoni.srt, un file di sottotitoli con un «sottotitolo» per ogni applauso: importato in Shotcut o Kdenlive, diventa una serie di segnaposto sulla timeline;serata_suoni.tsv, una tabella di testo con inizio, fine e tipo di suono, nello stesso formato usato dacasoweb separa-parlato.
Le categorie da cercare si scelgono con -c, e --elenca-classi mostra tutte le 521 disponibili. Per esempio, applausi e risate:
casoweb rileva-suoni serata.mp4 -c Applause -c Laughter
Come funziona, in breve
ffmpeg decodifica l’audio a 16 kHz, mono. Il modello analizza finestre fisse di poco meno di un secondo (15.600 campioni, 0,975 s), sovrapposte per metà: i tempi trovati hanno quindi una precisione di circa mezzo secondo, più che sufficiente per un segnaposto. Le finestre in cui una delle categorie cercate supera la soglia, se distano meno di un secondo l’una dall’altra, vengono unite in un unico evento.
La lezione sulle soglie
Il punto delicato non è il modello ma la soglia. I punteggi di YAMNet non sono probabilità, e non sono confrontabili tra una categoria e l’altra. Un applauso scrosciante a scena aperta supera facilmente 0,35; quello finale, magari sommesso e misto alle voci di chi si alza, può restare sotto. Per questo il comando parte da una soglia bassa, 0,2, e cerca insieme tre categorie vicine: Applause, Clapping e Cheering.
Se qualche applauso sfugge si abbassa --soglia; se il rilevatore scatta troppo spesso la si alza, oppure si scartano gli eventi troppo brevi con --durata-min. --pausa-max decide invece quanto devono distare due rilevamenti per restare due applausi distinti.
A cosa serve: l’audio da ripulire
Il primo uso è con casoweb pulisci-audio, il comando che ripulisce il parlato di una registrazione in sala (ne abbiamo scritto in Ripulire l’audio di una serata in sala). Gli applausi cadono spesso dentro un tratto riconosciuto come parlato, e gate e compressore li farebbero a pezzi. Passando la tabella degli applausi con --escludi, quei tratti restano come nell’originale:
casoweb rileva-suoni serata.mp4 casoweb pulisci-audio serata.mp4 --segmenti serata_output/serata_segmenti.tsv --escludi serata_suoni.tsv
Limiti
- Il modello sente, non capisce. Un battito di mani a tempo durante una canzone è Clapping quanto un applauso finale: conviene ricontrollare l’elenco, che è un file di testo e si corregge a mano.
- Le soglie dipendono dalla sala e dal microfono. Il valore predefinito è un punto di partenza, non una regola.
- La precisione è di circa mezzo secondo. Per tagliare al fotogramma serve comunque un passaggio a orecchio.
Cosa vorremmo aggiungere
- La prova su una serata vera: quanti applausi c’erano, quanti ne ha trovati il comando, quali ha mancato o inventato, con che soglia e in quanto tempo sul portatile del 2010. Aggiorneremo questo articolo.
- Altre categorie utili al montaggio, come risate o musica, con un esempio concreto.
- Marcatori pronti da importare direttamente nel progetto di Shotcut, oltre al file SRT.
Il codice è in casoweb-tools, con la documentazione di rileva-suoni.
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.
