Эх сурвалжийг харах

docs(tts): 整合所有 TTS 文档 + 声音设计 + 总入口

基于用户下载的 tts音色/ 目录,补充两份新文档:

1. docs/cosyvoice-voice-design.md (160 行)
   - 完整声音设计流程(描述 → 创建 → 使用)
   - CosyVoice v3.5-plus / v3.5-flash / v3-plus / v3-flash 都支持
   - Qwen-TTS 3 个 vd 模型支持
   - 100 字符 prompt 规则 + 7 个推荐维度 + 5 个官方示例
   - 计费(0.2 元/个,90 天内 10 次免费)
   - 1000 个音色配额(账号级别)
   - 项目整合路径(后端 service + 5 个 REST 路由 + 前端向导)

2. docs/tts-overview.md (新建, TTS 文档总入口)
   - 文档索引(5 个详细文档 + 1 个矩阵)
   - 整体架构图(Edge / 阿里云 / 声音设计 三层)
   - 决策表(用户场景 → 推荐 vendor+模型+音色)
   - 自动化脚本清单
   - 未来路线图(语言选择 → 声音设计 → SSML/复刻)
   - commit 历史

3. docs/tts-aliyun-voice.md (整合)
   - 顶部加文档导览交叉链接
   - 末尾追加 Qwen-TTS 完整 48 音色表
   - 文件从 249 行扩到 380 行

4. qwen-tts-voices-full.md (保留作附录)

5. .gitignore (加 tts音色/)
   - 用户本地下载的 HTML 不入 git

总文档体系覆盖:
- Edge TTS 75 语言 / 316 音色
- 阿里云 CosyVoice 系统音色 216 个
- Qwen-TTS 系统音色 48 个
- 声音设计(v3.5/v3/Qwen-TTS)
- 模型×语言×音色 矩阵(用户选语言核心数据库)
- 完整脚本可复现(playwright + Node.js)
MyFramework User 1 сар өмнө
parent
commit
7243a3249d

+ 1 - 0
.gitignore

@@ -19,3 +19,4 @@ __pycache__/
 tmp/
 server/logs/
 server/cache/
+tts音色/

+ 250 - 0
docs/cosyvoice-voice-design.md

@@ -0,0 +1,250 @@
+# CosyVoice / Qwen-TTS 声音设计指南
+
+> 数据来源:阿里云官方 [声音设计文档](https://help.aliyun.com/zh/model-studio/voice-design),
+> 用户下载到 `tts音色/声音设计-...html` 后 playwright 渲染抽取。
+> 文档生成时间:2026-07。
+
+## 一、什么是"声音设计"
+
+**声音设计(Voice Design)** 是阿里云百炼提供的一条**合成新音色**的路径,**无需训练数据,纯文本描述即可生成音色**。
+
+适用场景:
+- **快速原型验证** — 给 AI 助手 / 游戏角色试不同人设
+- **创意内容生产** — 给虚拟主播 / 短视频创作者设计独特声音
+- **游戏角色配音** — 为 NPC 创造专属声音
+
+和**声音复刻**的区别:
+| 维度 | 声音设计 | 声音复刻 |
+|------|---------|----------|
+| 输入 | 自然语言描述 | 真实音频样本 |
+| 是否需要录音 | ❌ 不需要 | ✅ 需要 |
+| 适合 | 创造新声音形象 | 还原特定人声 |
+| 自由度 | 由 Prompt 决定(可多次尝试) | 固定基于样本 |
+
+## 二、支持的模型与地域
+
+### CosyVoice 系列
+- ✅ `cosyvoice-v3.5-plus`(北京)
+- ✅ `cosyvoice-v3.5-flash`(北京)
+- ✅ `cosyvoice-v3-plus`(北京)
+- ✅ `cosyvoice-v3-flash`(北京)
+
+> ⚠️ CosyVoice 声音设计**仅支持北京地域**,其他地域不可用。
+
+### Qwen-TTS 系列
+- ✅ `qwen3-tts-vd-2026-01-26`(北京 — 最新快照)
+- ✅ `qwen3-tts-vd-realtime-2026-01-15`(北京 + 新加坡)
+- ✅ `qwen3-tts-vd-realtime-2025-12-16`(快照版)
+
+> 声音描述长度上限:**2048 字符**(Qwen-TTS)。
+
+## 三、声音描述 prompt 怎么写
+
+### 1. 核心规则(必须遵守)
+- **字数限制 100 字符**(汉字按 2,其他按 1)
+- **描述语只支持中文/英文**
+- **具体而非模糊**:用"低沉 / 清脆 / 语速偏快"
+- **多维而非单一**:组合"性别 + 年龄 + 情感 + 用途"
+- **客观而非主观**:用"音调偏高,带有活力"
+- **原创而非模仿**:不要求模仿特定人物(版权风险)
+- **简洁而非冗余**
+
+### 2. 7 个推荐描述维度
+
+| 维度 | 可选值 |
+|------|--------|
+| 性别 | 男性 / 女性 / 中性 |
+| 年龄 | 儿童(5-12) / 青少年(13-18) / 青年(19-35) / 中年(36-55) / 老年(55+) |
+| 音调 | 高音 / 中音 / 低音 / 偏高 / 偏低 |
+| 语速 | 快速 / 中速 / 缓慢 / 偏快 / 偏慢 |
+| 情感 | 开朗 / 沉稳 / 温柔 / 严肃 / 活泼 / 冷静 / 治愈 |
+| 特点 | 有磁性 / 清脆 / 沙哑 / 圆润 / 甜美 / 浑厚 / 有力 |
+| 用途 | 新闻播报 / 广告配音 / 有声书 / 动画角色 / 语音助手 / 纪录片 |
+
+### 3. 官方示例
+
+```
+✅ 标准播音风格:吐字清晰精准,字正腔圆
+
+✅ 年轻活泼女性:语速较快,带有明显的上扬语调,适合介绍时尚产品
+
+✅ 沉稳中年男性:语速缓慢,音色低沉有磁性,适合朗读新闻或纪录片解说
+
+✅ 温柔知性女性:30 岁左右,语调平和,适合有声书朗读
+
+✅ 可爱儿童:大约 8 岁女孩,说话略带稚气,适合动画角色配音
+```
+
+### 4. 同一描述 → 不同结果(有随机性)
+
+阿里云官方原话:**"声音设计具有随机性,相同描述可能生成略有差异的音色。建议多次生成后试听,择优使用。"**
+
+→ 产品设计建议:让用户**预览 + 重生成**至少 2-3 次,挑最好的保存。
+
+## 四、CosyVoice 声音设计完整流程
+
+### 步骤 1 — 通过文本描述创建音色
+
+```bash
+curl -X POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
+  -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
+  -H "Content-Type: application/json" \
+  -d '{
+    "model": "voice-enrollment",
+    "input": {
+      "action": "create_voice",
+      "target_model": "cosyvoice-v3.5-plus",
+      "voice_prompt": "沉稳的中年男性播音员,音色低沉浑厚,富有磁性,语速平稳,吐字清晰,适合用于新闻播报或纪录片解说。",
+      "preview_text": "各位听众朋友,大家好,欢迎收听晚间新闻。",
+      "prefix": "announcer"
+    },
+    "parameters": {
+      "sample_rate": 24000,
+      "response_format": "wav"
+    }
+  }'
+```
+
+返回:
+```json
+{
+  "output": {
+    "voice_id": "voice_announcer_xxxxxx",
+    "preview_audio_url": "https://...mp3"
+  }
+}
+```
+
+### 步骤 2 — 用创建的 voice_id 合成语音
+
+```python
+import dashscope, os
+from dashscope.audio.tts_v2 import SpeechSynthesizer
+
+dashscope.api_key = os.environ['DASHSCOPE_API_KEY']
+dashscope.base_websocket_api_url = 'wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'
+
+# 关键:声音设计、语音合成要使用相同的模型
+synthesizer = SpeechSynthesizer(
+    model='cosyvoice-v3.5-plus',          # ← 同一个模型
+    voice='voice_announcer_xxxxxx',        # ← 步骤1返回的 voice_id
+)
+audio = synthesizer.call("今天天气怎么样?")
+with open('output.mp3', 'wb') as f:
+    f.write(audio)
+```
+
+### Qwen-TTS 流程类似
+
+```python
+import dashscope, os
+from dashscope.audio.tts_v2 import SpeechSynthesizer
+
+VOICE_PROMPT = "年轻活泼的女性声音,语速较快,带有明显的上扬语调,适合介绍时尚产品。"
+TARGET_MODEL = "qwen3-tts-vd-2026-01-26"  # 声音设计 / 合成 必须用同一个
+
+# 创建音色
+from dashscope.audio.tts_v2 import VoiceEnrollment
+resp = VoiceEnrollment.create_voice(
+    target_model=TARGET_MODEL,
+    voice_prompt=VOICE_PROMPT,
+    preferred_name='my_voice',
+)
+voice_id = resp.output.voice_id
+
+# 用新音色合成
+synth = SpeechSynthesizer(model=TARGET_MODEL, voice=voice_id)
+audio = synth.call("你好,世界")
+```
+
+## 五、配额与计费
+
+### 限额
+- **每个账号最多 1000 个自定义音色**(CosyVoice / Qwen-TTS **各自独立**计算)
+- 1 年未使用自动清理
+
+### 计费
+| 模型 | 创建费用 |
+|------|---------|
+| **CosyVoice** | ✅ 免费 |
+| **Qwen-TTS** | 0.2 元/个(创建失败不收费) |
+
+### 新用户免费额度
+- 开通后 90 天内可享 **10 次免费**音色创建
+- 仅限北京地域
+- 创建失败不占用免费次数
+
+## 六、产品设计建议(给"用户选音色"功能的)
+
+### 系统音色 vs 自定义音色(用户视角)
+
+```
+音色选择 (UI)
+├── 系统音色(开箱即用)
+│   ├── CosyVoice v3-flash 系统音色(88 个)
+│   ├── Qwen3-TTS 系统音色(48 个)
+│   └── Edge TTS 系统音色(316 个)
+└── 自定义音色(声音设计创建)
+    ├── 我设计过(列表显示)
+    └── 现在设计一个
+```
+
+### 关键 UX 设计要点
+
+1. **每次创建都先试听预览,用户满意再保存**(避免一次性扣费 + 用户后悔)
+2. **保留多次创建的能力**(同一个 prompt 可能产生 2-3 个不同结果,用户挑最好的)
+3. **失败时显式提示**(返回 "preview_text 没有发音"/"网络错误" 等)
+4. **支持删除**(释放配额,避免 1000 个上限)
+5. **建议首选 CosyVoice**(免费 + 支持中英双语描述)
+
+## 七、与现有项目整合的位置
+
+### 后端服务
+- 新建 `server/src/services/voice-design.service.ts`(声音设计 API 封装)
+- 复用 `server/.env` 里的 `DASHSCOPE_API_KEY`(API Key 已配好)
+- 新建控制器路由:
+  - `POST /api/tts/voice-design/preview`(创建 + 预览,**不保存**)
+  - `POST /api/tts/voice-design/save`(保存到账户)
+  - `GET /api/tts/voice-design/list`(查已有自定义音色)
+  - `DELETE /api/tts/voice-design/:voice_id`(删除)
+  - 所有路由要强制 `target_model` = `voice_id` 创建时的模型(否则音色不匹配)
+
+### 前端 UI(后续开发)
+- 现有音色选择器旁加"+"按钮 → 进入声音设计向导:
+  1. 选模型(CosyVoice v3.5-plus 推荐免费)
+  2. 输入描述(或选模板示例)
+  3. 调 `/preview` 接口拿预览音频播放
+  4. "重新生成"重复 3
+  5. "保存"调 `/save` 接口
+- 音色保存后存 `Book.book.voiceId`(已存在的字段,扩展支持用户自定义音色 ID)
+
+### 与"语言选择"功能的关系
+- 声音描述语言:**只支持中/英文**(`voice_prompt` 字段)
+- 但生成的音色 **可以用于合成多语言语音**(比如生成"温柔女声"后,可以用来合成英语/日语文本)
+- 如果"用户选日语 + 声音设计" → prompt 用中英文写,生成新音色后合成日语文本
+
+## 八、与 `cosyvoice-voice-list` 系统音色的本质区别
+
+| 维度 | 系统音色(`voice-list`) | 声音设计(`voice-design`) |
+|------|----------------------|---------------------------|
+| 来源 | 阿里云预训练 | 用户文本描述实时生成 |
+| 数量 | 216 个(CosyVoice)/ 48 个(Qwen) | 上限 1000 个/账号 |
+| 稳定性 | 确定性,固定可重现 | 有随机性,需试听择优 |
+| 成本 | 0 | CosyVoice 免费 / Qwen-TTS 0.2 元 |
+| 速度 | 立即可用 | 1-5 秒生成预览 |
+| 后端代码 | `ALIYUN_VOICE_MAP` 直接列名字 | 需要 API 调用 + 用户保存 |
+
+## 九、迁移指引
+
+实现完整"声音设计"功能的预估工作量:
+- **后端**(2-3 天):
+  - `voice-design.service.ts` 封装阿里云 API
+  - 5 个 REST 路由
+  - 自定义音色列表查询(整合到现有 `pickTtsVendor()` 路由)
+- **前端**(2-3 天):
+  - 声音设计向导页(4 步流程)
+  - 预览音频播放器(网页 audio 标签)
+  - 用户自定义音色列表管理
+- **测试**(1 天):每种模型 + 各种 prompt 类型的端到端
+
+完整的功能开发建议在"用户选语言"功能稳定后再做(用户反映"想要更多音色")时启动。

+ 132 - 1
docs/tts-aliyun-voice.md

@@ -4,7 +4,24 @@
 
 **项目当前默认:** Edge TTS(因为免费),阿里云是降级/fallback 选项。要切换默认改 `server/src/config/models.json` 的 `tts.defaultVendor: bailian`。
 
-## 关键配置文件
+---
+
+## 📑 文档导览
+
+| 文档 | 内容 |
+|------|------|
+| 👉 **本文档 (`tts-aliyun-voice.md`)** | 配置 + 项目默认音色 + CosyVoice/Qwen-TTS 指令指南 + Qwen-TTS 完整 48 音色 + 4 个 CosyVoice 模型的系统音色摘要 |
+| [`alicloud-tts-lang-voice-matrix.md`](alicloud-tts-lang-voice-matrix.md) | 模型 × 语言 × 音色 矩阵 — **"用户选语言"功能核心数据库** |
+| [`cosyvoice-voice-design.md`](cosyvoice-voice-design.md) | 声音设计完整指南(基于阿里云官方页) — v3.5 / v3 / Qwen-TTS 都支持,文本描述即可创建新音色 |
+| [`qwen-tts-voices-full.md`](qwen-tts-voices-full.md) | Qwen-TTS 详细附录(含分类速查表) |
+
+**相关但独立的文档:**
+- [`tts-edge-languages.md`](tts-edge-languages.md) — Edge TTS 75 语言 / 316 音色
+- [`tts-comprehensive.md`](tts-comprehensive.md) — TTS 系统总览(跨 vendor 比较)
+
+---
+
+## 1. 关键配置文件
 
 ### 1. `server/.env`
 
@@ -247,3 +264,117 @@ if (params.pitch !== 0) instructions.push(`音调${params.pitch > 0 ? '较高' :
 - **优先用声音特征描述(性别 + 年龄 + 音调)**,避免纯情绪词("治愈的"),后者难以稳定生成
 - **不要混用语言**,指令要全中文(系统音色)或全英文/全日文(复刻音色)
 - **自定义音色的指令自由度更高**,可以实验长 prompt,但要测听感
+## Qwen-TTS 音色清单(完整,官方页面抓取)
+
+> 数据来源:[阿里云 Qwen-TTS 音色列表](https://help.aliyun.com/zh/model-studio/qwen-tts-voice-list),2026-07 用 playwright 渲染抓取。共 48 个音色。
+
+| 音色名 | 描述 | 性别 |
+|--------|------|------|
+| `芊悦` | 阳光积极、亲切自然小姐姐 | 女 |
+| `苏瑶` | 温柔小姐姐 | 女 |
+| `晨煦` | 标准普通话,带部分北方口音。阳光、温暖、活力、朝气 | 男 |
+| `千雪` | 二次元虚拟女友 | 女 |
+| `茉兔` | 撒娇搞怪,逗你开心 | 女 |
+| `十三` | 拽拽的、可爱的小暴躁 | 女 |
+| `月白` | 率性帅气的月白 | 男 |
+| `四月` | 知性与温柔的碰撞 | 女 |
+| `凯` | 耳朵的一场SPA | 男 |
+| `不吃鱼` | 不会翘舌音的设计师 | 男 |
+| `萌宝` | 喝酒不打醉拳的小萝莉 | 女 |
+| `詹妮弗` | 品牌级、电影质感般美语女声 | 女 |
+| `甜茶` | 节奏拉满,戏感炸裂,真实与张力共舞 | 男 |
+| `卡捷琳娜` | 御姐音色,韵律回味十足 | 女 |
+| `艾登` | 精通厨艺的美语大男孩 | 男 |
+| `沧明子` | 沉稳睿智的老者,沧桑如松却心明如镜 | 男 |
+| `乖小妹` | 温顺如春水,乖巧如初雪 | 女 |
+| `沙小弥` | 聪明伶俐的小大人,童真未泯却早慧如禅 | 男 |
+| `燕铮莺` | 声音洪亮,吐字清晰,人物鲜活,听得人热血沸腾;金戈铁马入梦来,字正腔圆间尽显千面人声的江湖 | 女 |
+| `田叔` | 一口独特的沙哑烟嗓,一开口便道尽了千军万马与江湖豪情 | 男 |
+| `萌小姬` | “萌属性”爆棚的小萝莉 | 女 |
+| `阿闻` | 平直的基线语调,字正腔圆的咬字发音,这就是最专业的新闻主持人 | 男 |
+| `墨讲师` | 既保持学科严谨性,又通过叙事技巧将复杂知识转化为可消化的认知模块 | 女 |
+| `徐大爷` | 被岁月和旱烟浸泡过的质朴嗓音,不疾不徐地摇开了满村的奇闻异事 | 男 |
+| `邻家妹妹` | 糯米糍一样又软又黏的嗓音,那一声声拉长了的“哥哥”,甜得能把人的骨头都叫酥了 | 女 |
+| `小婉` | 温和舒缓的声线,助你更快地进入睡眠,晚安,好梦 | 女 |
+| `顽屁小孩` | 调皮捣蛋却充满童真的他来了,这是你记忆中的小新吗 | 男 |
+| `少女阿月` | 平时是甜到发腻的迷糊少女音,但在喊出“代表月亮消灭你”时,瞬间充满不容置疑的爱与正义 | 女 |
+| `博德加` | 热情的西班牙大叔 | 男 |
+| `索尼莎` | 热情开朗的拉美大姐 | 女 |
+| `阿列克` | 一开口,是战斗民族的冷,也是毛呢大衣下的暖 | 男 |
+| `多尔切` | 慵懒的意大利大叔 | 男 |
+| `素熙` | 温柔开朗,情绪丰富的韩国欧尼 | 女 |
+| `小野杏` | 鬼灵精怪的青梅竹马 | 女 |
+| `莱恩` | 理性是底色,叛逆藏在细节里——穿西装也听后朋克的德国青年 | 男 |
+| `埃米尔安` | 浪漫的法国大哥哥 | 男 |
+| `安德雷` | 声音磁性,自然舒服、沉稳男生 | 男 |
+| `拉迪奥·戈尔` | 足球诗人Rádio Gol!今天我要用名字为你们解说足球 | 男 |
+| `上海-阿珍` | 风风火火的沪上阿姐 | 女 |
+| `北京-晓东` | 北京胡同里长大的少年 | 男 |
+| `南京-老李` | 耐心的瑜伽老师 | 男 |
+| `陕西-秦川` | 面宽话短,心实声沉——老陕的味道 | 男 |
+| `闽南-阿杰` | 诙谐直爽、市井活泼的台湾哥仔形象 | 男 |
+| `天津-李彼得` | 天津相声,专业捧哏 | 男 |
+| `四川-晴儿` | 甜到你心里的川妹子 | 女 |
+| `四川-程川` | 一个跳脱市井的四川成都男子 | 男 |
+| `粤语-阿强` | 幽默风趣的阿强,在线陪聊 | 男 |
+| `粤语-阿清` | 甜美的港妹闺蜜 | 女 |
+
+### 外语音色(按语言)
+
+| 音色名 | 描述 | 性别 |
+|--------|------|------|
+| `詹妮弗` | 品牌级、电影质感般美语女声 | 女 |
+| `艾登` | 精通厨艺的美语大男孩 | 男 |
+| `博德加` | 热情的西班牙大叔 | 男 |
+| `索尼莎` | 热情开朗的拉美大姐 | 女 |
+| `多尔切` | 慵懒的意大利大叔 | 男 |
+| `素熙` | 温柔开朗,情绪丰富的韩国欧尼 | 女 |
+| `莱恩` | 理性是底色,叛逆藏在细节里——穿西装也听后朋克的德国青年 | 男 |
+| `埃米尔安` | 浪漫的法国大哥哥 | 男 |
+
+### 中文方言/地区音色
+
+| 音色名 | 描述 | 性别 |
+|--------|------|------|
+| `上海-阿珍` | 风风火火的沪上阿姐 | 女 |
+| `北京-晓东` | 北京胡同里长大的少年 | 男 |
+| `南京-老李` | 耐心的瑜伽老师 | 男 |
+| `陕西-秦川` | 面宽话短,心实声沉——老陕的味道 | 男 |
+| `闽南-阿杰` | 诙谐直爽、市井活泼的台湾哥仔形象 | 男 |
+| `天津-李彼得` | 天津相声,专业捧哏 | 男 |
+| `四川-晴儿` | 甜到你心里的川妹子 | 女 |
+| `四川-程川` | 一个跳脱市井的四川成都男子 | 男 |
+| `粤语-阿强` | 幽默风趣的阿强,在线陪聊 | 男 |
+| `粤语-阿清` | 甜美的港妹闺蜜 | 女 |
+
+### 角色/特色音色
+
+| 音色名 | 描述 | 性别 |
+|--------|------|------|
+| `不吃鱼` | 不会翘舌音的设计师 | 男 |
+| `萌宝` | 喝酒不打醉拳的小萝莉 | 女 |
+| `沧明子` | 沉稳睿智的老者,沧桑如松却心明如镜 | 男 |
+| `沙小弥` | 聪明伶俐的小大人,童真未泯却早慧如禅 | 男 |
+| `萌小姬` | “萌属性”爆棚的小萝莉 | 女 |
+| `顽屁小孩` | 调皮捣蛋却充满童真的他来了,这是你记忆中的小新吗 | 男 |
+| `博德加` | 热情的西班牙大叔 | 男 |
+| `多尔切` | 慵懒的意大利大叔 | 男 |
+| `上海-阿珍` | 风风火火的沪上阿姐 | 女 |
+| `北京-晓东` | 北京胡同里长大的少年 | 男 |
+| `南京-老李` | 耐心的瑜伽老师 | 男 |
+| `闽南-阿杰` | 诙谐直爽、市井活泼的台湾哥仔形象 | 男 |
+
+### 选型速查
+
+| 场景 | 推荐音色 |
+|------|---------|
+| **有声书/广播剧(温柔女)** | 芊悦(Cherry,默认)、苏瑶、四月 |
+| **有声书(磁性男)** | 凯、晨煦(带北方口音)、安德雷 |
+| **新闻播报** | 阿闻(最专业主持人)、晨煦 |
+| **儿童/童趣** | 萌宝(小萝莉)、十三(拽拽小暴躁)、顽屁小孩(调皮捣蛋)、沙小弥(小大人) |
+| **品牌级朗读** | 詹妮弗(电影质感美语女声)、御姐系卡捷琳娜 |
+| **戏感配音** | 甜茶(节奏张力) |
+| **老者/沉稳** | 沧明子(沧桑睿智)、徐大爷(沙哑烟嗓) |
+| **方言版本** | 上海-阿珍、北京-晓东、南京-老李、陕西-秦川、闽南-阿杰、天津-李彼得、四川-晴儿/程川、粤语-阿强/阿清 |
+| **欧美外语** | 詹妮弗/艾登(美)、莱恩(德)、埃米尔安(法)、博德加(西班牙,热情大叔)、拉迪奥·戈尔(葡,足球解说) |
+| **东亚/俄** | 素熙(韩)、小野杏(日)、阿列克(俄,战斗民族冷) |

+ 131 - 0
docs/tts-overview.md

@@ -0,0 +1,131 @@
+# TTS 系统文档总览
+
+> 这是项目所有 TTS 相关文档的总入口。从这里出发找到你想了解的细节。
+
+---
+
+## 📚 文档索引
+
+### 🎯 核心数据(未来做"语言选择"功能必备)
+| 文档 | 内容 | 行数 |
+|------|------|------|
+| 👉 [`alicloud-tts-lang-voice-matrix.md`](alicloud-tts-lang-voice-matrix.md) | **模型 × 语言 × 音色矩阵**(4 个 CosyVoice + Qwen-TTS 共 264 音色 × 19 标准化语言) | 146 |
+
+### 📘 详细分文档
+| 文档 | 内容 |
+|------|------|
+| [`tts-edge-languages.md`](tts-edge-languages.md) | Edge TTS 75 语言 / 316 音色(免费,默认 vendor) |
+| [`tts-aliyun-voice.md`](tts-aliyun-voice.md) | 阿里云百炼配置 + 项目默认音色 + CosyVoice 指令使用指南 + Qwen-TTS 完整 48 音色 |
+| [`qwen-tts-voices-full.md`](qwen-tts-voices-full.md) | Qwen-TTS 详细附录(独立备份) |
+| [`cosyvoice-voice-design.md`](cosyvoice-voice-design.md) | **声音设计**完整指南(v3.5 / v3 / Qwen-TTS 都支持) |
+
+---
+
+## 🏗️ 整体架构
+
+```
+                         TTS 路由
+                           │
+        ┌──────────────────┼──────────────────┐
+        │                  │                  │
+   ┌────▼─────┐      ┌─────▼─────┐    ┌──────▼──────┐
+   │ Edge TTS │      │ 阿里云百炼  │    │ (未来声音设计) │
+   │  (默认)  │      │ (付费更好)  │    │  (用户自创)  │
+   └────┬─────┘      └─────┬─────┘    └──────────────┘
+        │                  │
+   316 音色            264 音色
+   75 语言              11 标准化语言
+   free                ~¥0.00003/字
+```
+
+---
+
+## 🚀 默认 / 决策表
+
+| 用户场景 | 推荐 vendor | 模型 | 默认音色 |
+|---------|-----------|------|---------|
+| 默认(免费,够用) | edge | edge-tts | `zh-CN-XiaoxiaoNeural` |
+| 中文有声书(高质量) | bailian | cosyvoice-v3-flash | `longanhuan_v3`(支持 9 种方言) |
+| 多语言有声书 | bailian | qwen3-tts-instruct-flash | `Cherry`(芊悦,中英日韩) |
+| 英语专业朗读 | bailian | qwen3-tts-instruct-flash | `詹妮弗`(美式电影质感) |
+| 自定义独特声音 | bailian | cosyvoice-v3.5-plus | 用户描述创建 |
+
+---
+
+## 📊 关键数据(从官方文档抓取)
+
+| 项目 | 数量 |
+|------|------|
+| Edge TTS 支持的语言 | 75 |
+| Edge TTS 音色 | 316 |
+| 阿里云 CosyVoice 系统音色 | 216(v3-flash 88 + v3-plus 2 + v2 106 + v1 20) |
+| 阿里云 Qwen-TTS 系统音色 | 48 |
+| 阿里云支持的标准化语言/方言 | 19 |
+| 项目实际使用的"龙"系列 CosyVoice | 10 |
+
+---
+
+## 🛠️ 自动化脚本
+
+| 脚本 | 用途 |
+|------|------|
+| `scripts/gen-edge-tts-doc.js` | 从 edge-tts --list-voices 生成 Edge TTS 文档 |
+| `scripts/scrape-alicloud-qwen-tts.js` | 用 playwright 抓阿里云 Qwen-TTS SPA 页面 |
+| `scripts/parse-qwen-tts-dom.js` | DOM → Qwen-TTS markdown 表格 |
+| `scripts/parse-cosyvoice-dom.py` | DOM → CosyVoice voices JSON |
+| `scripts/analyze-model-lang-matrix.py` | DOM → 模型 × 语言 × 音色矩阵 JSON |
+| `scripts/gen-lang-matrix-doc.js` | JSON → 矩阵 markdown 文档 |
+| `scripts/gen-aliyun-tts-doc.js` | 代码 + 权威资料 → 阿里云 TTS 主文档 |
+| `scripts/render-local-html.js` | playwright 渲染本地下载的 HTML |
+
+---
+
+## 🗺️ 用户下载的本地资料(未入 git)
+
+在 `tts音色/` 目录(本地),由用户从阿里云官方下载:
+
+| 文件 | 来源 |
+|------|------|
+| `Qwen-TTS音色列表-...html` | https://help.aliyun.com/zh/model-studio/qwen-tts-voice-list |
+| `系统预置音色参数与特性列表-...html` | 系统音色完整参数表 |
+| `声音设计-...html` | 声音设计指南(v3.5 / v3 / Qwen-TTS) |
+| `SSML 与 LaTeX-...html` | 高级 SSML 语法(暂未读) |
+
+> 这些文件**不入 git**(已在 .gitignore),用作脚本的输入数据源。
+
+---
+
+## 🗓️ 未来开发路线图
+
+### 第一阶段:语言选择功能
+- [x] 完整摸清模型×语言×音色矩阵(见 `alicloud-tts-lang-voice-matrix.md`)
+- [ ] 入仓矩阵 JSON 数据
+- [ ] 后端 `/api/tts/languages` 接口
+- [ ] 前端"语言选择器" UI
+
+### 第二阶段:声音设计功能
+- [ ] 完成后端 `voice-design.service.ts`(基于 `cosyvoice-voice-design.md`)
+- [ ] 前端"声音设计向导" 4 步流程
+- [ ] 用户自定义音色列表管理
+
+### 第三阶段:高级特性
+- [ ] SSML 支持(用 `SSML 与 LaTeX.html` 内容)
+- [ ] 声音复刻功能(录制 → 训练 → 复刻特定声音)
+- [ ] 实时 vs 非实时双路径切换(已部分实现)
+
+---
+
+## 📝 关键 commit 历史
+
+| Commit | 内容 |
+|-------|------|
+| `cec5ed14` | Edge TTS 语言文档 |
+| `de77fb37` | CosyVoice 指令使用指南 |
+| `438d49fc` | Qwen-TTS 48 音色 + 抓取脚本 |
+| `506b8e4f` | 阿里云 TTS 配置 + 11 项目音色 |
+| `99275640` | **模型 × 语言 × 音色矩阵** |
+
+---
+
+**最后更新:** 2026-07-12
+**维护者:** Claude / caojunfei