Vosk: riconoscimento vocale in tempo reale, fuori ligne
Vosk (alphacep/vosk-api, licenza Apache 2.0, sviluppato da Alpha Cephei) è un motore di riconoscimento vocale offline che trascrive in streaming, con modelli portabili di circa 50 MB per lingua — il modello francese leggero vosk-model-small-fr-0.22 pesa 41 MB. Copre 20 lingue e oltre, funziona su Raspberry Pi o smartphone, ma rimane meno preciso di Whisper su audio difficile: da riservare ai comandi vocali e all'uso in tempo reale.
Vosk è un motore di riconoscimento vocale offline, sviluppato dalla società Alpha Cephei e basato sul motore Kaldi, molto leggero, che funziona in flusso continuo: trascrive mentre si parla, su un processore modesto, con modelli di qualche decina di megabyte. Non compete con i grandi modelli in termini di qualità del testo — fa qualcosa di diverso, e ciò che fa non si sostituisce facilmente. Questa guida illustra i numeri pubblicati dal progetto, inclusi quelli dei due modelli ufficiali in francese, prima di proporre un confronto onesto con Whisper.
#Cosa fa Vosk in modo diverso
I modelli di trascrizione di riferimento elaborano file: ricevono una registrazione completa e restituiscono un testo una volta terminata l'elaborazione. Vosk elabora un flusso: riceve l'audio in piccoli blocchi e produce risultati parziali e poi definitivi man mano che si parla, con una latenza vicina a zero grazie alla sua API di streaming. È la scheda ufficiale del progetto a descrivere questa « zero-latency response with streaming API » come una sua caratteristica centrale, al pari delle dimensioni dei suoi modelli.
Questa differenza di architettura spiega tutto il resto: modelli minuscoli, esecuzione su CPU senza difficoltà, un consumo di memoria compatibile con un Raspberry Pi o un telefono di fascia bassa e una qualità del testo inferiore a quella dei grandi modelli quando l'audio è difficile da interpretare o rumoroso.
#Vosk in cifre, anche per il francese
Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
Il progetto è preciso su ciò che propone. Il repository ufficiale annuncia il riconoscimento per «20+ languages and dialects», binding per Python, Java, Node.js, C#, C++, Rust e Go, e modelli «portabili» da 50 MB, con modelli server nettamente più grandi per chi desidera maggiore precisione. Il tutto è pubblicato sotto licenza Apache 2.0, una garanzia utile quando un progetto deve giustificare le proprie dipendenze open source davanti a un ufficio legale.
| Modello | Dimensione | Tasso di errore per parola (più basso = meglio) | Uso previsto |
|---|---|---|---|
| vosk-model-small-fr-0.22 | 41 MB | 23,95 (Common Voice) · 19,30 (MTEDX) · 27,25 (podcast) | Android, iOS, Raspberry Pi |
| vosk-model-fr-0.22 | 1,4 GB | 14,72 (Common Voice) · 11,64 (MLS) · 13,10 (MTEDX) | Server, maggiore precisione |
La differenza di dimensioni (41 MB contro 1,4 GB) comporta una netta differenza di accuratezza, con un tasso di errore sulle parole che arriva quasi a raddoppiare a seconda del set di test. È il compromesso centrale di Vosk, quantificato anziché presunto: essendo più leggero, commette errori più spesso; questo è accettabile per un comando vocale con un vocabolario ristretto, molto meno per trascrivere un'intervista. Oltre ai modelli ufficiali, il progetto LinTO, portato avanti dall'azienda software francese Linagora, pubblica i propri modelli in francese compatibili con Vosk: un riferimento utile per un progetto francofono che vuole confrontare più fonti prima di scegliere.
Il dettaglio dei quattro set di test (Common Voice, MTEDX, podcast, MLS) va letto anche come un avvertimento metodologico, più che come una semplice classifica da prendere così com'è: il tasso di errore sulle parole può raddoppiare da un set all'altro per uno stesso modello, con valori tra 19,30 su MTEDX e 27,25 sui podcast per la versione leggera. Un audio pulito registrato in studio e una conversazione registrata in presenza di rumore ambientale non danno la stessa qualità, qualunque sia il modello scelto: un motivo in più per fare prove su registrazioni rappresentative dell'uso reale anziché affidarsi a un unico valore medio pubblicato su una scheda prodotto.
#Il tempo reale, la sua vera specialità
- Latenza
- Il testo appare mentre si parla, permettendo così comandi vocali e sottotitoli in tempo reale.
- Risultati parziali
- L'applicazione può reagire prima della fine della frase — indispensabile per una parola di attivazione o un comando breve.
- Ingombro
- 41 MB per il modello francese leggero, contro 1,4 GB per la versione server e spesso diversi gigabyte per un grande modello generalista.
- Vocabolario ristretto
- È possibile limitare il riconoscimento a un elenco di parole attese, il che aumenta notevolmente la precisione sui comandi.
Quest'ultimo punto è sottovalutato. Per controllare un'applicazione con la voce, limitare il vocabolario a cinquanta comandi possibili trasforma un motore di qualità media in un motore molto affidabile, mentre un grande modello generalista continuerà a esitare tra omofoni simili. Lo conferma anche la scheda ufficiale, che cita « reconfigurable vocabulary » tra le funzioni native del motore, accanto all'identificazione del parlante: due capacità che pochi motori di queste dimensioni offrono nativamente.
#Vosk o Whisper
| Criterio | Vosk | Whisper e derivati |
|---|---|---|
| Modalità | Flusso continuo | File |
| Latenza | Quasi nulla (API streaming) | Dopo l'elaborazione |
| Dimensione dei modelli | Da 41 MB a 1,4 GB a seconda della variante | Da centinaia di MB a diversi GB |
| Hardware | Processore poco potente, per sistemi embedded | Processore adeguato, GPU auspicabile |
| Qualità su audio difficile | Corretto, misurato (WER ≈ 15–28 secondo il modello e il test) | Nettamente migliore |
| Punteggiatura e formattazione | Limitato | Buona |
| Da scegliere per | Comandi vocali, uso in tempo reale, sistemi embedded | Trascrizione di riunioni, interviste e video |
Non c'è un vincitore assoluto. Una pipeline ben progettata usa spesso entrambi: Vosk per rilevare un comando o mostrare un feedback immediato mentre l'utente parla, un modello più pesante come Faster-Whisper per produrre la trascrizione definitiva, più fedele, una volta terminata la registrazione e quando sono disponibili le risorse di calcolo.
#I casi in cui vince
- 01Comando vocale di un'applicazioneVocabolario ristretto, latenza minima, nessuna dipendenza dalla rete.
- 02Sottotitolazione in direttaRiunione interna, conferenza, accessibilità in tempo reale.
- 03Hardware embeddedUn nanocomputer o un dispositivo autonomo, dove un modello di grandi dimensioni non entra in memoria: il progetto cita esplicitamente Raspberry Pi e Android come piattaforme di destinazione.
- 04Riservatezza rigorosa senza GPUUn normale computer che non deve inviare nulla e non ha una scheda grafica.
Questi quattro casi hanno un punto in comune: accettano una qualità del testo discreta anziché eccellente, in cambio di una latenza quasi nulla e di un consumo di risorse compatibile con hardware modesto. Quando si impone il vincolo opposto — massima qualità richiesta, latenza tollerabile di qualche secondo — un modello che lavora su file come Faster-Whisper torna a essere la scelta più vantaggiosa. Questo spiega perché i due strumenti, nella maggior parte dei casi, convivono anziché sostituirsi a vicenda in una pipeline vocale completa e ben progettata.
#Formati audio ed esportazione del testo
In pratica, un progetto di trascrizione non si limita mai alla sola chiamata al motore: bisogna leggere il formato di input ricevuto, convertirlo se necessario, poi scrivere il risultato in un formato utilizzabile nelle fasi successive e spesso gestire contemporaneamente più fornitori di registrazioni. La pipeline documentata nello studio citato sopra illustra questo percorso completo: lettura di diversi formati audio comuni (WAV, MP3, FLAC, OGG) tramite moduli Python di pre-elaborazione, riconoscimento tramite il KaldiRecognizer di Vosk, poi esportazione del testo ottenuto in un documento strutturato pronto per essere riletto o archiviato.
Questo dettaglio è importante perché Vosk stesso richiede in ingresso un flusso audio in un formato preciso (PCM mono, generalmente 16 kHz), non un file qualsiasi così com'è. Un progetto che riceve audio eterogeneo — registrazioni da telefoni, esportazioni di videoconferenze, file compressi di varia provenienza — ha quindi quasi sempre bisogno di una fase di conversione prima del motore, ed è spesso lì, anziché nel motore stesso, che si nascondono i bug che peggiorano il riconoscimento senza segnalare un errore esplicito, menzionati più sopra in questa guida.
#Personalizzare il modello linguistico
Sotto il cofano, il riconoscimento vocale di Vosk si basa sul proprio KaldiRecognizer, derivato dal motore di riconoscimento vocale Kaldi: un dettaglio che spiega perché il progetto eredita tutto l'ecosistema di strumenti di personalizzazione di Kaldi anziché ripartire da zero per ogni nuova lingua o settore. Un recente lavoro di ricerca sul tema, basato su una pipeline Vosk personalizzata, ha misurato l'effetto concreto di un modello linguistico adattato: i modelli personalizzati riducono il tasso di errore sulle parole, in particolare in presenza di terminologia tecnica, accenti marcati o audio rumoroso.
Per un progetto francofono, questo apre una strada concreta oltre alla scelta tra il modello leggero e il modello server: inserire un lessico settoriale (nomi di prodotti, gergo interno, acronimi, nomi propri locali) nel modello linguistico anziché limitarsi al vocabolario generico. Richiede più lavoro di un semplice download, ma è la leva che più avvicina un'installazione di Vosk alla qualità di un modello di grandi dimensioni in un ambito specifico, senza pagarne il costo in termini di calcolo né di latenza.
#Implementazione
Il funzionamento è semplice: si installa il pacchetto (pip install vosk in Python), si scarica un modello per la lingua desiderata, si apre un flusso audio, si inviano segmenti al motore, si leggono i risultati parziali e poi quelli definitivi. Sono disponibili binding per Python, Java, Node.js, C#, C++, Rust e Go, e un server WebSocket permette di collegare una pagina web o un'applicazione mobile a un motore che gira sulla tua macchina.
Due aspetti da considerare prima di mettere in produzione: la qualità dipende fortemente dal modello linguistico scelto — la tabella sopra dà un ordine di grandezza, ma fai delle prove sulle tue registrazioni prima di basarti sul modello — e la frequenza di campionamento dell'audio deve corrispondere a quella attesa dal modello, altrimenti la qualità del riconoscimento peggiora senza un messaggio di errore esplicito.
- Assistente vocale locale: la catena completa
- Trascrivi rapidamente i file in locale
- Fai rispondere l'assistente a voce con Kokoro
- Whisper + Ollama: trascrizione al 100% offline
- Fonte: repository ufficiale GitHub di Vosk
- Fonte: catalogo dei modelli Vosk, con dimensioni e punteggi
- Fonte: studio sulla personalizzazione del modello linguistico Vosk
#FAQ
Vosk è gratuito?+
Serve una scheda grafica?+
Vosk o Whisper?+
Funziona in francese e con quale qualità?+
È possibile limitare il vocabolario riconosciuto?+
Quali dimensioni del modello scegliere per un progetto embedded?+
È possibile migliorare la precisione senza cambiare modello?+
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.