- 核心配置: IDENTITY, USER, SOUL, AGENTS, TOOLS, HEARTBEAT, MEMORY - memory/: 每日总结和临时记录 - skills/: 所有已安装技能 - notes/: 语音配置笔记
109 lines
2.6 KiB
Markdown
109 lines
2.6 KiB
Markdown
# MiniMax TTS → 飞书语音气泡 完整方案
|
||
|
||
## 踩过的坑(必看)
|
||
|
||
1. **MiniMax TTS API 参数必须完整**,不能只传 text 和 model
|
||
- ❌ 错误:`{"model": "speech-2.8-hd", "text": "你好"}`
|
||
- ✅ 正确:必须包含 voice_setting 和 audio_setting
|
||
|
||
2. MiniMax 返回的是 hex 编码的音频,需要 xxd 转换
|
||
|
||
3. 飞书语音气泡只支持 **OPUS 格式**,不是 MP3,需要 ffmpeg 转换
|
||
|
||
4. 飞书上传文件必须传 **duration 参数**(毫秒),否则显示 0 秒
|
||
|
||
5. 飞书上传用 `file_type=opus`,不是 mp3
|
||
|
||
---
|
||
|
||
## 完整流程
|
||
|
||
### Step 1: 调用 MiniMax TTS
|
||
|
||
```bash
|
||
curl -s -X POST "https://api.minimaxi.com/v1/t2a_v2" \
|
||
-H "Authorization: Bearer {MINIMAX_API_KEY}" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"model": "speech-2.8-hd",
|
||
"text": "要转换的文本",
|
||
"stream": false,
|
||
"voice_setting": {
|
||
"voice_id": "female-tianmei",
|
||
"speed": 1,
|
||
"vol": 1,
|
||
"pitch": 0,
|
||
"emotion": "happy"
|
||
},
|
||
"audio_setting": {
|
||
"sample_rate": 32000,
|
||
"bitrate": 128000,
|
||
"format": "mp3",
|
||
"channel": 1
|
||
}
|
||
}'
|
||
```
|
||
|
||
返回: `{"data": {"audio": "hex..."}, "extra_info": {"audio_length": 3222}}`
|
||
|
||
### Step 2: 转换格式
|
||
|
||
```bash
|
||
# hex → MP3
|
||
echo $HEX_AUDIO | xxd -r -p > voice.mp3
|
||
|
||
# MP3 → OPUS
|
||
ffmpeg -i voice.mp3 -acodec libopus -ac 1 -ar 16000 voice.opus -y
|
||
|
||
# 获取时长(毫秒)
|
||
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 voice.opus
|
||
```
|
||
|
||
### Step 3: 获取飞书 Access Token
|
||
|
||
```bash
|
||
curl -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"app_id":"{APP_ID}","app_secret":"{APP_SECRET}"}'
|
||
```
|
||
|
||
### Step 4: 上传文件到飞书
|
||
|
||
```bash
|
||
curl -X POST "https://open.feishu.cn/open-apis/im/v1/files" \
|
||
-H "Authorization: Bearer {TOKEN}" \
|
||
-F "file_type=opus" \
|
||
-F "file_name=voice.opus" \
|
||
-F "duration={DURATION_MS}" \
|
||
-F "file=@voice.opus"
|
||
```
|
||
|
||
返回: `{"code": 0, "data": {"file_key": "file_v3_xxx"}}`
|
||
|
||
### Step 5: 发送语音消息
|
||
|
||
```bash
|
||
curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" \
|
||
-H "Authorization: Bearer {TOKEN}" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"receive_id": "ou_ac5d6d23827df6ae9d63805be47b05eb",
|
||
"msg_type": "audio",
|
||
"content": "{\"file_key\":\"{FILE_KEY}\"}"
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## 女声 voice_id 推荐
|
||
|
||
- `female-tianmei` — 推荐女声
|
||
|
||
---
|
||
|
||
## 环境要求
|
||
|
||
- `ffmpeg`(需要 libopus 支持)
|
||
- `xxd`(hex 解码)
|
||
- `ffprobe`(获取音频时长)
|