ChatTTS 中文文档 下载 App

ChatTTS 中文乱码修复——WeTextProcessing 预处理与 UTF-8 编码

症状

原因

ChatTTS 对中文的文本预处理有以下依赖:

  1. 文本编码必须是 UTF-8(不是 GBK / GB2312)
  2. 数字转汉字、英文转拼音等预处理需要额外库支持
  3. WeTextProcessing 是 ChatTTS 依赖的文本处理组件

解决方案

确认编码

Python 字符串默认是 Unicode,不会有编码问题——问题通常出现在从文件读取文本时:

# 错误(Windows 默认 GBK)
with open('texts.txt') as f:
    text = f.read()

# 正确
with open('texts.txt', encoding='utf-8') as f:
    text = f.read()

安装文本预处理依赖

pip install WeTextProcessing pypinyin cn2an

这三个库是 ChatTTS 做中文文本预处理的关键:

手动预处理

如果以上都装了还是有问题,可以手动做预处理再送 ChatTTS:

import cn2an
import re

def preprocess(text):
    # 阿拉伯数字转中文
    text = cn2an.transform(text, 'cn2an')
    # 全角标点转半角(如果需要)
    # ...
    return text

text = preprocess(raw_text)
wavs = chat.infer(text)

避免特殊字符

ChatTTS 对 Emoji、特殊符号、罕见 Unicode 字符的支持不完美。如果输入里有这些,建议先过滤掉。

典型修复路径

  1. 确认输入是 Python 字符串,不是从文件读的 GBK bytes
  2. 安装 WeTextProcessing、pypinyin、cn2an
  3. 如果还有问题,手动做数字转换
  4. 检查是否有 Emoji 等特殊字符