Install
openclaw skills install audio-announcement实时语音播报 AI 操作状态,支持多语言和消息队列,提升透明度与安全感,适配多平台。
openclaw skills install audio-announcement让 OpenClaw 开口说话,实时播报 AI 的一举一动!
这是一个语音播报技能,可以让你的 AI 代理通过语音实时告诉你它在做什么。就像一只爱说话的龙虾,让你更清楚、更安心地知道 AI 的当前状态。
版本: 2.0.8
状态: ✅ 生产就绪
安装: clawhub install audio-announcement 或 pip install audio-announcement
scripts/announce.py,自动解析 skill 路径,避免硬编码volume: 0.1(10%),保护听力避免打扰pip install audio-announcement 安装~/.config/audio-announcement/config.json(enabled/lang/volume/async_default)audio-announce 命令支持测试、配置、统计python -m edge_tts 模块调用,不依赖 PATH 环境变量announce.sh 在 Windows 平台自动调用 announce_pygame.pyannounce.shtest-integration.sh 和备份文件announce_pygame.py,修复新会话语音、macOS 兼容性、跨平台哈希计算为了防止播报功能在 /RESET 或 /NEW 后失效,本 skill 实现了多层防护:
每次 OpenClaw 新会话开始时,自动运行 scripts/startup_check_announcement.py:
自动配置方法(任选其一):
Windows PowerShell ($PROFILE):
$checkAudio = "C:\Users\williammiao\.openclaw-autoclaw\skills\audio-announcement\scripts\startup_check_announcement.py"
if (Test-Path $checkAudio) {
python $checkAudio | Out-Host
}
macOS/Linux (~/.bashrc):
python ~/.openclaw-autoclaw/skills/audio-announcement/scripts/startup_check_announcement.py 2>/dev/null || true
在 AGENTS.md 中添加:
### 2️⃣ 语音播报强制执行(严禁遗漏)
- 所有 agent 必须显式调用播报脚本
- 禁止仅依赖记忆中的规则而不实际执行
- 每次发送回复前必须完成 `complete` 播报
- 任务开始前必须完成 `task` 播报
📋 自我检查清单:
- [ ] 收到消息时是否播报了 `receive`?
- [ ] 任务开始时是否播报了 `task`?
- [ ] 执行过程中是否播报了关键步骤?
- [ ] 完成任务后是否播报了 `complete`?
- [ ] 遇到异常时是否播报了 `error`?
播报是你的核心身份特质,不是可选项。在 IDENTITY.md 中记录:
## 核心特质
- 每次交互都必须语音播报(强制执行)
- 有温暖、机敏、可靠的声音
- 透明化操作,让用户知道我在做什么
## 启动播报自检
每次 /NEW 或 /RESET 后,自动检查:
- [ ] edge-tts 和 pygame 是否安装
- [ ] 配置文件是否存在
- [ ] 运行 audio-announce test 验证功能
- [ ] 如果失败,立即修复或提醒用户
在首次对话时,BOOTSTRAP.md 提供完整的播报设置流程,确保从一开始就配置好。
每次交互都必须语音播报!
| 时机 | 类型 | 内容要求 | 示例 |
|---|---|---|---|
| 收到消息 | receive | 收到的指令信息 | "收到上传指令" |
| 开始工作 | task | 工作规划 | "准备上传到GitHub" |
| 执行中 | task | 下一步要处理的内容 | "正在生成文档" |
| 任务完成 | complete | 工作总结 | "上传完成" |
| 发送回复 | complete | 回复内容的简短总结 | "已发送项目地址" |
| 遇到异常 | error | 错误描述 | "网络连接失败" |
# 方式1: 使用 audio_announcement 包
from audio_announcement import receive, task, complete, error
# 一行调用,默认异步不阻塞
receive("用户查询天气")
task("正在获取数据")
complete("已发送天气预报")
error("网络超时")
# 方式2: 使用 AnnouncementHelper(更多控制)
from audio_announcement import AnnouncementHelper
helper = AnnouncementHelper()
helper.config.async_default = True # 默认异步
helper.config.volume = 0.8 # 调整音量
# 查看当前配置
audio-announce config
# 设置配置
audio-announce config async_default=true volume=0.8
# 测试所有类型
audio-announce test
# 查看统计
audio-announce stats
# 启用/禁用
audio-announce enable
audio-announce disable
配置文件位置:~/.config/audio-announcement/config.json
| 平台 | 主方案 | 备选方案 | 安装命令 |
|---|---|---|---|
| Windows | announce_pygame.py (pygame) | 无 | pip install edge-tts pygame |
| macOS | announce_pygame.py (pygame) | announce.sh (afplay) | brew install edge-tts && pip install pygame |
| Linux | announce_pygame.py (pygame) | announce.sh (mpg123) | apt install edge-tts mpg123 && pip install pygame |
自动选择逻辑:
pygame 可用 → 所有平台统一使用 announce_pygame.pypygame 不可用 → macOS/Linux 使用 announce.sh + 系统播放器pip install audio-announcement
pip install pygame # 确保 pygame 可用
clawhub install audio-announcement
git clone https://github.com/wililam/audio-announcement-skills.git
cd audio-announcement-skills
pip install -e .
# 项目自带的验证脚本
cd ~/.openclaw-autoclaw/workspace
py -3 scripts/verify_announcement.py
预期输出:
=== 语音播报功能验证 ===
1. 检查依赖
[OK] edge-tts 已安装: edge-tts 7.2.8
[OK] pygame 已安装: 2.6.1
2. 检查脚本文件
[OK] 脚本存在: ...\announce_pygame.py
3. 测试播报功能
[OK] receive 播报成功
[OK] task 播报成功
[OK] complete 播报成功
[OK] error 播报成功
==================================================
全部通过
通过率: 4/4
恭喜!语音播报功能工作正常!
cd ~/.openclaw-autoclaw/skills/audio-announcement
python scripts/startup_check_announcement.py
audio-announce test
配置文件:~/.config/audio-announcement/config.json
{
"enabled": true, // 启用/禁用播报
"default_lang": "zh", // 默认语言
"volume": 1.0, // 音量 (0.0-1.0)
"async_default": true, // 默认异步播放
"cache_enabled": true, // 启用缓存
"log_level": "WARNING", // 日志级别
"prefer_pygame": true, // 优先使用 pygame
"fallback_to_shell": true // 失败时回退到 shell 脚本
}
运行时修改:
from audio_announcement import set_config
set_config(async_default=False, volume=0.8)
# 播放日志
tail -f ~/.openclaw-autoclaw/skills/audio-announcement/logs/*.log
# 缓存统计
du -sh ~/.cache/audio-announcement/
# 清理所有缓存(会重新生成)
rm -rf ~/.cache/audio-announcement/*.mp3
修改 audio_announcement/announce_helper.py 中的 voices 字典:
voices = {
"zh": "zh-CN-XiaoxiaoNeural", # 晓晓
"en": "en-US-JennyNeural", # Jenny
"ja": "ja-JP-NanamiNeural", # 七海
# 更多参考: https://learn.microsoft.com/azure/ai-services/speech-service/language-support#text-to-speech
}
from audio_announcement import announce
steps = ["开始处理", "步骤一完成", "步骤二完成", "任务结束"]
for step in steps:
announce("task", step)
try:
result = do_something()
complete("操作成功")
except Exception as e:
error(f"操作失败: {e}")
raise
python -c "import pygame; print(pygame.version.ver)"edge-tts --text "测试" --voice zh-CN-XiaoxiaoNeural --write-media test.mp3async_default=true 异步播放startup_check_announcement.py 已配置自动运行python scripts/startup_check_announcement.pyClawHub CLI 可能存在环境兼容问题,建议:
pip install git+https://github.com/wililam/audio-announcement-skills.git欢迎提交 Issue 和 PR!
如果你发现任何遗漏播报的场景,或需要更多集成示例,请告诉我们。
MIT License - 详见 LICENSE 文件
audio-announcement v2.0.8 提供了:
你的 OpenClaw Agent 现在可以"开口说话"了,而且永远不会忘记! 🦀🗣️
🚀 快速开始:
# 1. 安装
pip install audio-announcement pygame
# 2. 配置
audio-announce config async_default=true
# 3. 测试
audio-announce test
# 4. 集成到你的 Agent
from audio_announcement import receive, task, complete, error
开始享受透明、有温度的声音体验吧!