
Negli ultimi giorni ho condotto una piccola sperimentazione con Whisper, il modello di riconoscimento vocale automatico (ASR) open source sviluppato da OpenAI. L’obiettivo era duplice:
- Registrare l’audio del sistema in modo pulito (senza passare dal microfono)
- Valutare le prestazioni e l’accuratezza dei modelli
tiny,baseesmalldi Whisper, cercando una misura sintetica della loro “efficienza complessiva”
Sommario
Cos’è Whisper
Whisper consente di trascrivere il parlato contenuto in un file audio producendo un file di testo.
E’ un sistema di riconoscimento vocale automatico (Automatic Speech Recognition, ASR) rilasciato da OpenAI nel 2022. È basato su una rete neurale di tipo transformer e addestrato su un enorme corpus di dati multilingue e multitask. Whisper è capace di:
- Trascrivere audio parlato in testo
- Tradurre automaticamente parlato in inglese
- Riconoscere e segmentare parlato in presenza di rumore di fondo
Uno degli aspetti più interessanti è che Whisper è open source e facilmente utilizzabile da linea di comando o come libreria Python. Supporta vari modelli di dimensioni crescenti, dal più piccolo (tiny) al più grande (large), con diversi trade-off tra velocità e accuratezza.
Registrazione pulita con PulseAudio e Audacity
Utilizzando pavucontrol su Ubuntu, è possibile registrare direttamente ciò che il sistema riproduce, senza microfoni.
Infatti in prima battuta facevo funzionare il browser che riproduceva il video e registravo l’audio con il microfono del PC: un setup abastanza ingenuo e primitivo.
La chiave è selezionare come sorgente di registrazione:
Monitor of Built-in Audio Analog Stereo
In Audacity basta:
- Premere “Record”
- Selezionare la sorgente giusta da
pavucontrol(scheda “Registrazione”)
Il risultato è una traccia audio digitale e pulita, ideale per testare Whisper.
Trascrizione automatica con Whisper
Whisper supporta modelli di diverse dimensioni, con un compromesso tra:
- Velocità di esecuzione (più piccolo è il modello, più è veloce)
- Qualità della trascrizione (i modelli più grandi sono più accurati)
I comandi utilizzati:
whisper test.wav --language Italian --model small --output_dir small --output_format all
Ripetuto per tiny, base e small, salvando i risultati in sottodirectory dedicate.
Una tabella riassuntiva sui modelli ci mostra le caratteristiche di ognuno:
| Modello | Parametri | Dimensione file | Note |
|---|---|---|---|
| tiny | ≈ 39 milioni | ~75 MB | Velocissimo, ma meno preciso |
| base | ≈ 74 milioni | ~142 MB | Buon compromesso leggero |
| small | ≈ 244 milioni | ~462 MB | Più lento, ma molto più accurato |
La metrica che unisce qualità e prestazioni
Durante il confronto, ho voluto trovare una figura di merito (FdM) che combinasse:
- WER (Word Error Rate): misura quanto il testo trascritto è fedele
- RTF (Real-Time Factor): tempo impiegato per trascrivere diviso la durata dell’audio
La formula che ho adottato è:
\textit{FdM} = \frac{1-\textit{WER}}{1+RTF}Più è alta, migliore è il modello.
Risultati su un frammento audio “sporco”
Test su una frase:
Il sistema SRFC si rivolge a persone con esperienza maturata in contesti di istru…
Risultati:
Modello | Durata audio | Tempo impiegato | RTF | WER | FdM ----------------------------------------------------------------------- tiny | 8.00s | 0.65s | 0.08 | 28.57% | 0.66 base | 8.00s | 0.91s | 0.11 | 35.71% | 0.58 small | 7.00s | 2.37s | 0.34 | 7.14% | 0.69
Osservazioni:
smallè il più accurato, nonostante sia più lentotinysorprende: pur essendo meno preciso, ha una FdM superiore abasebasein questo caso è il peggiore compromesso
Specifiche del sistema di test
Tutti i benchmark sono stati eseguiti su una macchina con le seguenti caratteristiche:
- CPU: Intel® Core™ i5-1235U (12th Gen)
- Architettura: x86_64, 10 core (2 performance + 8 efficient), 12 thread
- Frequenza massima: 4.4 GHz
- RAM: [aggiungere se si vuole, es. 16 GB DDR4]
- Sistema operativo: Ubuntu con Whisper in ambiente
venv(Python 3.12) - Note: elaborazione solo su CPU, senza accelerazione GPU
Considerazioni finali
Questa esperienza mostra innanzitutto che una registrazione pulita è fondamentale per la qualità della trascrizione; l’accuratezza e la velocità possono essere combinate in una metrica utile. Infine la dimensione small del modello è un ottimo compromesso su CPU se si accetta un RTF più alto
Il pensiero di combinare RTF e WER in un indice sintetico è nato spontaneamente durante il lavoro: un piccolo segnale che la mente umana ha ancora margine per affiancare (e talvolta superare) l’intelligenza artificiale.
Note bibliografiche
- RTF (Real-Time Factor) è definito come il rapporto tra il tempo di elaborazione e la durata del file audio. Se un sistema ha un RTF = 1, significa che lavora in tempo reale. Vedi anche:
- Wikipedia – Real-time factor
- Papers che descrivono benchmark ASR, ad esempio [Gopalakrishnan et al., 2020]
- WER (Word Error Rate) è la metrica classica per valutare i sistemi ASR, calcolata come:
- = sostituzioni= cancellazioni= inserzioni= numero di parole nella trascrizione di riferimento
Riferimenti
- Wikipedia – Word Error Rate
- “Automatic Evaluation of Machine Translation Quality Using Longest Common Subsequence and Skip-Bigram Statistics” — Lin and Och (2004)
Scritto con l’aiuto di Whisper, Python e un po’ di caffeina.
Commenti recenti