SuperAPI AI 工具集

feishu-voice-tts

办公与效率

查看项目

更新于 10-16 09:40

技能介绍

Feishu Voice TTS 是一个把文本转换为语音并通过飞书 audio 消息发送给指定用户的技能。

用途

该技能用于将文本转为语音(edge-tts),再转码为飞书可用的 Opus(OGG 容器),调用飞书开放平台“先上传文件再发 audio 消息”的标准流程发送,避免“直接发文件被降级成文本”。典型场景包括“给用户发语音”“把这段话转语音并发飞书”“语音播报结果”,尤其当普通文件发送会降级为文本时使用。仅在指定 channel=feishu 时触发,优先在需要高可达、可听播报时使用。

主要能力

  • 文本转语音:使用 edge-tts 生成 mp3。
  • 转码:使用 ffmpeg 转为 audio/ogg(opus 编码,16k 单声道)。
  • 获取 tenant token:调用飞书 /auth/v3/tenant_access_token/internal。
  • 上传语音文件:调用飞书 /im/v1/files,获取 file_key。
  • 发送 audio 消息:调用飞书 /im/v1/messages,msg_type=audio + file_key。

使用方式

执行脚本:

skills/feishu-voice-tts/scripts/send_feishu_voice.sh "用户你好,这是一条语音消息" "user_open_id"

参数:

  • text(必填):要播报的文本。
  • open_id(必填,可用环境变量替代):飞书用户 open_id。
  • voice(可选):edge-tts 音色,默认 zh-CN-YunxiNeural。

环境变量(可选,优先级高于配置文件):

  • FEISHU_APP_ID
  • FEISHU_APP_SECRET
  • FEISHU_OPEN_ID
  • EDGE_TTS_VOICE

工作流程(按以下顺序执行,不要跳步):

  1. 文本转语音:edge-tts 生成 mp3。
  2. 转码:ffmpeg 转为 audio/ogg(opus 编码,16k 单声道)。
  3. 获取 tenant token:飞书 /auth/v3/tenant_access_token/internal。
  4. 上传语音文件:飞书 /im/v1/files,拿 file_key。
  5. 发送 audio 消息:飞书 /im/v1/messages,msg_type=audio + file_key。

成功时脚本输出:

{"success": true, "message_id": "...", "file_key": "..."}

依赖要求

  • ffmpeg 可用。
  • edge-tts 可用(脚本自动尝试以下入口):
    • edge-tts
    • ~/Library/Python/3.14/bin/edge-tts
    • python3 -m edge_tts
  • 本机存在 OpenClaw 配置:~/.openclaw/openclaw.json。
  • 默认读取:channels.feishu.accounts.feishu-main.appId/appSecret。

失败处理

  • 缺少依赖:按报错安装(例如 python3 -m pip install --user edge-tts)。
  • 飞书 API 失败:脚本会直接输出原始 JSON 错误,按 code/msg 排查。
  • 被降级成文本:确认发送的是 msg_type=audio 且 content 里是上传后的 file_key。

脚本

  • scripts/send_feishu_voice.sh:完整自动化脚本(TTS + 转码 + 上传 + 发送)。

限制

关于收费、价格、平台支持范围、效果等更多信息,资料暂未提供。