.. 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.