feishu-voice
飞书语音消息发送技能。将文本转换为语音并发送到飞书,支持 TTS 生成、格式转换、时长读取、文件上传和消息发送。
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/franklu0819-lang/feishu-voice飞书语音消息发送技能
将文本转换为语音消息发送到飞书,支持在飞书聊天窗口直接播放。
功能特性
- ✅ TTS 文字转语音(使用 zhipu-tts)
- ✅ 自动转换为 opus 格式(飞书要求)
- ✅ 读取音频时长
- ✅ 上传到飞书服务器
- ✅ 发送可播放的语音消息
- ✅ 支持多种声音和语速
前置要求
环境变量
# 飞书配置
export FEISHU_APP_ID="cli_xxx" # 飞书应用 ID
export FEISHU_APP_SECRET="your_secret" # 飞书应用密钥
export FEISHU_RECEIVER="ou_xxx" # 接收者 Open ID(可选,默认从上下文获取)
# 智谱 AI 配置(用于 TTS)
export ZHIPU_API_KEY="your_zhipu_key" # 智谱 API 密钥
必需工具
ffmpeg- 音频格式转换ffprobe- 读取音频信息jq- JSON 处理
依赖技能
zhipu-tts- 文字转语音
使用方法
基本用法
# 发送语音消息
bash scripts/send_voice.sh "你好,这是一条语音消息"
高级选项
# 指定声音和语速
bash scripts/send_voice.sh "你好" tongtong 1.2
# 可用声音:
# - tongtong (彤彤) - 默认女声,平衡音色
# - chuichui (锤锤) - 男声,深沉音色
# - xiaochen (小陈) - 年轻声音
# 语速范围:0.5 - 2.0(默认 1.0)
脚本说明
send_voice.sh
主脚本,完整的语音消息发送流程。
用法:
bash scripts/send_voice.sh <文本> [声音] [语速]
参数:
文本(必需): 要转换为语音的文字声音(可选): tongtong, chuichui, xiaochen(默认:tongtong)语速(可选): 0.5-2.0(默认:1.0)
环境变量:
FEISHU_APP_ID: 飞书应用 IDFEISHU_APP_SECRET: 飞书应用密钥FEISHU_RECEIVER: 接收者 Open ID(可选)
流程说明
- TTS 生成: 使用 zhipu-tts 生成 WAV 格式音频
- 格式转换: 使用 ffmpeg 转换为 opus 格式
- 读取时长: 使用 ffprobe 获取音频时长(秒)
- 上传文件: 上传到飞书,指定
file_type=opus和duration - 发送消息: 发送
msg_type=audio消息
技术细节
音频格式要求
飞书语音消息要求:
- 格式: opus (OGG 容器)
- 编码: libopus
- 比特率: 24k
- 采样率: 24000 Hz
- 声道: 单声道
Duration 参数
关键: 必须在上传时提供 duration 参数(整数秒),否则时长显示为 0。
# 正确的上传方式
curl -X POST "https://open.feishu.cn/open-apis/im/v1/files" \
-F "[email protected]" \
-F "file_type=opus" \
-F "duration=6" # ← 关键参数
API 端点
| 端点 | 用途 |
|---|---|
/auth/v3/tenant_access_token/internal | 获取访问令牌 |
/im/v1/files | 上传文件 |
/im/v1/messages | 发送消息 |
故障排查
语音没有时长
问题: 发送的语音消息时长显示为 0
解决: 确保在上传时传递了 duration 参数(整数秒)
# 获取时长(四舍五入)
DURATION=$(ffprobe -v error -show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 voice.opus | awk '{printf "%.0f", $1}')
# 上传时带上 duration
curl ... -F "duration=$DURATION"
无法播放
问题: 语音消息无法播放
可能原因:
- 格式不是 opus
file_type参数错误- 文件损坏
解决:
# 检查格式
ffprobe voice.opus
# 重新转换
ffmpeg -i input.wav -c:a libopus -b:a 24k voice.opus
API 权限错误
问题: 上传时返回权限错误
解决: 确保飞书应用有以下权限:
im:messageim:message:send_as_bot
完整示例
# 设置环境变量
export FEISHU_APP_ID="your_app_id_here"
export FEISHU_APP_SECRET="your_app_secret_here"
export ZHIPU_API_KEY="your_zhipu_key_here"
# 发送语音
bash /root/.openclaw/workspace/skills/feishu-voice/scripts/send_voice.sh \
"你好,这是一条测试语音消息。"
注意事项
- 时长限制: 智谱 TTS 单次最多 1024 字符
- 整数时长: duration 必须是整数(四舍五入)
- opus 格式: 飞书只接受 opus 格式的音频消息
- 文件清理: 临时文件会自动清理
相关技能
zhipu-tts: 文字转语音zhipu-asr: 语音转文字
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-franklu0819-lang-feishu-voice": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
zhipu-asr
Automatic Speech Recognition (ASR) using Zhipu AI (BigModel) GLM-ASR model. Use when you need to transcribe audio files to text. Supports Chinese audio transcription with context prompts, custom hotwords, and multiple audio formats.
zhipu-tts
Text-to-speech conversion using Zhipu AI (BigModel) GLM-TTS model. Use when you need to convert text to audio files with various voice options. Supports Chinese text synthesis with multiple voice personas, speed control, and output formats.
feishu-file
飞书文件发送技能。支持发送各类文件到飞书聊天,包括文档、图片、压缩包等,自动识别文件类型并处理上传。
clawhub-manager
ClawHub 技能管理工具。封装技能的发布、删除、查询和搜索功能,方便管理 ClawHub 上的技能。
md2pdf
Markdown 转 PDF 技能。将 Markdown 文件转换为精美的 PDF 文档,完美支持中文、代码高亮、自定义样式。