Agent Skill
2/7/2026

dubbing-skills

将长文稿/文章转换为配音稿 JSON,支持智能切分、情感分析、多角色识别。当用户需要将文章转语音、制作有声书、处理多角色对话配音时,按本规范生成配音稿。

M
mu
5GitHub Stars
1Views
npx skills add mu-zi-lee/qwen3-tts-skill

SKILL.md

Namedubbing-skills
Description将长文稿/文章转换为配音稿 JSON,支持智能切分、情感分析、多角色识别。当用户需要将文章转语音、制作有声书、处理多角色对话配音时,按本规范生成配音稿。

name: dubbing-skills description: 将长文稿/文章转换为配音稿 JSON,支持智能切分、情感分析、多角色识别。当用户需要将文章转语音、制作有声书、处理多角色对话配音时,按本规范生成配音稿。

配音稿生成技能

将长文稿转换为结构化配音稿 JSON,用于批量 TTS 生成。


🎯 使用场景

  • 文章 / 博客 → 有声版本
  • 剧本 / 小说 → 有声书
  • 视频脚本 → 配音
  • 多角色对话 → 分角色朗读

📋 工作流程

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ 用户给文稿  │ →  │ AI生成JSON  │ →  │ 用户审核    │ →  │ 批量生成    │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

Step 1: AI 分析文本生成配音稿

当用户说 "把这篇文章转成语音" + 贴上文章,按以下流程分析:

1.1 检测语言

根据文本内容判断:Chinese / English / Japanese / Korean

1.2 识别文本类型

类型特征处理方式
多角色对话【角色名】 标记解析角色名
无标记对话"引号" 对话标记为 character_1, 2...
纯旁白无对话标记使用默认角色 旁白

1.3 智能切分

规则

  1. 按段落分割(\n\n
  2. 按句号切分(。!?.!?
  3. 超过 300 字在逗号处二次切分
  4. 不在引号内切分

保持完整的情况

  • "今天天气真好。我们出去吧。" → 引号内不切
  • 我想……可能不行 → 省略号不切
  • 3.14 2.5% → 数字不切

1.4 情感分析

为每段生成 instruct(10-20 字):

文本特征emotioninstruct 示例
陈述事实neutral平静陈述
感叹号多happy/excited开心兴奋,语速稍快
问句neutral疑问上扬
省略号sad/calm低沉缓慢,略带叹息
描写场景calm舒缓平和,营造氛围
冲突对话angry语气激动,重音明显

1.5 确定模式和 Speaker

角色需求推荐模式配置
普通角色custom-voicespeaker: Vivian/Ryan
特定音色(萝莉、大叔等)voice-designvoice_instruct: 音色描述
真人声音voice-cloneref_audio + ref_text

内置 Speaker

  • Chinese → Vivian(女)
  • English → Ryan(男)
  • Japanese → Ono_Anna(女)
  • Korean → Sohee(女)

Step 2: 输出 JSON

标准模板

{
  "version": "1.1",
  "source": "文章标题或来源",
  "language": "Chinese",
  "default_mode": "custom-voice",
  "silence_gap": 0.3,
  "character_switch_gap": 0.5,
  "total_segments": 5,
  
  "character_map": {
    "旁白": {
      "speaker": "Vivian",
      "default_instruct": "平静的叙述"
    },
    "角色A": {
      "speaker": "Ryan",
      "default_instruct": "年轻活泼"
    }
  },
  
  "segments": [
    {
      "id": 1,
      "character": "旁白",
      "text": "第一段内容。",
      "instruct": "情感/语气描述",
      "emotion": "neutral"
    }
  ]
}

输出时提示用户

这是生成的配音稿 JSON。请检查:

  1. 切分是否合理
  2. 角色分配是否正确
  3. 情感 instruct 是否合适
  4. 需要调整的 mode(custom-voice / voice-design / voice-clone)

修改后保存为 .dubbing.json 文件,然后告诉我"帮我生成语音"。


Step 3: 批量生成语音

用户确认后,执行:

uv run qwen3-tts-skills/scripts/batch_dubbing.py \
  --input article.dubbing.json \
  --out-dir outputs

📖 三种模式配置

custom-voice(默认)

"character_map": {
  "旁白": {
    "mode": "custom-voice",
    "speaker": "Vivian",
    "default_instruct": "平静叙述"
  }
}

voice-design

"character_map": {
  "萝莉": {
    "mode": "voice-design",
    "voice_instruct": "稚嫩可爱的萝莉女声,音调偏高",
    "default_instruct": "撒娇语气"
  }
}

voice-clone

"character_map": {
  "主播": {
    "mode": "voice-clone",
    "ref_audio": "voices/host.wav",
    "ref_text": "参考音频的文本内容"
  }
}

⚠️ voice-clone 不支持 instruct 情感控制


📝 instruct 写法参考

情感示例
开心开心愉快,语调上扬
悲伤低沉缓慢,略带叹息
愤怒语气激动,语速加快
惊讶惊讶上扬,略微拖长
平静平和舒缓,语速适中
紧张语速略快,有些紧张
神秘压低声音,营造悬疑
温柔轻声细语,温柔亲切
严肃庄重正式,一字一顿
撒娇撒娇拖音,语调起伏

🔗 相关文档

  • 格式规范references/dubbing_format.md
  • 完整示例references/examples.md
  • 主技能../SKILL.md

💡 快速示例

用户输入

【旁白】清晨的咖啡店里,阳光透过玻璃窗洒落。
【小明】早上好!今天天气真不错!
【小红】是啊,我们一起去公园吧!

AI 输出

{
  "version": "1.1",
  "language": "Chinese",
  "default_mode": "custom-voice",
  "silence_gap": 0.3,
  "character_switch_gap": 0.5,
  "total_segments": 3,
  "character_map": {
    "旁白": {"speaker": "Vivian", "default_instruct": "平静叙述"},
    "小明": {"speaker": "Ryan", "default_instruct": "年轻活泼男声"},
    "小红": {"speaker": "Vivian", "default_instruct": "温柔甜美女声"}
  },
  "segments": [
    {"id": 1, "character": "旁白", "text": "清晨的咖啡店里,阳光透过玻璃窗洒落。", "instruct": "场景描述,舒缓平和", "emotion": "calm"},
    {"id": 2, "character": "小明", "text": "早上好!今天天气真不错!", "instruct": "开心问候,语气上扬", "emotion": "happy"},
    {"id": 3, "character": "小红", "text": "是啊,我们一起去公园吧!", "instruct": "兴奋期待,活泼语气", "emotion": "excited"}
  ]
}
Skills Info
Original Name:dubbing-skillsAuthor:mu