Skills

Cosyvoice Ssml

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

Install

npx skills add Jamailar/Beav --skill cosyvoice-ssml -g -a claude-code -y
Repository
Jamailar/Beav2.2k
Category
Media
Updated
3d ago
License
See repository
Context cost
Mediumabout 3,000 tokens
Runs scripts
No, instructions only

What it does

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

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:

{
  "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 合并最终音频:

Read the whole SKILL.md on GitHub

More in Media