Install
openclaw skills install @klilyz/feishu-senseaudio-persona飞书语音陪伴技能。当用户在飞书机器人会话中发送任何文字或语音消息时触发此技能。 大模型根据用户自定义的虚拟角色人设,生成符合角色性格的文本回复, 并通过 SenseAudio TTS 合成语音,以飞书原生语音条形式回复,不要生成任何文字消息回复到对话框里,只需要符合该伴侣人设的对话即可。 首次使用时引导用户完成角色人设设定。 适用场景:用户和飞书机器人的所有私聊对话、角色扮演、虚拟陪伴、情感陪聊。
openclaw skills install @klilyz/feishu-senseaudio-persona这个技能用于在飞书里打造一个可定制人设的虚拟角色。
OpenClaw 的 Skills 通过 SKILL.md frontmatter 声明依赖与环境变量;飞书渠道使用 WebSocket 事件订阅接收消息;飞书发送语音消息前需要先上传 OPUS 文件,再以 audio 消息发送 file_key。
say、Whisper、本地 pyttsx3 等其他方案。当本技能已经成功调用飞书语音发送流程后:
需要一个飞书企业自建应用,并启用机器人能力。OpenClaw Feishu 文档建议:创建 app、复制 App ID 和 App Secret、配置权限、启用 bot、配置事件订阅、最后发布应用。Feishu 插件通过 WebSocket 模式接收消息,不需要先暴露公网 webhook。
最少准备:
FEISHU_APP_IDFEISHU_APP_SECRETchat_id(也可以在脚本参数中传入)需要:
SENSEAUDIO_API_KEYSENSEAUDIO_API_BASE,默认 https://api.senseaudio.cnSENSEAUDIO_ASR_ENDPOINTpython3ffmpeg(用于把 SenseAudio 结果转成 Feishu 语音条需要的 OPUS)飞书上传文件接口支持 opus 音频;如果原始音频是其他格式,需要先转为 OPUS。
feishu-persona-voice-reply/
├── SKILL.md
├── data/
│ └── persona.json
└── scripts/
├── main.py
├── asr.py
├── tts.py
├── feishu_api.py
└── persona_store.py
初始化人设时,至少收集以下内容:
name:角色名relationship:与用户的关系定位(学长 / 搭档 / 恋人感 / 治愈系朋友)personality:性格关键词speaking_style:说话风格catchphrase:口头禅或常见尾句voice_id:SenseAudio 音色 IDspeed:语速pitch:音调(整数)vol:音量emotion:默认情感boundaries:角色边界先和用户确认人设,再保存:
python3 "$SKILL_DIR/scripts/main.py" persona-init \
--name "阿澈" \
--relationship "温柔克制的陪伴型学长" \
--personality "耐心, 细腻, 稍微嘴硬但可靠" \
--speaking-style "短句, 自然, 温柔, 不油腻" \
--catchphrase "别硬撑,我在。" \
--voice-id "male_0018_a" \
--speed 0.95 \
--pitch -1 \
--vol 1.0 \
--emotion "calm"
python3 "$SKILL_DIR/scripts/main.py" persona-show
先根据人设写出文本回复。文本回复应该由 OpenClaw 在阅读人设后生成。你可以先读取人设摘要:
python3 "$SKILL_DIR/scripts/main.py" persona-prompt --user-message "今天真的很累"
脚本会输出一段 prompt 上下文。读取后,用这个人设生成最终回复文本。
生成好文本后,再发语音条到飞书:
python3 "$SKILL_DIR/scripts/main.py" send-voice \
--reply-text "那就先别逼自己继续撑着了。把包放下,先坐一会儿,我陪你缓一缓。" \
--chat-id "oc_xxxxx"
先转写:
python3 "$SKILL_DIR/scripts/main.py" transcribe \
--audio "/absolute/path/to/input.m4a"
拿到转写文本后,再执行“人设生成文本回复 → send-voice”的流程。
当用户第一次使用时,你应该先问清楚:
确认后,调用 persona-init 保存设定。
后续每次用户发消息:
transcribepersona-promptsend-voice先引导用户做 persona-init,不要直接进入角色回复。
SENSEAUDIO_API_KEY提示用户前往 SenseAudio 平台获取 API Key,并设置:
export SENSEAUDIO_API_KEY="your_api_key"
export SENSEAUDIO_API_BASE="https://api.senseaudio.cn"
FEISHU_APP_ID / FEISHU_APP_SECRET提示用户先按 OpenClaw Feishu 渠道文档创建飞书应用并配置凭证。
检查是否满足:
.opus / OPUS 编码file_type=opusaudio 消息并传 file_keyFeishu 上传文件文档说明 opus 需要专门作为 OPUS 音频上传;发送消息文档说明音频文件要先上传,再用 file_key 发送。
python3 "$SKILL_DIR/scripts/main.py" setup
python3 "$SKILL_DIR/scripts/main.py" persona-init \
--name "阿澈" \
--relationship "陪伴型学长" \
--personality "温柔, 耐心, 克制" \
--speaking-style "短句, 自然, 轻微关心" \
--voice-id "male_0018_a"
python3 "$SKILL_DIR/scripts/main.py" send-voice \
--reply-text "先休息一下,我在这。" \
--chat-id "oc_xxxxx"