19. 与豆包进行语音对话

本示例使用豆包(Doubao)——字节跳动的大语言模型,作为 PiCrawler 的 AI 大脑。 机器人讲中文,响应唤醒词”旺财”,并支持多模态视觉 —— 可以看到并描述前方的物体。

备注

您需要从`火山引擎 Ark 控制台 <https://console.volcengine.com/ark/>`_ 获取豆包 API 密钥,存储在 secret.py 中,命名为 DOUBAO_API_KEY

运行代码

cd ~/picrawler/examples
sudo python3 19_voice_active_crawler_doubao.py

运行后,机器人初始化 STT 引擎、TTS 引擎(中文语音)、豆包 LLM 客户端和 唤醒词检测器。用中文问候您 — 说“旺财”唤醒它并开始对话。

代码

备注

您可以**修改/重置/复制/运行/停止**以下代码。但在此之前,您需要进入源代码 路径,如 picrawler\examples。修改代码后,可以直接运行以查看效果。

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()

工作原理

  1. 相同管道,不同后端

    本课使用与 18. 与 GPT 进行语音对话 相同的 VoiceActiveCrawler 框架。 唯一变化是 LLM 提供商(豆包替代 GPT)和语言配置。

  2. 连接豆包

    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 是支持文本和图像输入的多模态旗舰模型。

  3. 中文语音配置

    TTS_MODEL = "zh_CN-huayan-x_low"
    STT_LANGUAGE = "cn"
    

    使用中文女声(huayan)和中文语音识别("cn")。

  4. 唤醒词”旺财”

    WAKE_WORD = ["旺财"]
    ANSWER_ON_WAKE = "汪汪"
    

    “旺财”是传统的中文宠物名,寓意”兴旺发财”。机器人听到后回应”汪汪”。

  5. 豆包的视觉功能

    WITH_IMAGE = True
    

    豆包原生支持多模态输入。启用后机器人拍照并随语音问题一起发送给豆包 API, 模型可以描述场景、识别物体并回答视觉问题——全程中文。