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]
7. Assistente Vocale AI
Questa lezione trasforma il tuo Pironman 5 Pro MAX in un assistente AI incentrato sulla voce. Con il codice fornito, il robot: attende una parola di attivazione, trascrive il tuo parlato con Vosk, lo invia a un LLM di OpenAI, e risponde vocalmente utilizzando Piper TTS.
Prima di Iniziare
Assicurati di avere:
1. Testare Piper — La voce di Piper funziona (ad esempio, puoi riprodurre “Hello”).
Testare Vosk — Vosk STT funziona per la tua lingua (es.
en-us).5. Connessione a LLM Online — La tua chiave API OpenAI salvata in
secret.pycomeOPENAI_API_KEY.Un microfono e un altoparlante funzionanti su Pironman 5 Pro MAX.
Una connessione di rete stabile (LLM è online).
Eseguire l’Esempio
cd ~/sunfounder-voice-assistant/examples/
sudo python3 voice_assistant.py
Configurazione utilizzata dal codice:
LLM: OpenAI (
gpt-4o-mini)TTS: Piper (
en_US-ryan-low)STT: Vosk (
en-us)Parola di attivazione:
"hey buddy"Ingresso da tastiera: abilitato (inserimento manuale opzionale)
Modalità immagine: abilitata (
WITH_IMAGE=True) — richiede un LLM multimodale se decidi di usare immagini in seguito
Cosa succede:
L’assistente mostra un messaggio di benvenuto con la frase di attivazione.
Ascolta “hey buddy”.
Dopo l’attivazione, il tuo parlato viene trascritto (Vosk → testo).
Il testo viene inviato a OpenAI (gpt-4o-mini) per una risposta.
La risposta viene pronunciata con Piper (
en_US-ryan-low).
Esempio di interazione
Tu: Hey Buddy
Robot: Ciao!
Tu: Qual è la capitale dell'Italia?
Robot: La capitale dell'Italia è Roma.
Codice
from sunfounder_voice_assistant.voice_assistant import VoiceAssistant
from sunfounder_voice_assistant.llm import OpenAI as LLM
from secret import OPENAI_API_KEY as API_KEY
llm = LLM(
api_key=API_KEY,
model="gpt-4o-mini",
)
# Nome del robot
NAME = "Buddy"
# Abilita immagine, necessita di un modello linguistico multimodale
WITH_IMAGE = True
# Imposta modelli e lingue
LLM_MODEL = "gpt-4o-mini"
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
# Abilita ingresso da tastiera
KEYBOARD_ENABLE = True
# Abilita parola di attivazione
WAKE_ENABLE = True
WAKE_WORD = [f"hey {NAME.lower()}"]
# Imposta risposta alla parola di attivazione, lasciare vuoto per disabilitare
ANSWER_ON_WAKE = "Ciao"
# Messaggio di benvenuto
WELCOME = f"Ciao, sono {NAME}. Svegliami con: " + ", ".join(WAKE_WORD)
# Imposta istruzioni
INSTRUCTIONS = f"""
Sei un assistente utile, di nome {NAME}.
"""
va = VoiceAssistant(
llm,
name=NAME,
with_image=WITH_IMAGE,
tts_model=TTS_MODEL,
stt_language=STT_LANGUAGE,
keyboard_enable=KEYBOARD_ENABLE,
wake_enable=WAKE_ENABLE,
wake_word=WAKE_WORD,
answer_on_wake=ANSWER_ON_WAKE,
welcome=WELCOME,
instructions=INSTRUCTIONS,
)
if __name__ == "__main__":
va.run()
Spiegazione del codice:
OpenAI(..., model="gpt-4o-mini")— Utilizza OpenAI come unico LLM in questa lezione.NAME/WAKE_WORD— Personalizza l’assistente (“Buddy”, “hey buddy”).WITH_IMAGE=True— Abilita la modalità immagine nell’assistente (nessuna logica di I/O immagine inclusa qui).TTS_MODEL="en_US-ryan-low"— Voce Piper utilizzata per le risposte.STT_LANGUAGE="en-us"— Lingua Vosk per il riconoscimento.KEYBOARD_ENABLE=True— Consente l’inserimento manuale opzionale di testo durante il debug.WELCOME/INSTRUCTIONS— Messaggio di avvio e personalità dell’assistente / prompt di sistema.va.run()— Avvia il ciclo: attivazione → ascolto → LLM → risposta vocale.
Passare ad Altri LLM o TTS
Puoi facilmente passare ad altri LLM, TTS o lingue STT con poche modifiche:
LLM supportati:
OpenAI
Doubao
Deepseek
Gemini
Qwen
Grok
1. Testare Piper — Verifica le lingue supportate da Piper TTS.
Testare Vosk — Verifica le lingue supportate da Vosk STT.
Per passare ad un altro, modifica semplicemente la parte di inizializzazione nel codice:
from sunfounder_voice_assistant.llm import Gemini as LLM
llm = LLM(api_key="YOUR_KEY", model="gemini-pro")
# Imposta modelli e lingue
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
Risoluzione dei Problemi
Il robot non risponde alla parola di attivazione
Verifica che il microfono funzioni.
Assicurati che
WAKE_ENABLE = True.Regola la parola di attivazione in base alla tua pronuncia.
Riduci il rumore di fondo e parla chiaramente.
Nessun suono dall’altoparlante
Verifica il nome del modello TTS (es.
en_US-ryan-low).Testa manualmente Piper o Espeak.
Controlla la connessione dell’altoparlante e il volume.
Errore della chiave API o timeout
Controlla la tua chiave in
secret.py.Assicurati che la tua connessione di rete sia stabile.
Conferma che il modello LLM sia supportato (es.
gpt-4o-mini).
La parola di attivazione funziona ma nessuna risposta
Verifica che la lingua STT corrisponda al tuo accento.
Assicurati che il modello sia stato scaricato correttamente.
Prova a stampare i log di debug per confermare che STT sia in esecuzione.
TTS funziona ma nessuna risposta dall’LLM
Verifica che la chiave API sia valida.
Controlla il nome del modello e le impostazioni LLM.
Assicurati di avere connettività Internet.