把 AI 的文字回复一键转成语音消息发到飞书群:每条回复卡片底部有「🔊 语音总结」按钮,点一下,机器人把这条回复精简成口语、合成语音气泡发到当前话题。

行为要点

  • 按需触发:默认不自动生成,想听才点,避免每条回复都附带一大段语音。
  • 先精简、再合成:点击后模型先把原回复压成几句口语(去掉代码、路径、链接等不适合朗读的内容),听到的是「讲人话」的总结,不是照念原文。
  • 有权限门:只有对该机器人有「对话 / 操作」权限的成员能点,其他人点击收到「需要授权」提示。
  • 每条只生成一次:多人点击也不会刷屏。

语音是可选高级功能:需先配置一个 TTS 引擎,未配置时回复卡片不显示该按钮。

配置引擎

用独立命令 botmux voice 交互式配置(特意不与 botmux setup 混在一起)。配置写入全局 ~/.botmux/config.json 的 voice 块,botmux restart 后生效。支持两类引擎,按身份二选一。

字节租户:SAMI(语音合成大模型)

  1. 在公司语音能力平台申请「语音合成(大模型)」能力(botmux 只做合成,不需要语音识别),拿到 appkey、AccessKey、SecretKey 三样;提示 Namespace 未开通 / 无路由时走内部 Oncall 找语音(Speech)团队开通。
  2. botmux voice → 选 SAMI → 依次粘贴 accessKey / secretKey / appkey → botmux restart。

音色默认「灿灿」(zh_female_cancan_mars_bigtts),配置时可改成其它音色 id;服务端点已内置无需填写。SecretKey 只在本机签名换取临时 token,不外发。

外部用户:OpenAI 兼容引擎

接任意兼容 OpenAI 语音接口的 TTS 服务(OpenAI 官方或自建如 Kokoro-FastAPI、openedai-speech):

  • baseUrl:官方 https://api.openai.com/v1,自建填自己的(如 http://127.0.0.1:8880/v1);
  • apiKey:服务密钥,自建无鉴权可留空;
  • model:官方 tts-1,自建按服务文档(如 kokoro);
  • 音色(voice)可选,OpenAI 默认 alloy。

botmux voice → 选 OpenAI 兼容 → 填 baseUrl / apiKey / model → botmux restart。

系统依赖

合成产物要编码成飞书语音气泡用的 opus 格式,依赖系统 opus-tools(提供 opusenc)。跑 botmux voice 时自动检测,未装会询问并帮装(沿用 tmux 的包管理器 + sudo 逻辑);手动安装:

sudo apt-get install -y opus-tools   # Debian / Ubuntu
brew install opus-tools              # macOS

管理命令

botmux voice          # 配置(交互式)
botmux voice status   # 查看当前配置(凭证自动打码)
botmux voice disable  # 关闭语音(移除配置,按钮随之消失)

配置文件参考

直接编辑 ~/.botmux/config.json 的 voice 块:

// 字节租户(SAMI)
{
  "voice": {
    "engine": "sami",
    "speaker": "zh_female_cancan_mars_bigtts",   // 可选,默认灿灿
    "sami": { "accessKey": "...", "secretKey": "...", "appkey": "..." }
  }
}
 
// 外部用户(OpenAI 兼容)
{
  "voice": {
    "engine": "openai",
    "speaker": "alloy",                            // 可选
    "openai": { "baseUrl": "https://api.openai.com/v1", "apiKey": "...", "model": "tts-1" }
  }
}

支持按机器人覆盖:在 bots.json 某个机器人对象里放同样的 voice 块,会逐字段盖在全局配置之上(多 bot 共用一套或各配各的都行,见 bots-json)。

关联

  • 语音按钮挂在回复卡片底部,卡片与流式输出见 cards
  • botmux voice 属于 CLI 命令族,完整命令表见 cli-commands
  • 全局 / 按 bot 的配置层次与 bots.json 字段总览见 env