# Edge Tts Chinese Roleplay

> 帮助用户用免费的微软 edge-tts 神经语音做中文角色化 TTS 配音（多角色声线分配 + SSML rate/pitch 情绪精调 + ffmpeg 多段 mp3 按时间码合到视频音轨），用一套"Yunxi 男主 / Yunjian 反派 / Yunxia 配角 / Xiaoxiao 旁白 4 类声线 + 6 情绪 rate/pitch 表 + adelay+amix 多段合成模板"替代"macOS say 90% 中文 voice 是空音 / 商用 TTS 太贵 / TTS 念稿没情绪"的常见坑。当用户描述"我要给短剧/有声小说/教程/Vlog 配中文 TTS / macOS say 出来都是空音 / 我用 Tingting 配音听起来机器味重 / 我配音念稿一个调没起伏 / 我要多角色对白配音怎么分声线 / 我陆明的爽文台词怎么读出装逼范 / 我系统女音怎么有机械感 / 我反派…

- **Type:** Skill
- **Install:** `agentstack add skill-cyuanxv-ai-mandrama-skills-edge-tts-chinese-roleplay`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [cyuanxv](https://agentstack.voostack.com/s/cyuanxv)
- **Installs:** 0
- **Category:** [Cloud & Infrastructure](https://agentstack.voostack.com/c/cloud-infrastructure)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [cyuanxv](https://github.com/cyuanxv)
- **Source:** https://github.com/cyuanxv/ai-mandrama-skills/tree/main/skills/edge-tts-chinese-roleplay

## Install

```sh
agentstack add skill-cyuanxv-ai-mandrama-skills-edge-tts-chinese-roleplay
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# edge-tts 中文角色化 TTS 配音

## 何时使用本 Skill

- 任何中文内容需要"多角色 TTS 配音"且预算为 0（免费）
- 短剧/动态漫/有声小说/教程/Vlog/抖音解说/课程旁白
- 已踩过 macOS `say` 90% 中文 voice 是空音的坑
- 需要给视频按字幕时间码插入多段配音
- 念稿 TTS 没情绪起伏，要 SSML 调 rate/pitch

## 核心方法

### 第一步：装 edge-tts（一次性）

```bash
pip3 install edge-tts
edge-tts --list-voices | grep -E "zh-CN" | head -15
```

预期输出（**实际可用的中文 voice**）：
- `zh-CN-XiaoxiaoNeural` Female / News, Novel / Warm
- `zh-CN-XiaoyiNeural` Female / Cartoon, Novel / Lively
- `zh-CN-YunjianNeural` Male / Sports, Novel / Passion
- `zh-CN-YunxiNeural` Male / Novel / Lively, Sunshine
- `zh-CN-YunxiaNeural` Male / Cartoon, Novel / Cute
- `zh-CN-YunyangNeural` Male / News / Professional, Reliable
- 辽宁-XiaobeiNeural Female / Dialect / Humorous（东北话）
- 陕西-XiaoniNeural Female / Dialect / Bright（陕西话）

### 第二步：角色声线分配（4 类标配）

| 角色类型 | Voice | 风格描述 | 典型应用 |
|---|---|---|---|
| **爽文男主 / 阳光小说男** | `zh-CN-YunxiNeural` | 阳光男主，活泼，小说朗读型 | 陆明 / 韩立 / 男 vlog 主播 |
| **反派 / 粗暴男 / 怒吼路人** | `zh-CN-YunjianNeural` | 体育激情，粗暴男 | 队长1 / 路人惊恐喊救命 / 反派吼叫 |
| **萌系小丑 / 配角谄媚** | `zh-CN-YunxiaNeural` | 卡通可爱搞笑 | 配角男争抢 / 弹幕小丑 / 反差萌 |
| **系统女音 / 温柔旁白** | `zh-CN-XiaoxiaoNeural` | 温柔，新闻级，小说级 | 系统提示 / 旁白 / 智能助手 |

### 第三步：6 类情绪 rate/pitch 速查

```bash
edge-tts --voice "" --rate "" --pitch "" \
  --text "" --write-media output.mp3
```

| 情绪 | rate | pitch | 适用 | 示例 |
|---|---|---|---|---|
| **紧张惊恐喊叫** | +25% | +10Hz | 路人惊恐 / 反派怒吼 | "救命啊！" |
| **阳光调侃** | +8% | +3Hz | 男主轻松摆烂 | "不准训练哈！" |
| **沉重 OS 自嘲** | -5% | -3Hz | 男主内心独白 | "我叫陆明，上辈子内卷加班猝死" |
| **霸气定海一字** | -30% | -5Hz | 男主装逼定场 | "起——！" |
| **系统机械感** | -15% | -2Hz | 系统女音降速 | "恭喜宿主激活系统" |
| **谄媚小丑拔尖** | +20% | +10Hz | 配角谄媚抢戏 | "大佬选我！" |

### 第四步：ffmpeg 合到视频音轨

**核心命令**（多段 mp3 按时间码 adelay + volume 补 + amix 混合）：

```bash
ffmpeg -y -i input_video.mp4 \
  -i seg_01.mp3 -i seg_02.mp3 ... -i seg_15.mp3 \
  -i bgm.wav \
  -filter_complex "
[1:a]aresample=44100,adelay=500|500,volume=14[t1];
[2:a]aresample=44100,adelay=5500|5500,volume=14[t2];
...
[15:a]aresample=44100,adelay=52500|52500,volume=14[t15];
[16:a]aresample=44100,adelay=4000|4000,volume=0.18[bgm];
[t1][t2]...[t15][bgm]amix=inputs=16:dropout_transition=0[aout]" \
  -map 0:v -map "[aout]" \
  -c:v copy -c:a aac -b:a 192k -shortest \
  output.mp4
```

**关键参数说明**：
- `adelay=Nms|Nms` — 把这段音频在合成轨上向后挪 N 毫秒（左右声道都挪）
- `volume=14` — 每段 TTS 提升 14 倍（补 amix 自动衰减，N 段输入 amix 默认按 1/N 衰减）
- `volume=0.18` — BGM 降到 18% 不盖配音
- `amix=inputs=N:dropout_transition=0` — N 段混合，**不要加 `normalize=0`（老版 ffmpeg 不识别）**
- `-c:v copy` — 视频流不重编码
- `-shortest` — 最后一段音频结束时截断输出

### 第五步：节奏调整心法

文本本身的标点也参与节奏控制（edge-tts 在标点处自然停顿）：
- **加叹号 → 加强语气** → "起！" vs "起。"
- **加省略号 → 制造悬念断点** → "现在……你们，还觉得我是骗子吗？"
- **加破折号 → 拉长元音** → "起——！"
- **加逗号 → 自然停顿** → "抱歉各位，我已经选好队员了，就是她。"

## 关键案例

### 案例 1：末世招队员第一集 15 段配音（完整）

```bash
# 旁白沉重
edge-tts --voice "zh-CN-XiaoxiaoNeural" --rate="-10%" --pitch="-5Hz" \
  --text "末世，爆发第三年。" --write-media seg_01a.mp3

# 路人惊恐
edge-tts --voice "zh-CN-YunjianNeural" --rate="+25%" --pitch="+10Hz" \
  --text "救——命！啊！！" --write-media seg_01b.mp3

# 男主摆烂调侃
edge-tts --voice "zh-CN-YunxiNeural" --rate="+8%" --pitch="+3Hz" \
  --text "诶诶，不准训练哈！在我这，你只管摸鱼躺平就行。" --write-media seg_02.mp3

# 男主 OS 自嘲
edge-tts --voice "zh-CN-YunxiNeural" --rate="-5%" --pitch="-3Hz" \
  --text "我叫陆明。上辈子，内卷加班，猝死。" --write-media seg_04.mp3

# 系统机械感
edge-tts --voice "zh-CN-XiaoxiaoNeural" --rate="-15%" --pitch="-2Hz" \
  --text "恭喜宿主，激活末世摆烂系统。" --write-media seg_05.mp3

# 男主决绝
edge-tts --voice "zh-CN-YunxiNeural" --rate="-5%" --pitch="+2Hz" \
  --text "这一世，我陆明，要靠摆烂活到最后！" --write-media seg_06.mp3

# 反派怒吼
edge-tts --voice "zh-CN-YunjianNeural" --rate="+20%" --pitch="+5Hz" \
  --text "滚开！一个F级废物！还想进我的队！做梦！" --write-media seg_07.mp3

# 男主激动夸张
edge-tts --voice "zh-CN-YunxiNeural" --rate="+15%" --pitch="+8Hz" \
  --text "太好了！我的小队，就缺你这种人才！" --write-media seg_09.mp3

# 男主霸气一字
edge-tts --voice "zh-CN-YunxiNeural" --rate="-30%" --pitch="-5Hz" \
  --text "起——！" --write-media seg_10.mp3

# 男主戏谑
edge-tts --voice "zh-CN-YunxiNeural" --rate="-5%" --pitch="+0Hz" \
  --text "现在……你们，还觉得我是骗子吗？" --write-media seg_11.mp3

# 配角谄媚
edge-tts --voice "zh-CN-YunxiaNeural" --rate="+20%" --pitch="+10Hz" \
  --text "大佬选我！我有罐头！" --write-media seg_12.mp3

# 系统结算机械
edge-tts --voice "zh-CN-XiaoxiaoNeural" --rate="-15%" --pitch="-3Hz" \
  --text "F级治愈异能，废物级。补助奖励，已发放。" --write-media seg_14.mp3
```

## 决策标准

### 什么时候选哪个 voice

- **男主是"爽文/痞帅/温柔小说男主"** → `YunxiNeural`
- **男主是"老成稳重/新闻播音腔"** → `YunyangNeural`
- **男主是"萌系/可爱/反差搞笑"** → `YunxiaNeural`
- **场景需要"愤怒/激情/呐喊/恐惧"** → `YunjianNeural`
- **女声"温柔/旁白/系统"** → `XiaoxiaoNeural`
- **女声"清纯少女/活泼/卡通"** → `XiaoyiNeural`
- **方言搞笑（东北/陕西）** → `liaoning-XiaobeiNeural` / `shaanxi-XiaoniNeural`

### 什么时候不用 edge-tts

- 商业付费短剧/电视剧 → 真人配音演员
- 需要中英混读自然衔接 → Azure 付费版 / 火山引擎
- 实时对话（如 voicebot） → edge-tts 是批量场景，延迟不行

## 常见陷阱

### 陷阱 1：macOS `say` 90% 中文 voice 是空音

```bash
say -v "?" | grep zh_CN  # 列出 10 个看似可用的中文 voice
say -v Reed -o /tmp/test.aiff "你好"  # 但其实大部分不工作
afinfo /tmp/test.aiff | grep duration  # 显示 "0.015964 sec" = 空音
```

**实际能合成中文的只有**：`Tingting` (zh_CN 女) + `Sinji` (zh_HK 男/女混港味)。其他 Reed/Eddy/Sandy/Rocko/Flo/Grandma/Grandpa/Shelley 都是"虚假可用"——`say -v "?"` 列得出来但合不出真实音频，输出 0.02s 的头部空文件。

**解决**：跳过 macOS say，直接用 edge-tts。

### 陷阱 2：ffmpeg 老版 amix `normalize=` 不识别

```bash
# ❌ 报错 "Option 'normalize' not found"
amix=inputs=15:normalize=0[out]

# ✅ 删参数 + 用 volume= 手动补回 amix 自动衰减
amix=inputs=15[mix]; [mix]volume=14[out]
```

**原因**：`normalize` 是较新 ffmpeg 版本的 amix 滤镜选项，2018 年的 N-92585 版本没有。

### 陷阱 3：TTS 段音量被 BGM 盖掉

amix 默认每段输入按 1/N 自动衰减。15 段 TTS + 1 BGM 混合 → TTS 音量降到 1/16。**修复**：每段 TTS 用 `volume=14`（≈ N，补回去）+ BGM 用 `volume=0.18`（降到 18%）。

### 陷阱 4：多段 mp3 合到视频后音轨与画面错位

**原因**：mp3 编码有 ~50ms 静音 padding。**修复**：在 adelay 上做 -50ms 微调，或者用 wav 替代 mp3 输入（edge-tts 输出 mp3 但可用 ffmpeg 转 wav 一次性消除 padding）。

## 输出格式

调用本 Skill 帮用户做事时：
1. **先确认场景**：什么内容？多少段对白？什么角色？
2. **角色声线分配建议表**（列哪段用哪个 voice + rate + pitch）
3. **可执行的 edge-tts 命令清单**（每段一行）
4. **ffmpeg 合视频音轨命令**（含时间码 adelay 偏移 + volume 配方）
5. **预告"输出 N 个 mp3 文件 + 最终 mp4"**

## 关键参考

末世招队员第一集 15 段实战参数表（完整 voice + rate + pitch + 文本）见 `reference.md`（如有需要可补充）。

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [cyuanxv](https://github.com/cyuanxv)
- **Source:** [cyuanxv/ai-mandrama-skills](https://github.com/cyuanxv/ai-mandrama-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-cyuanxv-ai-mandrama-skills-edge-tts-chinese-roleplay
- Seller: https://agentstack.voostack.com/s/cyuanxv
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
