本文记录了将 OpenClaw AI 助理配置为通过飞书和微信自动发送语音回复的完整过程。配置完成后, AI 的文字回复会自动转化为语音,以最接近「语音对话」的方式触达你。
一、背景与问题
在使用 OpenClaw 接入飞书和微信的过程中,老板的真实需求是:「让 AI 直接用语音回复我,不要让我去点音频文件。」
这背后涉及三个核心问题:
二、技术架构总览
OpenClaw 语音回复的技术链条如下:
关键配置路径:
C:\Users\Administrator\.openclaw\ ├── openclaw.json # 主配置 ├── extensions/ │ └── feishu-voice-bridge/ │ └── lib/ │ ├── audio.js # TTS合成 & ffprobe patch │ ├── core-bridge.js # OpenClaw runtime 接口 │ └── voice-reply-dispatcher.js # 语音回复调度逻辑 三、飞书语音回复配置
3.1 核心配置项
3.2 修改配置
路径:C:\Users\Administrator\.openclaw\openclaw.json,位置:plugins → entries → feishu-voice-bridge → config
将 voiceReplyMode 从 "inbound" 改为 "always":
"feishu-voice-bridge":{"enabled":true,"config":{"voiceReplyEnabled":true,"voiceReplyMode":"always","voiceReplyWindowMs":1200000,"voiceReplyCooldownMs":30000,"voiceReplyDebounceMs":2500,"maxReplyChars":280}}四、 ffprobe 兼容问题修复
飞书语音桥接插件需要通过 ffprobe 获取音频文件的时长,以确保飞书客户端显示正确的语音进度条。
问题现象:
feishu-voice synthesize failed: spawnSync ffprobe ENOENT 根因: Windows 环境下, ffprobe 不在 PATH 中,或者找到的 ffmpeg 二进制不兼容 ffprobe 参数格式。
解决方案: 修改 extensions\feishu-voice-bridge\lib\audio.js 中的 probeAudioDurationMs 函数,加入 ffmpeg fallback :
functionprobeAudioDurationMs(filePath){// ① 先尝试 ffprobetry{conststdout=execFileSync("ffprobe",["-v","error","-show_entries","format=duration","-of","default=noprint_wrappers=1:nokey=1",filePath],{stdio:["ignore","pipe","pipe"],timeout:120000});constseconds=Number(String(stdout||"").trim());if(Number.isFinite(seconds)&&seconds>0){returnMath.max(1,Math.round(seconds*1000));}}catch{/* ffprobe 不可用 */}// ② ffmpeg fallback:解析 stderr 中的 Duration 行conststderr=execFileSync("ffmpeg",["-i",filePath],{stdio:["ignore","pipe","pipe"],timeout:120000,windowsHide:true});constmatch=/Duration:\s*(\d{2}):(\d{2}):(\d{2})\.(\d{2})/.exec(String(stderr));if(match){const[,hh,mm,ss,cs]=match;returnMath.max(1,Math.round((Number(hh)*3600+Number(mm)*60+Number(ss)+Number(cs)/100)*1000));}thrownewError("could not determine audio duration");}五、 TTS 提供商切换( Microsoft → MiniMax )
Microsoft Edge TTS 在中国大陆访问存在偶发超时问题,导致语音生成失败率高,体验不稳定。
切换方案: 使用 MiniMax TTS API (已通过 OAuth 接入 OpenClaw ),免费且稳定。
5.1 修改主配置
路径:C:\Users\Administrator\.openclaw\openclaw.json,位置:messages → tts
"messages":{"tts":{"auto":"always","provider":"minimax","providers":{"minimax":{"enabled":true,"voice":"speech-2.8-hd","speed":1.0,"vol":1.0,"pitch":0}}}}5.2 MiniMax TTS 优势对比
六、插件白名单配置
OpenClaw 默认只加载白名单内的插件。如果插件不在 allow 列表中,即使启用了也不会生效。
"plugins":{"allow":["openclaw-weixin","minimax","feishu-voice-bridge","microsoft"]}七、 Gateway 自动重启规则
为保证语音回复的高可用性,任何原因导致的 Gateway 进程崩溃都应该自动重启。
Python 自动重启判断逻辑:
importsubprocessdefcheck_gateway():result=subprocess.run(["netstat","-ano"],capture_output=True,text=True)if"18789"notinresult.stdoutor"LISTENING"notinresult.stdout:subprocess.run(["openclaw","gateway","start"])else:print("Gateway在线")八、飞书 vs 微信:语音播报差异
结论:微信的语音播报体验更接近「语音对话」,飞书则需要点一下播放。
九、完整配置参考
{"plugins":{"allow":["openclaw-weixin","minimax","feishu-voice-bridge","microsoft"],"entries":{"minimax":{"enabled":true},"microsoft":{"enabled":true},"feishu-voice-bridge":{"enabled":true,"config":{"voiceReplyEnabled":true,"voiceReplyMode":"always","voiceReplyWindowMs":1200000,"voiceReplyCooldownMs":30000,"voiceReplyDebounceMs":2500,"maxReplyChars":280,"maxCapturedReplyChars":6000,"voiceReplySummaryEnabled":true,"voiceReplySummaryMaxSentences":3}}}},"messages":{"tts":{"auto":"always","provider":"minimax","providers":{"minimax":{"enabled":true,"voice":"speech-2.8-hd","speed":1.0,"vol":1.0,"pitch":0}}}}}十、避坑清单
看完有收获吗?点个赞,加个关注,让更多人看到!
标签: OpenClaw / 飞书 / 微信 / AI 助手 / TTS / 语音回复/语音交互
夜雨聆风