.. _py_voice_doubao: 19. 与豆包进行语音对话 =========================== 本示例使用\ **豆包(Doubao)**\ ——字节跳动的大语言模型,作为 PiCrawler 的 AI 大脑。 机器人讲中文,响应唤醒词"旺财",并支持多模态视觉 —— 可以看到并描述前方的物体。 .. note:: 您需要从`火山引擎 Ark 控制台 `_ 获取豆包 API 密钥,存储在 ``secret.py`` 中,命名为 ``DOUBAO_API_KEY``。 **运行代码** .. raw:: html .. code-block:: cd ~/picrawler/examples sudo python3 19_voice_active_crawler_doubao.py 运行后,机器人初始化 STT 引擎、TTS 引擎(中文语音)、豆包 LLM 客户端和 唤醒词检测器。用中文问候您 — 说\ **"旺财"**\ 唤醒它并开始对话。 **代码** .. note:: 您可以**修改/重置/复制/运行/停止**\ 以下代码。但在此之前,您需要进入源代码 路径,如 ``picrawler\examples``。修改代码后,可以直接运行以查看效果。 .. 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() **工作原理** #. 相同管道,不同后端 本课使用与 :ref:`py_voice_active_gpt` 相同的 ``VoiceActiveCrawler`` 框架。 唯一变化是 LLM 提供商(豆包替代 GPT)和语言配置。 #. 连接豆包 .. code-block:: python from picrawler.llm import Doubao as LLM llm = LLM(api_key=API_KEY, model="doubao-seed-1-6-250615") ``Doubao`` 是字节跳动的 LLM,通过火山引擎 Ark API 访问。 ``doubao-seed-1-6-250615`` 是支持文本和图像输入的多模态旗舰模型。 #. 中文语音配置 .. code-block:: python TTS_MODEL = "zh_CN-huayan-x_low" STT_LANGUAGE = "cn" 使用中文女声(``huayan``)和中文语音识别(``"cn"``)。 #. 唤醒词"旺财" .. code-block:: python WAKE_WORD = ["旺财"] ANSWER_ON_WAKE = "汪汪" "旺财"是传统的中文宠物名,寓意"兴旺发财"。机器人听到后回应"汪汪"。 #. 豆包的视觉功能 .. code-block:: python WITH_IMAGE = True 豆包原生支持多模态输入。启用后机器人拍照并随语音问题一起发送给豆包 API, 模型可以描述场景、识别物体并回答视觉问题——全程中文。