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()
工作原理
相同管道,不同后端
本课使用与 18. 与 GPT 进行语音对话 相同的
VoiceActiveCrawler框架。 唯一变化是 LLM 提供商(豆包替代 GPT)和语言配置。连接豆包
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是支持文本和图像输入的多模态旗舰模型。中文语音配置
TTS_MODEL = "zh_CN-huayan-x_low" STT_LANGUAGE = "cn"
使用中文女声(
huayan)和中文语音识别("cn")。唤醒词”旺财”
WAKE_WORD = ["旺财"] ANSWER_ON_WAKE = "汪汪"
“旺财”是传统的中文宠物名,寓意”兴旺发财”。机器人听到后回应”汪汪”。
豆包的视觉功能
WITH_IMAGE = True
豆包原生支持多模态输入。启用后机器人拍照并随语音问题一起发送给豆包 API, 模型可以描述场景、识别物体并回答视觉问题——全程中文。