Skip to content

🍦 ChatTTS-Forge is a project developed around the TTS generation model ChatTTS, implementing an API Server and a Gradio-based WebUI.

License

Notifications You must be signed in to change notification settings

lenML/ChatTTS-Forge

Repository files navigation

cn | en | Discord Server

🍦 ChatTTS-Forge

ChatTTS-Forge 是一个围绕 TTS 生成模型 ChatTTS 开发的项目,实现了 API Server 和 基于 Gradio 的 WebUI。

banner

你可以通过以下几种方式体验和部署 ChatTTS-Forge:

- 描述 链接
在线体验 部署于 HuggingFace 中 HuggingFace Spaces
一键启动 点击按钮,一键启动 Colab Open In Colab
容器部署 查看 docker 部分 Docker
本地部署 查看环境准备部分 本地部署

1. INDEX

2. GPU 显存要求

2.1. 加载模型显存要求

数据类型 加载 ChatTTS 模型 加载 Enhancer 模型
float32 2GB 3GB
half 1GB 1.5GB

2.2. Batch Size 显存要求

数据类型 Batch Size 不开启 Enhancer 开启 Enhancer
float32 ≤ 4 2GB 4GB
float32 8 4~10GB 6~14GB
half ≤ 4 2GB 4GB
half 8 2~6GB 4~8GB

注释:

  • Batch Size 为 4 以内时,4GB 显存足够进行推理。
  • Batch Size 为 8 时,需 6~14GB 显存。
  • Half Batch Size 为上表中的 Batch Size 的一半,显存要求也相应减半。

3. Installation and Running

  1. 确保 相关依赖 已经正确安装,
  2. 根据你的需求启动需要的服务。
  • webui: python webui.py
  • api: python launch.py

3.1. webui features

点我看详细图文介绍

  • ChatTTS 模型原生功能 Refiner/Generate
  • 原生 Batch 合成,高效合成超长文本
  • Style control
  • SSML
    • Editor: 简单的 SSML 编辑,配合其他功能使用
    • Spliter:超长文本分割预处理
    • Podcast: 支持创建编辑播客脚本
  • Speaker
    • 内置音色:内置众多 speaker 可以使用
    • speaker creator: 支持试音抽卡,创建 speaker
    • embdding: 支持 speaker embdding 上传,可以复用保存下来的 speaker
    • speaker merge: 支持合并说话人,微调 speaker
  • Prompt Slot
  • Text Normalize
  • 音质增强:
    • enhance: 音质增强提高输出质量
    • denoise: 去除噪音
  • Experimental 实验功能
    • fintune
      • speaker embedding
      • [WIP] GPT lora
      • [WIP] AE
    • [WIP] ASR
    • [WIP] Inpainting

3.2. launch.py: API Server

某些情况,你并不需要 webui,那么可以使用这个脚本启动单纯的 api 服务。

launch.py 脚本启动成功后,你可以在 /docs 下检查 api 是否开启。

详细 API 文档

3.2.1. How to link to SillyTavern?

通过 /v1/xtts_v2 系列 api,你可以方便的将 ChatTTS-Forge 连接到你的 SillyTavern 中。

下面是一个简单的配置指南:

  1. 点开 插件拓展
  2. 点开 TTS 插件配置部分
  3. 切换 TTS ProviderXTTSv2
  4. 勾选 Enabled
  5. 选择/配置 Voice
  6. [关键] 设置 Provider Endpointhttp://localhost:7870/v1/xtts_v2

sillytavern_tts

4. demo

4.1. 风格化控制

input
<speak version="0.1">
    <voice spk="Bob" seed="42" style="narration-relaxed">
        下面是一个 ChatTTS 用于合成多角色多情感的有声书示例[lbreak]
    </voice>
    <voice spk="Bob" seed="42" style="narration-relaxed">
        黛玉冷笑道:[lbreak]
    </voice>
    <voice spk="female2" seed="42" style="angry">
        我说呢 [uv_break] ,亏了绊住,不然,早就飞起来了[lbreak]
    </voice>
    <voice spk="Bob" seed="42" style="narration-relaxed">
        宝玉道:[lbreak]
    </voice>
    <voice spk="Alice" seed="42" style="unfriendly">
        “只许和你玩 [uv_break] ,替你解闷。不过偶然到他那里,就说这些闲话。”[lbreak]
    </voice>
    <voice spk="female2" seed="42" style="angry">
        “好没意思的话![uv_break] 去不去,关我什么事儿? 又没叫你替我解闷儿 [uv_break],还许你不理我呢” [lbreak]
    </voice>
    <voice spk="Bob" seed="42" style="narration-relaxed">
        说着,便赌气回房去了 [lbreak]
    </voice>
</speak>
output
default.webm

4.2. 长文本生成

input

中华美食,作为世界饮食文化的瑰宝,以其丰富的种类、独特的风味和精湛的烹饪技艺而闻名于世。中国地大物博,各地区的饮食习惯和烹饪方法各具特色,形成了独树一帜的美食体系。从北方的京鲁菜、东北菜,到南方的粤菜、闽菜,无不展现出中华美食的多样性。

在中华美食的世界里,五味调和,色香味俱全。无论是辣味浓郁的川菜,还是清淡鲜美的淮扬菜,都能够满足不同人的口味需求。除了味道上的独特,中华美食还注重色彩的搭配和形态的美感,让每一道菜品不仅是味觉的享受,更是一场视觉的盛宴。

中华美食不仅仅是食物,更是一种文化的传承。每一道菜背后都有着深厚的历史背景和文化故事。比如,北京的烤鸭,代表着皇家气派;而西安的羊肉泡馍,则体现了浓郁的地方风情。中华美食的精髓在于它追求的“天人合一”,讲究食材的自然性和烹饪过程中的和谐。

总之,中华美食博大精深,其丰富的口感和多样的烹饪技艺,构成了一个充满魅力和无限可能的美食世界。无论你来自哪里,都会被这独特的美食文化所吸引和感动。

output
long_text_demo.webm

5. Docker

5.1. 镜像

WIP 开发中

5.2. 手动 build

下载模型: python -m scripts.download_models --source modelscope

  • webui: docker-compose -f ./docker-compose.webui.yml up -d
  • api: docker-compose -f ./docker-compose.api.yml up -d

环境变量配置

6. Roadmap

WIP

7. FAQ

7.1. 什么是 Prompt1 和 Prompt2?

Prompt1 和 Prompt2 都是系统提示(system prompt),区别在于插入点不同。因为测试发现当前模型对第一个 [Stts] token 非常敏感,所以需要两个提示。

  • Prompt1 插入到第一个 [Stts] 之前
  • Prompt2 插入到第一个 [Stts] 之后

7.2. 什么是 Prefix?

Prefix 主要用于控制模型的生成能力,类似于官方示例中的 refine prompt。这个 prefix 中应该只包含特殊的非语素 token,如 [laugh_0][oral_0][speed_0][break_0] 等。

7.3. Style 中 _p 的区别是什么?

Style 中带有 _p 的使用了 prompt + prefix,而不带 _p 的则只使用 prefix。

7.4. 为什么开启了 --compile 很慢?

由于还未实现推理 padding 所以如果每次推理 shape 改变都可能触发 torch 进行 compile

暂时不建议开启

7.5. 为什么 colab 里面非常慢只有 2 it/s ?

请确保使用 gpu 而非 cpu。

  • 点击菜单栏 【修改】
  • 点击 【笔记本设置】
  • 选择 【硬件加速器】 => T4 GPU

Documents

在这里可以找到 更多文档

Contributing

To contribute, clone the repository, make your changes, commit and push to your clone, and submit a pull request.

References