diff --git a/phoneuse/hermes_skill_wechat_voice/SKILL.md b/phoneuse/hermes_skill_wechat_voice/SKILL.md new file mode 100644 index 0000000..c044087 --- /dev/null +++ b/phoneuse/hermes_skill_wechat_voice/SKILL.md @@ -0,0 +1,78 @@ +--- +name: wechat-voice-sender +description: 通过 LSPosed 内部 API 发送微信语音消息(TTS 一键合成,无 UI 模拟) +version: 1.0 +category: communication +--- + +# WeChat 语音发送 + +## When to Use + +- 用户要求「发语音」、「发条语音」、「语音通知」等 +- 需要让消息听起来更有温度、更像真人说的 +- 发送语音摘要、日报、提醒(比文字更直观) +- 对方不便看屏幕时 + +文字消息用 `send_wechat_message`,语音消息用 `send_wechat_voice_tts`。 + +## 核心工具(直接调用,不要自己实现任何编解码) + +### `send_wechat_voice_tts` — 文字 → 语音,一步到位 + +```python +# 发语音给火星人 +result = mcp.call("send_wechat_voice_tts", { + "to": "yibooo", # 火星人的 wxid + "text": "你好,明天下午三点开会,记得准时。", + "voice": "zh-CN-XiaoxiaoNeural" # 可选,默认女声 +}) +# 返回: {"status": "sent", "duration_ms": 4200, ...} +``` + +**工具内部自动完成**:edge-tts → ffmpeg → SILK V3 编码 → WeChat hook 发送。 +**不要**自己调 edge-tts、ffmpeg、silk-wasm——那是工具的事,不是你的事。 + +### 可用声音 + +| voice 参数 | 风格 | +|---|---| +| `zh-CN-XiaoxiaoNeural`(默认)| 女声,自然亲切 | +| `zh-CN-YunxiNeural` | 男声,自然 | +| `zh-CN-YunyangNeural` | 男声,新闻播报风 | + +### 已知联系人 wxid + +| 名字 | wxid | +|---|---| +| 火星人 | `yibooo` | +| 文件传输助手(测试用)| `filehelper` | + +其他联系人用 `send_wechat_message` 的 `to` 字段(支持昵称模糊搜索),或先查 WeChat DB: + +```python +# 查 wxid +result = mcp.call("query_wechat_contacts", {"query": "联系人昵称"}) +``` + +## 技术说明(了解即可,不需要操心) + +- 走 LSPosed hook(wechathook 模块),调 WeChat 内部 `w11.r0` 工厂 +- DB INSERT 在 r0 构造器内完成,status=4(已送达),不触发 CDN 上传 +- 无 UI 模拟,不影响微信界面,不会被反自动化检测 +- 语音格式:SILK V3(Tencent 变体),存为 `.amr` + +## 错误处理 + +| status | 含义 | 处理 | +|---|---|---| +| `sent` | 成功 | 完成 | +| `error: WeChat not running` | 微信进程未启动 | 稍等重试,工具会自动尝试启动 | +| `error: edge-tts not installed` | 依赖缺失 | `pip install edge-tts` | +| `error: ffmpeg not found` | 依赖缺失 | `pkg install ffmpeg` | +| `error: silk-wasm not found` | 依赖缺失 | `npm install -g silk-wasm` | + +## 安全约束 + +- 不要对陌生联系人发送大量语音(有封号风险) +- 批量发送时每条间隔 ≥ 5s