# Cosyvoice Ssml

内部技能，仅用于数字人 / VideoRetalk / 资产库角色口播视频链路中的 CosyVoice TTS 子步骤。普通 AI...

- Repository: https://github.com/Jamailar/Beav (2243 stars)
- Category: Media
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add Jamailar/Beav --skill cosyvoice-ssml -g -a claude-code -y`
Codex: `npx skills add Jamailar/Beav --skill cosyvoice-ssml -g -a codex -y`
Cursor: `npx skills add Jamailar/Beav --skill cosyvoice-ssml -g -a cursor -y`
Gemini CLI: `npx skills add Jamailar/Beav --skill cosyvoice-ssml -g -a gemini-cli -y`

## Description

内部技能，仅用于数字人 / VideoRetalk / 资产库角色口播视频链路中的 CosyVoice TTS 子步骤。普通 AI 聊天、普通音频、普通短视频、产品视频或广告视频请求不得直接调用本技能；这些视频请求必须先走 video-director。只有 video-director 已确认这是数字人口播，且需要把已批准的台词合成为角色驱动音频时，才可激活本技能。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# CosyVoice SSML 表演导演

仅当当前任务已经是 `video-director` 管理下的数字人 / VideoRetalk / 资产库角色 talking-head 口播视频，并且选中的 TTS 模型是 CosyVoice 时，使用这个技能。

普通 AI 聊天里的“做一个口播视频 / 生成视频 / 短视频 / 产品视频 / 广告片”不能直接进入本技能。必须先激活 `video-director`，由它完成视频脚本、分镜、确认、角色与音频驱动链路。普通音频、普通旁白、普通 TTS 也不能用本技能作为入口。

## 技能激活语义

`skills.invoke` 只会把本技能说明加入当前轮上下文，不会替你转换文本，也不会返回 SSML。

只有在数字人口播视频链路中激活后，你必须自己完成这三步：

1. 根据已经批准的数字人口播台词拆出角色表演片段：开头、场景、信息推进、重点、收束等。
2. 为每个片段写出一个完整 `<speak rate="..." pitch="..." volume="...">...</speak>` SSML，并给这个片段写一个简短 `prompt`。
3. 立即调用一次 `voice.speech` 生成音频。

不要再次调用 `cosyvoice-ssml` 等待结果；不要说“缺少 SSML 加工结果”；不要创造 `cosyvoice-ssml-turn` 之类不存在的技能名。

你的任务不是展示 SSML 知识，而是把最终要朗读的文本变成一次可执行的 `voice.speech` 请求：

- 先判断文本类型、听众、商业目标、卖点结构和口播节奏。
- 再逐句决定怎么读：哪里慢、哪里轻、哪里强调、哪里停顿。
- 在 Agent 音频创作里，多句、换行、短视频带货、自媒体口播、产品讲解、知识分享、种草测评或用户要求语气时，必须产出 `<speak>...</speak>` SSML。
- 长文本、多段文本、带货口播、自媒体口播、种草测评、产品讲解、广告口播、教程和任何明显有信息推进的文本，必须使用 `segments`。每个 segment 是一个独立 CosyVoice 合成片段，media runtime 会自动合并最终音频。
- 只有极短、中性、单一语气的一句话，才可以使用单个 `input`。
- 只有用户明确要求“不要 SSML / 直接纯文本”，或者文本就是极短中性一句话时，才可以不用 SSML。
- 保留用户原文含义；除非用户要求改写，否则不要改词。
- 最终只调用一次 `voice.speech`，不要逐句多次调用工具，也不要手动拼接音频。

## 可用模型

只在这些 CosyVoice 系列模型上使用本技能：

- `cosyvoice-v3.5-plus`
- `cosyvoice-v3.5-flash`
- `cosyvoice-v3-plus`
- `cosyvoice-v3-flash`
- `cosyvoice-v2`

音色 ID 和模型绑定。`cosyvoice-v3.5-plus` 通常要使用复刻或设计出的 CosyVoice 音色 ID，不要拿 MiniMax 系统音色 ID 来合成。

## 最终输出格式

短文本最终调用 `voice.speech` 时，可以使用单个 `input`：

```json
{
  "model": "cosyvoice-v3.5-plus",
  "voiceId": "voice_xxx",
  "input": "<speak rate=\"0.9\" pitch=\"0.95\" volume=\"60\">完整 SSML 文本</speak>",
  "prompt": "请用温柔、平稳、有耐心的语气朗读。",
  "language_hints": ["zh"],
  "responseFormat": "mp3",
  "waitForCompletion": true
}
```

长文本最终调用 `voice.speech` 时，必须使用 `segments`，每段都有自己的 `input` 和 `prompt`，由 media runtime 合并最终音频：

The rest: https://github.com/Jamailar/Beav/blob/HEAD/desktop/builtin-skills/cosyvoice-ssml/SKILL.md
