Nota
Benvenuto nella community Facebook SunFounder Raspberry Pi, Arduino ed ESP32!
Ottieni supporto tecnico e aiuto nella risoluzione dei problemi.
Impara e condividi progetti, suggerimenti e tutorial.
Accedi in anteprima a nuovi prodotti e aggiornamenti.
Goditi sconti esclusivi e omaggi.
👉 Unisciti a noi qui: [here]
3. STT con Vosk (Offline)
Vosk è un motore di riconoscimento vocale (STT) leggero che supporta molte lingue e funziona completamente offline su Raspberry Pi. È necessario solo l’accesso a Internet una volta per scaricare un modello linguistico. Dopodiché, tutto funziona senza connessione di rete.
In questa lezione, installeremo e testeremo Vosk con un modello linguistico a scelta.
Testare Vosk
Eseguire il programma
cd ~/sunfounder-voice-assistant/examples sudo python3 stt_vosk_stream.py
La prima volta che esegui questo codice con una nuova lingua, Vosk:
Scaricherà automaticamente il modello linguistico (di default, la versione piccola).
Stamperà l’elenco delle lingue supportate.
Inizierà ad ascoltare l’input audio attraverso il microfono.
Vedrai qualcosa del genere nel terminale:
vosk-model-small-en-us-0.15.zip: 100%|███████████████████| 39.3M/39.3M [00:05<00:00, 7.85MB/s]
['ar', 'ar-tn', 'ca', 'cn', 'cs', 'de', 'en-gb', 'en-in', 'en-us', 'eo', 'es', 'fa', 'fr', 'gu', 'hi', 'it', 'ja', 'ko', 'kz', 'nl', 'pl', 'pt', 'ru', 'sv', 'te', 'tg', 'tr', 'ua', 'uz', 'vn']
Say something
Questo significa:
Il file del modello (
vosk-model-small-en-us-0.15) è stato scaricato.L’elenco delle lingue supportate è stato stampato.
Il sistema ora è in ascolto — pronuncia qualcosa nel microfono del Pironman 5 Pro MAX, e il testo riconosciuto apparirà nel terminale.
Suggerimenti:
Tieni il microfono a circa 15–30 cm di distanza per una migliore precisione.
Scegli un modello che corrisponda alla tua lingua e al tuo accento.
Utilizza un ambiente silenzioso per migliorare il riconoscimento.
Codice
from sunfounder_voice_assistant.stt import Vosk as STT
stt = STT(language="en-us")
while True:
print("Say something")
for result in stt.listen(stream=True):
if result["done"]:
print(f"final: {result['final']}")
else:
print(f"partial: {result['partial']}", end="\r", flush=True)
Spiegazione del codice:
stt.listen(stream=True)— Avvia il riconoscimento vocale in streaming e produce risultati intermedi mentre parli.result["partial"]— Mostra il testo riconosciuto in tempo reale (aggiornato continuamente).result["final"]— Mostra la frase finale riconosciuta quando smetti di parlare.Il ciclo continua all’infinito, consentendo una trascrizione in tempo reale a mani libere.
Suggerimento: Questa modalità di streaming è perfetta per assistenti vocali, controllo a comando, o trascrizione in diretta.
Risoluzione dei Problemi
Nessun file o directory (durante l’esecuzione di `arecord`)
Potresti aver usato il numero di scheda/dispositivo sbagliato. Esegui:
arecord -le sostituisci
1,0con i numeri mostrati per il tuo microfono USB.Il file registrato non ha suono
Apri il mixer e controlla il volume del microfono:
alsamixer
Premi F6 per selezionare il tuo microfono USB.
Assicurati che Mic/Capture non sia disattivato ([OO] invece di [MM]).
Aumenta il livello con il tasto ↑.
Vosk non riconosce il parlato
Assicurati che il codice lingua corrisponda al tuo modello (es.,
en-usper l’inglese,zh-cnper il cinese).Tieni il microfono a 15–30 cm di distanza ed evita il rumore di fondo.
Parla chiaramente e lentamente.
Latenza elevata / riconoscimento lento
Il download automatico predefinito è un modello piccolo (più veloce, ma meno preciso).
Se è ancora lento, chiudi altri programmi per liberare CPU.