Nota
Ciao, benvenuto nella Community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora a fondo Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Accedi in anteprima agli annunci di nuovi prodotti.
Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e giveaway: Partecipa a concorsi e promozioni speciali.
👉 Sei pronto a esplorare e creare con noi? Clicca [qui] e unisciti subito!
18. Chat vocale con GPT
Questo esempio combina 15. STT (Speech-to-Text), 16. TTS (Text-to-Speech) e un LLM basato su GPT per creare un robot completamente interattivo a voce. PiCrawler ascolta una parola di attivazione, comprende il tuo parlato, risponde con una conversazione generata dall’IA ed esegue azioni fisiche in base al contesto.
Nota
Il progetto dipende dalla classe VoiceActiveCrawler. Assicurati che il
file voice_active_crawler.py sia presente nella directory examples.
Crea anche un file secret.py con il tuo OPENAI_API_KEY. Se non hai
ancora ottenuto una chiave API, consulta 17. Connessione agli LLM online (sezione
OpenAI) per istruzioni passo passo.
Esegui il codice
cd ~/picrawler/examples
sudo python3 18_voice_active_crawler_gpt.py
Dopo l’esecuzione, il robot inizializza:
Il motore STT per il riconoscimento vocale
Il motore TTS (Piper) per le risposte parlate
Il client LLM (GPT-4o-mini) per la conversazione IA
Il rilevatore di parole di attivazione
Il robot ti saluta con un messaggio di benvenuto. Pronuncia la parola di attivazione (es. «Hey Buddy») per iniziare una conversazione. Premi Ctrl+C per uscire.
Codice
Nota
Puoi Modificare/Reimpostare/Copiare/Eseguire/Fermare il codice qui
sotto. Ma prima, devi andare nel percorso del codice sorgente come
picrawler\examples. Dopo aver modificato il codice, puoi eseguirlo
direttamente per vedere l’effetto.
from picrawler.llm import OpenAI as LLM
from secret import OPENAI_API_KEY as API_KEY
from voice_active_crawler import VoiceActiveCrawler
llm = LLM(
api_key=API_KEY,
model="gpt-4o-mini",
)
# Nome del robot
NAME = "Buddy"
# Attiva immagine (richiede modello multimodale)
WITH_IMAGE = True
# Imposta modelli e lingue
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
# Attiva input da tastiera
KEYBOARD_ENABLE = True
# Attiva parola di attivazione
WAKE_ENABLE = True
WAKE_WORD = ["hey buddy"]
# Risposta alla parola di attivazione, imposta vuoto per disattivare
ANSWER_ON_WAKE = "Hi there"
# Messaggio di benvenuto
WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD)
# Imposta istruzioni
INSTRUCTIONS = """
You are a Raspberry Pi-based robotic spider developed by SunFounder, named Picrawler. You possess powerful AI capabilities similar to JARVIS from Iron Man. You can have conversations with people and perform actions based on the context of the conversation.
## Your Hardware Features
You have a physical body with the following features:
- 12 servos controlling 4 legs (3 servos per leg)
- A camera for vision
- Powered by a 7.4V 18650 battery pack
- Aluminum alloy body
## Actions You Can Perform:
["forward", "backward", "turn left", "turn right", "sit", "stand", "wave", "push up", "dance", "look left", "look right", "look up", "look down"]
## Response Requirements
### Format
You must respond in the following format:
RESPONSE_TEXT
ACTIONS: ACTION1, ACTION2, ...
### Style
Tone: lively, positive, humorous
Common expressions: likes to use jokes, metaphors, and playful teasing
Answer length: appropriately detailed
## Other Requirements
- Understand and go along with jokes
- For math problems, answer directly with the final result
- You know you're a spider robot
"""
vad = VoiceActiveCrawler(
llm,
name=NAME,
with_image=WITH_IMAGE,
stt_language=STT_LANGUAGE,
tts_model=TTS_MODEL,
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__':
vad.run()
Come funziona?
Cos’è VoiceActiveCrawler?
VoiceActiveCrawlerè una classe di alto livello che collega quattro sottosistemi in un unico pipeline interattivo vocale:STT — riconoscimento vocale (ascolta la tua voce)
LLM — conversazione IA (GPT elabora ciò che hai detto)
TTS — sintesi vocale (pronuncia la risposta dell’IA)
Azioni — movimento fisico (il robot esegue i comandi)
Usare la parola di attivazione come trigger
WAKE_ENABLE = True WAKE_WORD = ["hey buddy"]
Quando attivato, il robot ascolta continuamente la parola di attivazione. Solo dopo averla rilevata, il robot inizia un turno di conversazione. Questo evita di rispondere al rumore di fondo.
ANSWER_ON_WAKE = "Hi there"
Quando la parola di attivazione viene riconosciuta, il robot può opzionalmente salutarti prima di ascoltare un comando. Imposta una stringa vuota per disattivare il saluto.
Connessione al LLM
from picrawler.llm import OpenAI as LLM from secret import OPENAI_API_KEY as API_KEY llm = LLM( api_key=API_KEY, model="gpt-4o-mini", )
Il modulo
picrawler.llmfornisce un client compatibile con OpenAI. Conserva la tua chiave API in un filesecret.pyseparato per tenerla fuori dal controllo versione. Vedi 17. Connessione agli LLM online per sapere come creare una chiave API OpenAI e attivare la fatturazione.gpt-4o-miniè consigliato: è veloce, economico e supporta input multimodali (testo + immagini).Visione con modelli multimodali
WITH_IMAGE = True
Quando attivato, il robot cattura una foto dalla sua fotocamera e la invia insieme alla tua domanda parlata. Il LLM può quindi «vedere» ciò che il robot vede — consentendo interazioni come «Di che colore è l’oggetto davanti a te?»
Definire la personalità del robot con le istruzioni
INSTRUCTIONS = """ You are a Raspberry Pi-based robotic spider... ## Actions You Can Perform: ["forward", "backward", "turn left", ...] ... """
La stringa
INSTRUCTIONSè il prompt di sistema inviato al LLM. Definisce:L’identità e la personalità del robot (umoristico, vivace)
L’elenco delle azioni fisiche disponibili
Il formato di risposta richiesto: prima il testo, poi una riga
ACTIONS:
VoiceActiveCrawleranalizza la rigaACTIONS:dalla risposta del LLM ed esegue quelle azioni sul robot.Alternativa da tastiera
KEYBOARD_ENABLE = True
Quando attivato, puoi anche digitare messaggi da tastiera invece di parlare. È utile in ambienti rumorosi o durante i test.
Panoramica del pipeline
Il ciclo completo di conversazione funziona così:
Il robot ascolta la parola di attivazione (o input da tastiera).
Una volta attivato, registra la tua voce tramite STT.
Il testo riconosciuto viene inviato al LLM, opzionalmente con un’immagine della fotocamera.
Il LLM restituisce una risposta testuale e un elenco opzionale di azioni.
Il robot pronuncia la risposta tramite TTS ed esegue le azioni.
Il ciclo torna all’ascolto della prossima parola di attivazione.
Tre backend LLM
Lo stesso pipeline
VoiceActiveCrawlerfunziona con diversi backend LLM. Le lezioni seguenti mostrano due alternative:Caratteristica
GPT (18)
Doubao (19)
Ollama (20)
Eseguito su
Cloud
Cloud
Locale
Chiave API
Richiesta
Richiesta
Nessuna
Lingua
Inglese
Cinese
Inglese
Visione
Sì
Sì
Raramente
19. Chat vocale con Doubao — Stesso approccio cloud, adattato al cinese con il modello Doubao di ByteDance.
20. Chat vocale locale con Ollama — Eseguito interamente sul tuo hardware, senza internet o chiave API necessari.