Note
Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers du Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes post-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aperçus exclusifs.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et concours : Participez à des concours et promotions spéciales.
👉 Prêt à explorer et à créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !
18. Chat vocal avec GPT
Cet exemple combine 15. STT (Speech-to-Text), 16. TTS (Text-to-Speech) et un LLM basé sur GPT pour créer un robot entièrement interactif par la voix. PiCrawler écoute un mot de réveil, comprend votre parole, répond avec une conversation générée par l’IA et exécute des actions physiques en fonction du contexte.
Note
Le projet dépend de la classe VoiceActiveCrawler. Assurez-vous que le
fichier voice_active_crawler.py est présent dans le répertoire
examples. Créez également un fichier secret.py avec votre
OPENAI_API_KEY. Si vous n’avez pas encore obtenu de clé API, consultez
17. Connexion aux LLMs en ligne (section OpenAI) pour des instructions étape par étape.
Exécuter le code
cd ~/picrawler/examples
sudo python3 18_voice_active_crawler_gpt.py
Après l’exécution, le robot initialise :
Le moteur STT pour la reconnaissance vocale
Le moteur TTS (Piper) pour les réponses parlées
Le client LLM (GPT-4o-mini) pour la conversation IA
Le détecteur de mot de réveil
Le robot vous salue avec un message de bienvenue. Dites le mot de réveil (par exemple « Hey Buddy ») pour commencer une conversation. Appuyez sur Ctrl+C pour quitter.
Code
Note
Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code
ci-dessous. Mais avant cela, vous devez aller dans le chemin du code source
comme picrawler\examples. Après avoir modifié le code, vous pouvez
l’exécuter directement pour voir l’effet.
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",
)
# Nom du robot
NAME = "Buddy"
# Activer l'image (nécessite un modèle multimodal)
WITH_IMAGE = True
# Définir les modèles et les langues
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
# Activer la saisie clavier
KEYBOARD_ENABLE = True
# Activer le mot de réveil
WAKE_ENABLE = True
WAKE_WORD = ["hey buddy"]
# Réponse au mot de réveil, laisser vide pour désactiver
ANSWER_ON_WAKE = "Hi there"
# Message de bienvenue
WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD)
# Définir les instructions
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()
Comment ça fonctionne ?
Qu’est-ce que VoiceActiveCrawler ?
VoiceActiveCrawlerest une classe de haut niveau qui relie quatre sous-systèmes en un seul pipeline interactif vocal :STT — reconnaissance vocale (écoute votre voix)
LLM — conversation IA (GPT traite ce que vous avez dit)
TTS — synthèse vocale (prononce la réponse de l’IA)
Actions — mouvement physique (le robot exécute les commandes)
Utilisation du mot de réveil comme déclencheur
WAKE_ENABLE = True WAKE_WORD = ["hey buddy"]
Lorsqu’il est activé, le robot écoute en continu le mot de réveil. Ce n’est qu’après l’avoir détecté que le robot commence un tour de conversation. Cela évite de répondre au bruit de fond.
ANSWER_ON_WAKE = "Hi there"
Lorsque le mot de réveil est reconnu, le robot peut optionnellement vous saluer avant d’écouter une commande. Définissez sur une chaîne vide pour désactiver le salut.
Connexion au 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", )
Le module
picrawler.llmfournit un client compatible OpenAI. Stockez votre clé API dans un fichiersecret.pyséparé pour le garder hors du contrôle de version. Voir 17. Connexion aux LLMs en ligne pour savoir comment créer une clé API OpenAI et activer la facturation.gpt-4o-miniest recommandé : il est rapide, abordable et prend en charge les entrées multimodales (texte + images).Vision avec modèles multimodaux
WITH_IMAGE = True
Lorsqu’il est activé, le robot capture une photo de sa caméra et l’envoie avec votre question parlée. Le LLM peut alors « voir » ce que le robot voit — permettant des interactions comme « Quelle est la couleur de l’objet devant toi ? »
Définir la personnalité du robot avec les instructions
INSTRUCTIONS = """ You are a Raspberry Pi-based robotic spider... ## Actions You Can Perform: ["forward", "backward", "turn left", ...] ... """
La chaîne
INSTRUCTIONSest le prompt système envoyé au LLM. Il définit :L’identité et la personnalité du robot (humoristique, vif)
La liste des actions physiques disponibles
Le format de réponse requis : texte d’abord, puis une ligne
ACTIONS:
VoiceActiveCrawleranalyse la ligneACTIONS:de la réponse du LLM et exécute ces actions sur le robot.Solution de repli clavier
KEYBOARD_ENABLE = True
Lorsqu’il est activé, vous pouvez également taper des messages au clavier au lieu de parler. C’est utile dans les environnements bruyants ou lors des tests.
Aperçu du pipeline
La boucle de conversation complète fonctionne comme suit :
Le robot écoute le mot de réveil (ou la saisie clavier).
Une fois déclenché, il enregistre votre parole via STT.
Le texte reconnu est envoyé au LLM, optionnellement avec une image de la caméra.
Le LLM renvoie une réponse texte et une liste d’actions optionnelle.
Le robot prononce la réponse via TTS et exécute les actions.
La boucle revient à l’écoute du prochain mot de réveil.
Trois backends LLM
Le même pipeline
VoiceActiveCrawlerfonctionne avec différents backends LLM. Les leçons suivantes montrent deux alternatives :Caractéristique
GPT (18)
Doubao (19)
Ollama (20)
Exécuté sur
Cloud
Cloud
Local
Clé API
Requise
Requise
Aucune
Langue
Anglais
Chinois
Anglais
Vision
Oui
Oui
Rarement
19. Chat vocal avec Doubao — Même approche cloud, adaptée au chinois avec le modèle Doubao de ByteDance.
20. Chat vocal local avec Ollama — Fonctionne entièrement sur votre propre matériel, sans internet ni clé API requis.