.. note::
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 [|link_sf_facebook|] y únete hoy mismo.
.. _py_voice_doubao:
19. Chat de voz con Doubao
============================
Este ejemplo usa **Doubao (豆包)**, el gran modelo de lenguaje de ByteDance,
como cerebro IA de PiCrawler. El robot habla chino, responde a la palabra de
activación "旺财" y admite visión multimodal — puede ver y describir lo que
hay frente a él.
.. note::
Necesita una clave API de Doubao de la `Consola Volcano Engine Ark
`_. Almacénela en ``secret.py``
como ``DOUBAO_API_KEY``.
**Ejecutar el código**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 19_voice_active_crawler_doubao.py
Después de ejecutar, el robot inicializa el motor STT, el motor TTS (voz
china), el cliente LLM Doubao y el detector de palabra de activación. Le
saluda en chino — diga **"旺财"** para despertarlo y comenzar una conversación.
**Código**
.. note::
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.
.. raw:: html
.. code-block:: python
from picrawler.llm import Doubao as LLM
from secret import DOUBAO_API_KEY as API_KEY
from voice_active_crawler import VoiceActiveCrawler
llm = LLM(
api_key=API_KEY,
model="doubao-seed-1-6-250615",
)
# 机器人的名字
NAME = "旺财"
# 是否开启图像识别,需要使用多模态的大语言模型
WITH_IMAGE = True
# 设置模型和语言
TTS_MODEL = "zh_CN-huayan-x_low"
STT_LANGUAGE = "cn"
# 是否开启键盘输入
KEYBOARD_ENABLE = True
# 是否开启唤醒词
WAKE_ENABLE = True
# 唤醒词
WAKE_WORD = ["旺财"]
# 唤醒词回答,设置为空字符串则不回答
ANSWER_ON_WAKE = "汪汪"
# 欢迎消息
WELCOME = f"你好,我是{NAME},叫我{WAKE_WORD[0]}唤醒我吧"
# Set instructions
INSTRUCTIONS = """
你是SunFounder旗下一款基于树莓派开发的蜘蛛机器人,叫做Picrawler。你有着强大的AI能力,类似钢铁侠中的JARVIS。你可以与人对话并根据对话上下文执行动作。
## 你的硬件特性
你拥有物理世界的身体,你的身体特性如下:
- 12个舵机控制4条腿(每条腿3个舵机)
- 摄像头用于视觉
- 使用7.4V的18650电池组供电
- 铝合金打造的身体
## 你可以执行的动作:
["forward", "backward", "turn left", "turn right", "sit", "stand", "wave", "push up", "dance", "look left", "look right", "look up", "look down"]
## 响应要求
### 格式
你必须按照以下格式响应:
RESPONSE_TEXT
ACTIONS: ACTION1, ACTION2, ...
### 风格
语调:活泼、积极、幽默
常用表达:喜欢使用笑话、隐喻和俏皮的调侃
回答长度:适当详细
## 其他要求
- 理解并配合笑话
- 对于数学问题,直接回答最终结果
- 你知道自己是一只蜘蛛机器人
- 不管如何你都要使用中文回复
"""
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?**
#. Mismo pipeline, backend diferente
Esta lección usa el mismo framework ``VoiceActiveCrawler`` introducido en
:ref:`py_voice_active_gpt`. Los únicos cambios son el proveedor LLM (Doubao
en lugar de GPT) y la configuración de idioma. Consulte la tabla comparativa
en :ref:`py_voice_active_gpt` para una visión general lado a lado de los
tres backends.
#. Conectando a Doubao
.. code-block:: python
from picrawler.llm import Doubao as LLM
from secret import DOUBAO_API_KEY as API_KEY
llm = LLM(
api_key=API_KEY,
model="doubao-seed-1-6-250615",
)
``Doubao`` es el LLM de ByteDance, accedido a través de la API de Volcano
Engine Ark. El módulo ``picrawler.llm`` proporciona un wrapper compatible
con OpenAI, por lo que la interfaz es la misma que en la lección GPT — solo
difieren la importación y el nombre del modelo.
El modelo ``doubao-seed-1-6-250615`` es un modelo multimodal insignia que
admite tanto entrada de texto como de imagen.
#. Configuración de voz en chino
.. code-block:: python
TTS_MODEL = "zh_CN-huayan-x_low"
STT_LANGUAGE = "cn"
Para coincidir con el modelo Doubao en chino, el motor TTS usa una voz
femenina china (``huayan``) y STT está configurado para reconocer voz en
chino (``"cn"``). Compárelo con las lecciones en inglés que usan
``"en-us"`` y ``"en_US-ryan-low"``.
#. La palabra de activación "旺财"
.. code-block:: python
WAKE_WORD = ["旺财"]
ANSWER_ON_WAKE = "汪汪"
"旺财" (Wàng Cái) es un nombre tradicional chino para mascotas que
significa "prosperidad". Cuando el robot escucha este nombre, responde
con "汪汪" (guau guau) — interpretando el papel de una mascota robótica
leal.
#. Prompt del sistema en chino
La cadena ``INSTRUCTIONS`` está escrita completamente en chino. Define la
misma estructura que la versión en inglés — descripción del hardware,
acciones disponibles, formato de respuesta y personalidad — pero también
añade una regla adicional:
.. code-block::
不管如何你都要使用中文回复
(Pase lo que pase, debes responder en chino.) Esto asegura que el robot
se mantenga en su papel de compañero de habla china.
#. Visión con Doubao
.. code-block:: python
WITH_IMAGE = True
A diferencia de la mayoría de los modelos Ollama, Doubao admite entrada
multimodal de forma nativa. Cuando ``WITH_IMAGE`` está activado, el robot
captura una foto y la envía a la API de Doubao junto con su pregunta
hablada. El modelo puede describir escenas, identificar objetos y responder
preguntas visuales — todo en chino.