背景
上岸搭子 AI 导师需要在 WebChat 直聊通道中实现语音对话。之前已有 [[31飞书语音条实现方案]] 解决了飞书通道的语音条方案(OGG + asVoice),但飞书方案在 WebChat 中完全不可用。
本文记录 WebChat 通道的语音方案测试过程与最终结论。
测试过程
| 序号 | 方式 | 工具 | WebChat 效果 | 结论 |
|---|---|---|---|---|
| ① | 直接 TTS | tts 工具 |
❌ 界面无任何显示 | WebChat 不渲染 TTS |
| ② | 消息 asVoice | message send + asVoice:true |
❌ WebChat 不支持 | 仅飞书通道有效 |
| ③ | MP3 文件附件 | MEDIA:文件路径 |
✅ 出现可播放音频条 | 唯一可用方式 |
最终方案
文字内容 → edge-tts (晓晓) → MP3 → MEDIA 附件 → WebChat 播放条
完整步骤
① 用 edge-tts 生成高质量语音
edge-tts --voice zh-CN-XiaoxiaoNeural --text "要说的话" --write-media "tts_cache.mp3"
💡 使用覆盖写入固定文件名
tts_cache.mp3,避免临时文件堆积。
② 用 MEDIA 指令发出
在回复中使用:
MEDIA:D:\temp\guotugongjuxiang\source\_posts\.workbuddy\tts_cache.mp3
系统会自动将其渲染为可播放的音频条。
关键区别:飞书 vs WebChat
| 飞书通道 | WebChat 通道 | |
|---|---|---|
| 语音格式 | OGG (Opus) | MP3 |
| 发送指令 | message send + asVoice |
MEDIA: |
| 显示效果 | 原生语音条 | 音频播放条 |
| TTS 引擎 | edge-tts (晓晓) ✅ | edge-tts (晓晓) ✅ |
| 转码步骤 | MP3 → ffmpeg → OGG | 无需转码 |
WebChat 方案比飞书更简单:省掉了 ffmpeg 转码这一步,edge-tts 生成的 MP3 直接就能用。
依赖工具
| 工具 | 用途 | 安装方式 |
|---|---|---|
| edge-tts | 文字→语音 | pip install edge-tts |
| Python3 | edge-tts 运行环境 | 系统已装 |
已知注意事项
tts工具虽然显示(spoken)结果,但在 WebChat 前端不可见,用户端无任何播放入口- 不要试图用飞书的
asVoice方案套到 WebChat 上,两套通道的渲染机制完全不同 - 固定文件名 + 覆盖写入 = 不会堆垃圾文件
- 晓晓语音(
zh-CN-XiaoxiaoNeural)是目前最自然的女声,对话感最好
扩展思考
如果将来需要收听用户语音(用户发语音条给 AI),WebChat 的机制还需要进一步测试。飞书方案用 whisper 转写 OGG,WebChat 收到的是哪种格式尚待验证。