
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
,base
esmall
di Whisper, cercando una misura sintetica della loro “efficienza complessiva”
Sommario
Cos’è Whisper
Whisper è 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. 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 nota sui modelli:
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 è:
FdM = (1 - WER) / (1 + RTF)
Più è alta, meglio è 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ù lentotiny
sorprende: pur essendo meno preciso, ha una FdM superiore abase
base
in 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