PokeClaw 是一个基于 Raspberry Pi Zero W 搭配 PiSugar WhisPlay 扩展板 构建的语音控制 AI 桌面机器人。按下实体按键即可语音对话,它不仅能通过屏幕实时显示流式回复,还会配以生动的角色动画(默认角色包含卡比与龙虾)以及语音播报。
PokeClaw 脱胎于开源项目 pizero-openclaw,在此 特别感谢原作者 sebastianvkl 的 MIT 开源贡献,为本项目提供了扎实的硬件驱动和通信基础框架!
按下按键 → 录制音频 → 语音转文字 (OpenAI/Gemini/GLM) → 流式输出大模型回复 (OpenClaw) → 实时滚动显示在 1.54寸 LCD 屏幕上
↓
(可选) 文字转语音 (TTS) 播报
- 长按 实体按键,通过 ALSA 驱动录制您的声音
- 松开 按键 — 录音会被发送至 OpenAI, Gemini, 或智谱 GLM 进行极速语音识别 (约需 0.7秒)
- 识别出的文字会发送至您的 OpenClaw 网关 获取大模型回复
- 大模型的回复将像打字机一样 实时流式滚动 显示在屏幕上,并支持像素级的自动换行
- (可选) 支持通过 TTS 当句子完结时同步 语音播报。内置智能预处理系统:能自动将数字转为中文读法、屏蔽掉无法朗读的 Markdown 表格、将列表转为“第一、第二...”序号,并自动剔除加粗等 Markdown 格式符号。同时,屏幕上仍会保留大模型输出的原始文本(含数字和 Markdown 格式),确保视觉和听觉体验完美分离。
- 待机界面会显示时钟、日期、电池电量和 Wi-Fi 状态
- 角色动画会根据当前状态流利地在 听(listening)、思考(thinking) 和 说话(talking) 之间平滑切换。说话时还会根据 TTS 播报音量实时对口型!
设备本身集成了 静音过滤(纯背景底噪不会发给云端),而在云端则支持通过内置的 Session 机制自动记住您的上下文聊天历史。
- Raspberry Pi Zero 2 W (或 Pi Zero W)
- PiSugar WhisPlay 扩展板 — 自带 1.54寸 LCD屏幕 (240x240)、对讲实体按键、LED灯、扬声器和麦克风
- PiSugar 电池 (可选) — 屏幕支持直接读取并显示剩余电量
- Raspberry Pi OS (强烈建议 Bookworm 或以上版本)
- Python 3.11+
- 大模型 API 的密钥(支持 OpenAI, Google Gemini, 智谱 GLM 或 火山引擎豆包 的 STT 与 TTS)
- 部署在网络上可访问的 OpenClaw 路由网关
Important
此项目支持在屏幕上渲染中文回复,因此必须安装中文字体库 (fonts-wqy-microhei) 以防出现乱码。
sudo apt install python3-numpy python3-pil fonts-wqy-microhei
pip install requests python-dotenv此外,请务必根据 PiSugar WhisPlay 官方指南 正确安装和加载屏幕及声卡驱动。
复制附带的配置模板并填入您的 API 密钥:
cp .env.example .env编辑 .env:
export OPENAI_API_KEY="sk-your-openai-api-key"
export AUDIO_PROVIDER="glm" # 语音引擎选项: "openai", "gemini", "glm", 或 "doubao"
export DISPLAY_CHARACTER="lobster" # 默认自带了 "kirby" 卡比和 "lobster" 龙虾两个角色
export PI_USER="pi" # 如果您的树莓派默认用户名不是 pi,请在此修改
export GLM_API_KEY="your-glm-api-key"
export DOUBAO_APPID="your-appid"
export DOUBAO_ACCESS_TOKEN="your-token"
export OPENCLAW_TOKEN="your-openclaw-gateway-token"python3 -m core.main或者使用下方的守护进程脚本一键部署在后台。
部分高级配置依赖环境变量,你可以通过修改根目录的 .env 以及编辑代码库中的 core/config.py 来灵活配置:
| 变量名 | 默认值 | 用途说明 |
|---|---|---|
AUDIO_PROVIDER |
openai |
STT & TTS 服务提供商 (openai, gemini, glm, doubao) |
DOUBAO_APPID |
(如果用 doubao) | 豆包/火山引擎 AppID |
DOUBAO_ACCESS_TOKEN |
(如果用 doubao) | 豆包 Bearer Token |
DOUBAO_VOICE_TYPE |
bv001_streaming |
豆包 TTS 音色代码 |
DISPLAY_CHARACTER |
kirby |
屏幕使用的默认角色动画集合 (kirby, lobster) |
OPENAI_API_KEY |
(如果用 openai) | OpenAI 开发者密钥 |
GEMINI_API_KEY |
(如果用 gemini) | Google Gemini 开发者密钥 |
GLM_API_KEY |
(如果用 glm) | 智谱大模型开发者密钥 |
OPENCLAW_TOKEN |
(必填) | OpenClaw 网关的认证密钥 |
OPENCLAW_BASE_URL |
https://... |
您的私有 OpenClaw 网关地址 |
ENABLE_TTS |
false |
是否开启机器人的语音朗读功能 |
LCD_BACKLIGHT |
70 |
屏幕背光亮度 (0–100) |
SILENCE_RMS_THRESHOLD |
200 |
环境音量低于此时过滤不上报云端 |
为了让机器人的发音更自然,本项目内置了针对中文环境优化的预处理引擎:
- 数字转中文:自动将
129.80转换为一百二十九点八零,按语境读出年份(如2025年读作二零二五年)。 - Markdown 符号清洗:自动剔除加粗 (
**)、斜体 (*)、行内代码 (`)、标题 (#)、链接等格式符号。 - 结构化内容识别:
- 表格屏蔽:检测到大模型输出 Markdown 表格时,自动替换为提示语“此处我整理了表格,可以在屏幕阅读”,避免乱码朗读。
- 列表优化:将无序列表
-自动转为第一,... 第二,...的有序读法。
- 视觉/听觉分离:屏幕会实时显示大模型的原始美化 Markdown 文字,而 TTS 仅播放清洗后的纯净发音。
(更多细节配置请参阅 .env.example 中的详细注释)
- 接入并支持更多底层模型 API
- 开发更多角色动画,并支持更丰富的情感表情支持(开心、生气、伤心等)
MIT License
本项目最初 Fork 自 pizero-openclaw,感谢原开源社区的支持!
