WebChat通道语音对话实现方案


背景

上岸搭子 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 收到的是哪种格式尚待验证。


文章作者: 摸鱼
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 摸鱼 !
赏
  目录