Speech-to-Text
La conversione del parlato in testo (STT), o riconoscimento automatico del parlato, trascrive l’audio parlato in testo con modelli neurali come Whisper, valutati in base al tasso di errore delle parole.
La conversione da parlato a testo (STT), chiamata anche riconoscimento automatico del parlato (ASR) o semplicemente riconoscimento vocale, converte l’audio parlato in testo scritto. Un modello STT trasforma una forma d’onda in una rappresentazione tempo-frequenza, la mappa in caratteri o sottoparole con una rete neurale e genera una trascrizione, spesso con punteggiatura, timestamp ed etichette che indicano chi ha parlato. È il livello di input degli assistenti vocali, dei sottotitoli in tempo reale, degli appunti delle riunioni e dell’analisi delle chiamate; le trascrizioni alimentano l’elaborazione del linguaggio naturale (NLP) per la ricerca, la sintesi e il rilevamento delle intenzioni. Il preaddestramento auto-supervisionato su audio senza etichette e l’addestramento debolmente supervisionato su larga scala, come quello di Whisper di OpenAI, addestrato su 680.000 ore di audio multilingue proveniente da Internet, hanno reso i sistemi moderni accurati con accenti diversi, rumore di fondo e decine di lingue.
Come funziona la conversione da parlato a testo#
Per prima cosa l'audio viene ricampionato — a 16 kHz per Whisper — e convertito in uno spettrogramma mel-logaritmico, una griglia che rappresenta l'energia per banda di frequenza nel tempo. Whisper calcola 80 bande mel su finestre da 25 millisecondi ogni 10 millisecondi, mentre il modello large-v3 ne usa 128. Un encoder acustico, composto da livelli convoluzionali e Transformer, trasforma questi frame in feature. L'encoder Conformer alterna convoluzioni, che catturano i pattern sonori locali, e autoattenzione, che mette in relazione parti distanti di un enunciato; ha raggiunto tassi di errore sulle parole del 2.1% e del 4.3% sugli insiemi test-clean e test-other di LibriSpeech, senza un modello linguistico esterno. Tre famiglie di decoder trasformano le feature dell'encoder in testo:
- Classificazione temporale connessionista (CTC): predice un carattere, una sotto-parola o uno spazio vuoto per ogni frame audio, quindi raggruppa le ripetizioni e rimuove gli spazi vuoti. Tutti i frame vengono decodificati in parallelo, rendendo CTC veloce.
- Trasduttori: RNN-T e i suoi successori emettono token man mano che arrivano i frame audio, quindi sono adatti al riconoscimento in streaming sui telefoni e ai sottotitoli in tempo reale.
- Encoder-decoder con attenzione: un decoder testuale genera i token uno alla volta, prestando attenzione all'audio codificato. Whisper decodifica in questo modo finestre di 30 secondi e usa token speciali anche per identificare la lingua, predire le marcature temporali o tradurre in inglese.
I sistemi di streaming mostrano trascrizioni parziali che cambiano man mano che arriva altro audio e finalizzano un segmento quando chi parla fa una pausa:
Dopo la decodifica, la normalizzazione inversa del testo riscrive forme pronunciate come «twenty five dollars» come «$25»; la diarizzazione dei parlanti suddivide la trascrizione in base a chi ha parlato e quando.
Dati e modelli di addestramento#
- Preaddestramento auto-supervisionato: wav2vec 2.0 di Meta apprende rappresentazioni del parlato mascherando parti dell'audio senza etichette. Preaddestrato su 53.000 ore di parlato senza etichette e sottoposto a fine-tuning con appena 10 minuti di audio trascritto, ha raggiunto tassi di errore sulle parole del 4.8% e dell'8.2% sugli insiemi di test clean e other di LibriSpeech.
- Supervisione debole su larga scala: Whisper viene addestrato su audio abbinato alle trascrizioni imperfette trovate online. I suoi modelli vanno dai 39 milioni di parametri della versione tiny a 1.55 miliardi della versione large; il modello turbo, una versione ottimizzata di large-v3 con 809 milioni di parametri, è circa 8 volte più veloce di large.
- Allucinazione: i decoder con attenzione si comportano come modelli linguistici, quindi il silenzio o il rumore possono indurli a inventare testi scorrevoli. Lo studio Careless Whisper ha rilevato che circa l'1% delle trascrizioni di Whisper conteneva intere frasi assenti dall'audio, più spesso quando chi parlava faceva pause prolungate.
Conversione da parlato a testo a confronto con i termini correlati#
- Riconoscimento vocale e ASR: sinonimi di conversione da parlato a testo.
- Riconoscimento e diarizzazione dei parlanti: determinano chi sta parlando, anziché cosa è stato detto. La diarizzazione etichetta i segmenti di una registrazione in base al parlante, così una trascrizione di una riunione può attribuire ogni battuta.
- Comprensione del linguaggio naturale (NLU): interpreta il significato della trascrizione, ad esempio l'intento e le entità in «prenota un tavolo per due alle sette».
- Sintesi vocale (TTS): il processo inverso, che genera parlato a partire dal testo. Gli assistenti vocali concatenano STT, un modello linguistico di grandi dimensioni e TTS.
Applicazioni nel mondo reale#
- Sottotitoli e accessibilità: i sottotitoli in tempo reale su telefoni, piattaforme video e software per riunioni rendono il parlato accessibile alle persone sorde e con problemi di udito, oltre che ricercabile da tutti.
- Documentazione clinica: gli assistenti ambientali trascrivono le conversazioni tra medici e pazienti e redigono note cliniche per la cartella clinica elettronica.
- Contact center: le chiamate trascritte alimentano le funzioni di ricerca, i controlli di conformità e l'analisi del sentiment.
- Controllo vocale dei sistemi di visione: un comando trascritto come «trova lo zaino rosso» diventa un prompt testuale per YOLOE-26, la versione a vocabolario aperto di Ultralytics YOLO26, che rileva e segmenta le categorie indicate al momento dell'inferenza, anche se non erano mai presenti nelle classi di addestramento.
Misurare l'accuratezza#
Il tasso di errore sulle parole (WER) conta le sostituzioni, le eliminazioni e le inserzioni necessarie per trasformare la trascrizione in una trascrizione di riferimento, dividendole per il numero di parole di riferimento. Questo codice lo calcola con la distanza di modifica a livello di parola:
import numpy as np
reference = ["turn", "on", "the", "kitchen", "lights"]
hypothesis = ["turn", "of", "the", "kitchen", "light", "please"]
# Edit distance over words: d[i, j] is the cheapest way to turn the first i reference words into the first j hypothesis words
d = np.zeros((len(reference) + 1, len(hypothesis) + 1), dtype=int)
d[:, 0] = np.arange(len(reference) + 1) # deletions
d[0, :] = np.arange(len(hypothesis) + 1) # insertions
for i in range(1, len(reference) + 1):
for j in range(1, len(hypothesis) + 1):
substitution = d[i - 1, j - 1] + (reference[i - 1] != hypothesis[j - 1])
d[i, j] = min(substitution, d[i - 1, j] + 1, d[i, j - 1] + 1)
# Word error rate: (substitutions + deletions + insertions) / words in the reference
print(f"{d[-1, -1]} errors / {len(reference)} words = WER {d[-1, -1] / len(reference):.0%}")Stampa 3 errors / 5 words = WER 60%: «of» al posto di «on» e «light» al posto di «lights» sono sostituzioni, mentre «please» è un'inserzione. Poiché le inserzioni vengono conteggiate, WER può superare il 100%; benchmark come l'Open ASR Leaderboard normalizzano maiuscole e minuscole, punteggiatura e varianti ortografiche prima del calcolo, così «Lights.» e «lights» corrispondono. Per le lingue scritte senza spazi tra le parole, come cinese e giapponese, si usa invece il tasso di errore sui caratteri.










