.. 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 [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
.. _py_voice_doubao:
19. Chat vocal avec Doubao
============================
Cet exemple utilise **Doubao (豆包)**, le grand modèle de langage de ByteDance,
comme cerveau IA de PiCrawler. Le robot parle chinois, répond au mot de réveil
« 旺财 » et prend en charge la vision multimodale — il peut voir et décrire ce
qui se trouve devant lui.
.. note::
Vous avez besoin d'une clé API Doubao de la `Console Volcano Engine Ark
`_. Stockez-la dans ``secret.py``
sous le nom ``DOUBAO_API_KEY``.
**Exécuter le code**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 19_voice_active_crawler_doubao.py
Après l'exécution, le robot initialise le moteur STT, le moteur TTS (voix
chinoise), le client LLM Doubao et le détecteur de mot de réveil. Il vous
salue en chinois — dites **« 旺财 »** pour le réveiller et commencer une
conversation.
**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.
.. 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()
**Comment ça fonctionne ?**
#. Même pipeline, backend différent
Cette leçon utilise le même framework ``VoiceActiveCrawler`` introduit dans
:ref:`py_voice_active_gpt`. Les seuls changements sont le fournisseur LLM
(Doubao au lieu de GPT) et la configuration linguistique. Voir le tableau
comparatif dans :ref:`py_voice_active_gpt` pour un aperçu côte à côte des
trois backends.
#. Connexion à 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`` est le LLM de ByteDance, accessible via l'API Volcano Engine Ark.
Le module ``picrawler.llm`` fournit un wrapper compatible OpenAI, donc
l'interface est la même que dans la leçon GPT — seuls l'importation et le
nom du modèle diffèrent.
Le modèle ``doubao-seed-1-6-250615`` est un modèle multimodal phare prenant
en charge à la fois le texte et les images.
#. Configuration vocale en chinois
.. code-block:: python
TTS_MODEL = "zh_CN-huayan-x_low"
STT_LANGUAGE = "cn"
Pour correspondre au modèle Doubao en chinois, le moteur TTS utilise une
voix féminine chinoise (``huayan``) et le STT est configuré pour reconnaître
la parole en chinois (``"cn"``). Comparez avec les leçons en anglais qui
utilisent ``"en-us"`` et ``"en_US-ryan-low"``.
#. Le mot de réveil « 旺财 »
.. code-block:: python
WAKE_WORD = ["旺财"]
ANSWER_ON_WAKE = "汪汪"
« 旺财 » (Wàng Cái) est un nom traditionnel chinois pour animal de compagnie
signifiant « prospérité ». Lorsque le robot entend ce nom, il répond par
« 汪汪 » (ouaf ouaf) — jouant le rôle d'un fidèle animal robotique.
#. Prompt système en chinois
La chaîne ``INSTRUCTIONS`` est entièrement rédigée en chinois. Elle définit
la même structure que la version anglaise — description du matériel, actions
disponibles, format de réponse et personnalité — mais ajoute une règle
supplémentaire :
.. code-block::
不管如何你都要使用中文回复
(Quoi qu'il arrive, vous devez répondre en chinois.) Cela garantit que le
robot reste dans son rôle de compagnon sinophone.
#. Vision avec Doubao
.. code-block:: python
WITH_IMAGE = True
Contrairement à la plupart des modèles Ollama, Doubao prend en charge
nativement l'entrée multimodale. Lorsque ``WITH_IMAGE`` est activé, le robot
capture une photo et l'envoie à l'API Doubao avec votre question parlée. Le
modèle peut décrire des scènes, identifier des objets et répondre à des
questions visuelles — le tout en chinois.