运行时依赖
安装命令
点击复制技能文档
Feishu Voice 技能 - 飞书语音交互技能 概述
本技能用于实现飞书与 ElevenLabs 的语音交互,包括:
语音转文字(用户发语音 → 识别内容) 文字转语音(生成语音回复用户) 飞书语音消息的收发
- 环境配置
1.2 FFmpeg 安装 apt-获取 更新 && apt-获取 安装 -y ffmpeg
- 语音转文字(用户语音识别)
用户发送语音时,收到的是 file_key,需要通过以下步骤下载:
令牌=$(curl -s -X POST "https://open.feishu.cn/open-APIs/auth/v3/tenant_访问_令牌/internal" \ -H "Content-Type: 应用/json; char设置=utf-8" \ -d '{"应用_id":"你的应用_id","应用_secret":"你的应用_secret"}' | grep -o '"tenant_访问_令牌":"[^"]*"' | cut -d'"' -f4)
# 下载语音文件 curl -s "https://open.feishu.cn/open-APIs/im/v1/messages/{message_id}/resources/{file_key}?type=file" \ -H "Authorization: Bearer $令牌" -o /path/to/voice.ogg
2.2 ElevenLabs 语音转文字 curl -s -X POST "https://API.elevenlabs.io/v1/speech-to-text?enable_记录ging=true" \ -H "xi-API-key: ${ELEVENLABS_API_KEY}" \ -F 模型_id="scribe_v1" \ -F file=@/path/to/voice.ogg
返回结果包含 text 字段,即识别出的文字内容。
- 文字转语音
3.2 转换为飞书兼容格式
飞书语音需要 Ogg/Opus 格式,需要用 FFmpeg 转换:
ffmpeg -i 输入.mp3 -ar 16000 -ac 1 -acodec libopus 输出.ogg -y
- 发送语音消息(飞书)
const 命令行工具ent = new 命令行工具ent({ 应用Id: '你的应用Id', 应用Secret: '你的应用Secret', });
a同步 function 发送Voice(filePath, durationMs, 接收Id) { // 1. 上传语音文件 const 上传Res = awAIt 命令行工具ent.im.file.创建({ data: { file_type: 'opus', file_name: 'voice.ogg', file: fs.创建Read流(filePath), duration: durationMs } }); const fileKey = 上传Res.file_key; // 2. 发送语音消息 const 发送Res = awAIt 命令行工具ent.im.message.创建({ params: { 接收_id_type: 'open_id' }, data: { 接收_id: 接收Id, msg_type: 'audio', content: JSON.stringify({ file_key: fileKey, duration: durationMs }) } }); return 发送Res; }
- 常见问题
错误: "The 应用 is not the resource 发送er"
原因: 飞书安全限制,机器人只能下载自己发送的文件
解决: 用户需将语音转发给机器人(转发后机器人成为发送者)
5.2 TTS 生成文件为空
检查: 确认 ELEVENLABS_API_KEY 已设置且有余额
5.3 语音无法播放
检查:
文件格式是否为 Ogg/Opus duration 参数是否正确 文件是否在允许的目录(workspace 目录) 5.4 消息太长被拦截 钉钉:单条消息超过约7000字符会被拦截,需要拆分多条发送 飞书:同样有限制
- 飞书权限配置
需要以下权限:
im:message - 消息收发 im:resource - 文件/媒体资源 im:resource:下载 - 下载消息资源
- 完整流程示例
- 获取 message_id 和 file_key
- 下载语音文件 (type=file)
- ElevenLabs 语音转文字 → 理解内容
- 生成回复内容
- ElevenLabs TTS 生成语音
- FFmpeg 转为 Ogg 格式
- 上传并发送语音消息给用户
- 相关文件位置
最后更新: 2026-02-23