飞书语音条实现方案


目标

让 AI 导师在飞书通道发送原生语音条(非 MP3 文件附件),实现像真人一样的语音交互体验。

核心发现

飞书原生语音条 = OGG + Opus 编码 + asVoice 参数

格式 显示效果 能否播放
MP3 文件 ❌ 文件附件 ✅ 能播放
WAV 文件 ❌ 文件附件 ✅ 能播放
OGG (Opus) + asVoice ✅ 原生语音条 ✅ 能播放

完整管道

文字内容 → edge-tts (晓晓) → MP3 → ffmpeg → OGG (Opus) → message tool (asVoice:true) → 飞书语音条

分步说明

① TTS 生成(edge-tts)

edge-tts --voice zh-CN-XiaoxiaoNeural --text "要说的话" --write-media "output.mp3"

② 转码 OGG(ffmpeg)

ffmpeg -y -i output.mp3 -c:a opus -b:a 32k -strict -2 output.ogg

⚠️ libopus vs opus:家里/单位 ffmpeg 版本不同时编码器名可能不同,实际执行前用 ffmpeg -encoders | findstr opus 确认

③ 发送语音条(message tool)

message tool: action=send, filePath=output.ogg, asVoice=true

关键工具

工具 路径 用途
ffmpeg C:\Program Files\ffmpeg\ffmpeg.exe 转码 WAV/MP3 → OGG
edge-tts edge-tts (Python CLI) 文本→语音(晓晓,自然女声)
whisper whisper (Python CLI) 语音→文字(收听飞书语音条)

可用中文字音

edge-tts --list-voices | Select-String "zh-CN"

当前使用:zh-CN-XiaoxiaoNeural(最自然的普通话女声)

收听用户语音条

用户发送的飞书语音条 → 系统保存为 OGG 文件 → whisper 转写

whisper "输入.ogg" --model tiny --language zh --output_dir "输出目录"

⚠️ whisper 依赖 ffmpeg,必须将 ffmpeg.exe 放在 PATH 中。

文件管理

使用固定文件名 + 覆盖写入,避免临时文件堆积:

D:\temp\guotugongjuxiang\source\_posts\.workbuddy\tts_cache.mp3
D:\temp\guotugongjuxiang\source\_posts\.workbuddy\tts_cache.ogg

已知限制

问题 原因 状态
语音条不显示时长 飞书 API 需传 duration 参数,message 工具不支持 ⚠️ 待解决
whisper 需 ffmpeg whisper 解码 OGG 依赖 ffmpeg ✅ 已安装

测试记录

  • 2026-06-20:首次打通,确认 OGG + asVoice = 原生语音条 ✅
  • 2026-06-20:对比测试 MP3/WAV/OGG 三种格式,仅 OGG 成功 ✅
  • 2026-06-20:晓晓语音质量获认可 ✅

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