通过飞书 Open API 发送语音/音频消息。支持文本转语音(TTS)和已有音频文件上传。
bash
# 方式1: 文字转语音发送
./send-voice.sh --to <open_id> --text "床前明月光,疑是地上霜"
# 方式2: 指定语音风格
./send-voice.sh --to <open_id> --text "通知:会议改到下午3点" --voice zh-CN-YunxiNeural
# 方式3: 发送已有音频文件
./send-voice.sh --to <open_id> --file /path/to/audio.opus
参数必填默认值说明--to是-接收者 open_id(以 ou_ 开头)--text条件必填-要转为语音的文字(与 --file 二选一)--file条件必填-已有音频文件路径(支持 mp3/wav 等,会自动转 opus)--voice否zh-CN-XiaoxiaoNeuralTTS 语音名称--rate否+0%语速调整(如 +10% 加速,-10% 减速)--volume否+0%音量调整(如 +0%、+10%)
语音ID性别/风格适用场景zh-CN-XiaoxiaoNeural女声/活泼通用、通知zh-CN-YunxiNeural男声/沉稳正式、商务zh-CN-XiaoyiNeural女声/温柔客服、关怀
完整列表: edge-tts --list-voices | grep zh-CN
text
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 文字/文件 │───→│ TTS/转码 │───→│ opus文件 │
│ 输入 │ │(edge-tts/ │ │ │
│ │ │ ffmpeg) │ │ │
└─────────────┘ └─────────────┘ └──────┬──────┘
│
┌─────────────┐ ┌─────────────┐ ┌──────▼──────┐
│ 发送成功 │←───│ 消息发送 │←───│ 上传文件 │
│ 通知 │ │(audio类型) │ │ 获取file_key│
└─────────────┘ └─────────────┘ └─────────────┘
edge-tts - 微软 Edge TTS(语音合成)ffmpeg - 音频格式转换(转为opus)curl - HTTP 请求jq (可选) - JSON解析(比grep更可靠)bash
# edge-tts
pip install edge-tts
# ffmpeg (Ubuntu/Debian)
sudo apt-get install ffmpeg
# ffmpeg (macOS with Homebrew)
brew install ffmpeg
# jq (可选,用于更可靠的JSON解析)
sudo apt-get install jq # or brew install jq
脚本会按以下顺序查找飞书凭据:
FEISHU_APP_ID, FEISHU_APP_SECRET~/.openclaw/.env~/.openclaw/openclaw.jsontext
FEISHU_APP_ID=cli_xxxxxxxx
FEISHU_APP_SECRET=xxxxxxxx
A: 确保使用的是 open_id(以 ou_ 开头),而非 user_id。飞书发送消息 API 需要使用 open_id 并在 URL 中指定 receive_id_type=open_id。
A: 检查 ffmpeg 转换是否正常完成:
bash
ffmpeg -i input.mp3 -c:a libopus -b:a 128k output.opus
A: 如果系统 Python 是 externally-managed (PEP 668),使用虚拟环境:
bash
python3 -m venv ~/.venv/edge-tts
source ~/.venv/edge-tts/bin/activate
pip install edge-tts
A: 通过飞书开放平台 API 查询,或使用事件订阅接收用户互动事件获取。
text
send-voice.sh 主脚本
SKILL.md 本文件
.env.example 环境变量模板
MIT License - 自由使用,风险自负。
提示:本技能仅供学习和技术交流,使用时请遵守飞书开放平台相关协议和规定。