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 -l
    

    e sostituisci 1,0 con 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-us per l’inglese, zh-cn per 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.