Install
openclaw skills install @17329971/feishu-voice-note-ffmpeg解决飞书 IM 语音气泡问题——通过 ffmpeg 将 TTS 输出的 mp3 转为飞书支持的 ogg-opus 格式。适用场景:(1) 在飞书机器人的 TTS 回复中需要显示语音气泡而非文件附件, (2) Edge TTS 或其他只支持 mp3/webm 输出的 TTS 引擎需要适配飞书, (3) 自定义 TTS provider 的飞书集成。包含核心原理、ffmpeg 命令、OpenClaw pipeline 集成方案。
openclaw skills install @17329971/feishu-voice-note-ffmpeg在飞书机器人中,语音消息只有以 ogg-opus 格式发送才会显示为可播放的语音气泡。
纯文本附件或其他格式会显示为文件附件,无法内联播放。
适合在以下场景直接套用:
TTS 引擎(Edge TTS)
→ 输出 mp3(Edge TTS 原生仅支持 mp3 和 webm-opus)
→ ffmpeg 转码为 ogg-opus
→ 飞书 API 接收 ogg → 显示语音气泡 ✅
为什么需要转码:
audio-24khz-48kbitrate-mono-mp3(mp3)和 webm-opus 格式ogg-opus 识别为语音消息(msg_type: audio)ffmpeg -i input.mp3 -acodec libopus -ac 1 -ar 16000 output.opus
参数说明:
-acodec libopus — 使用 Opus 编码器-ac 1 — 单声道(语音消息标准)-ar 16000 — 16kHz 采样率(语音质量与文件大小的平衡点)在 TTS provider 的 synthesize 函数中,检测当前通道是否要求语音气泡(通过 target 参数判断),如果是则:
.opus 文件路径给消息发送管线fileType: "opus" 后以 msg_type: "audio" 发送 → 语音气泡TTS provider synthesize()
→ 生成 mp3 临时文件
→ 若 target === "voice-note"(飞书通道自动触发):
→ ffmpeg -i temp.mp3 ... temp.opus
→ 返回 temp.opus 路径
→ 否则直接返回 mp3 路径
转码后的 opus 文件可通过以下方式验证:
# 查看文件格式
ffprobe output.opus
# 确认编码器
ffprobe -show_streams output.opus | findstr codec
# 确认飞书兼容性
# 文件扩展名必须为 .opus
# MIME 类型应为 audio/opus 或 audio/ogg