Nota
Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. ¡Explora más a fondo Raspberry Pi, Arduino y ESP32 con otros entusiastas!
¿Por qué unirse?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y vistas previas.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy mismo.
18. Chat de voz con GPT
Este ejemplo combina 15. STT (Speech-to-Text), 16. TTS (Text-to-Speech) y un LLM basado en GPT para crear un robot completamente interactivo por voz. PiCrawler escucha una palabra de activación, entiende su habla, responde con conversación generada por IA y realiza acciones físicas según el contexto.
Nota
El proyecto depende de la clase VoiceActiveCrawler. Asegúrese de que
el archivo voice_active_crawler.py esté presente en el directorio
examples. También cree un archivo secret.py con su
OPENAI_API_KEY. Si aún no ha obtenido una clave API, consulte
17. Conexión a LLMs en línea (sección OpenAI) para instrucciones paso a paso.
Ejecutar el código
cd ~/picrawler/examples
sudo python3 18_voice_active_crawler_gpt.py
Después de ejecutar, el robot inicializa:
El motor STT para reconocimiento de voz
El motor TTS (Piper) para respuestas habladas
El cliente LLM (GPT-4o-mini) para conversación IA
El detector de palabra de activación
El robot le saluda con un mensaje de bienvenida. Diga la palabra de activación (ej. «Hey Buddy») para comenzar una conversación. Presione Ctrl+C para salir.
Código
Nota
Puede Modificar/Restablecer/Copiar/Ejecutar/Detener el código siguiente.
Pero antes, debe ir a la ruta del código fuente como picrawler\examples.
Después de modificar el código, puede ejecutarlo directamente para ver el efecto.
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",
)
# Nombre del robot
NAME = "Buddy"
# Activar imagen (requiere modelo multimodal)
WITH_IMAGE = True
# Establecer modelos e idiomas
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
# Activar entrada por teclado
KEYBOARD_ENABLE = True
# Activar palabra de activación
WAKE_ENABLE = True
WAKE_WORD = ["hey buddy"]
# Respuesta a palabra de activación, dejar vacío para desactivar
ANSWER_ON_WAKE = "Hi there"
# Mensaje de bienvenida
WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD)
# Establecer instrucciones
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()
¿Cómo funciona?
¿Qué es VoiceActiveCrawler?
VoiceActiveCrawleres una clase de alto nivel que conecta cuatro subsistemas en un solo pipeline interactivo por voz:STT — reconocimiento de voz (escucha su voz)
LLM — conversación IA (GPT procesa lo que dijo)
TTS — síntesis de voz (pronuncia la respuesta de la IA)
Acciones — movimiento físico (el robot ejecuta comandos)
Usar palabra de activación como disparador
WAKE_ENABLE = True WAKE_WORD = ["hey buddy"]
Cuando está activado, el robot escucha continuamente la palabra de activación. Solo después de detectarla, el robot comienza un turno de conversación. Esto evita responder al ruido de fondo.
ANSWER_ON_WAKE = "Hi there"
Cuando se reconoce la palabra de activación, el robot puede saludarle opcionalmente antes de escuchar un comando. Establezca como cadena vacía para desactivar el saludo.
Conectando el 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", )
El módulo
picrawler.llmproporciona un cliente compatible con OpenAI. Almacene su clave API en un archivosecret.pyseparado para mantenerlo fuera del control de versiones. Consulte 17. Conexión a LLMs en línea para saber cómo crear una clave API de OpenAI y activar la facturación.Se recomienda
gpt-4o-mini: es rápido, asequible y admite entrada multimodal (texto + imágenes).Visión con modelos multimodales
WITH_IMAGE = True
Cuando está activado, el robot captura una foto de su cámara y la envía junto con su pregunta hablada. El LLM puede entonces «ver» lo que el robot ve — permitiendo interacciones como «¿De qué color es el objeto frente a ti?»
Definiendo la personalidad del robot con instrucciones
INSTRUCTIONS = """ You are a Raspberry Pi-based robotic spider... ## Actions You Can Perform: ["forward", "backward", "turn left", ...] ... """
La cadena
INSTRUCTIONSes el prompt del sistema enviado al LLM. Define:La identidad y personalidad del robot (humorístico, animado)
La lista de acciones físicas disponibles
El formato de respuesta requerido: texto primero, luego una línea
ACTIONS:
VoiceActiveCrawleranaliza la líneaACTIONS:de la respuesta del LLM y ejecuta esas acciones en el robot.Alternativa por teclado
KEYBOARD_ENABLE = True
Cuando está activado, también puede escribir mensajes por teclado en lugar de hablar. Esto es útil en entornos ruidosos o durante las pruebas.
Resumen del pipeline
El bucle de conversación completo funciona así:
El robot escucha la palabra de activación (o entrada de teclado).
Una vez activado, graba su voz a través de STT.
El texto reconocido se envía al LLM, opcionalmente con una imagen de la cámara.
El LLM devuelve una respuesta de texto y una lista de acciones opcional.
El robot pronuncia la respuesta por TTS y realiza las acciones.
El bucle vuelve a escuchar la siguiente palabra de activación.
Tres backends LLM
El mismo pipeline
VoiceActiveCrawlerfunciona con diferentes backends LLM. Las siguientes lecciones muestran dos alternativas:Característica
GPT (18)
Doubao (19)
Ollama (20)
Se ejecuta en
Cloud
Cloud
Local
Clave API
Requerida
Requerida
Ninguna
Idioma
Inglés
Chino
Inglés
Visión
Sí
Sí
Raramente
19. Chat de voz con Doubao — El mismo enfoque cloud, adaptado para chino con el modelo Doubao de ByteDance.
20. Chat de voz local con Ollama — Se ejecuta completamente en su propio hardware, sin internet ni clave API necesarios.