ChatTTS-OpenVoice
将 ChatTTS 自然语音生成与 OpenVoice 音色克隆结合,上传10秒音频即可克隆个性化声
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 ChatTTS 自然语音生成与 OpenVoice 音色克隆结合,上传10秒音频即可克隆个性化声
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,让 AI 用你自己的声音说话?不是那种一听就知道是合成的声音,而是带着你独特的音色、语气、甚至情绪?ChatTTS-OpenVoice 正是这样一款工具——它将两款优秀的开源 TTS(文本转语音)项目结合,让普通用户也能上传一小段音频,就克隆出自己专属的声音。
2024 年中,ChatTTS 在 GitHub 爆火,被称为「迄今最自然的 TTS 模型」。它的核心优势在于生成的语音带有自然的口语化特征——停顿、笑声、甚至情绪符号(如 [oral_2][laugh_0]),让合成音频听起来不像机器在朗读。与此同时,MyShell AI 团队开源的 OpenVoice 则专注于音色克隆——给定一段参考音频,可以精准复制其中的音色特征。
HKoon 将这两个项目巧妙结合:先用 ChatTTS 生成自然流畅的基础语音,再用 OpenVoice 的 ToneColorConverter 将音色替换为用户指定的参考声音。这样一来,生成的音频既有 ChatTTS 的自然语调,又有用户想要的独特音色。2024 年中发布后迅速获得 460+ stars,成为当时开源语音克隆领域的标杆项目。
整个系统的工作流程分为两个核心阶段:
第一阶段:ChatTTS 自然语音生成
这是整个 Pipeline 的「内容生产者」。ChatTTS 内部包含多个模块:
用户可以通过 params_refine_text 参数精细控制语音风格——比如 [oral_2] 增加口语化程度,[laugh_0] 控制笑声,[break_6] 插入停顿。temperature、top_P、top_K 等采样参数则控制生成的多样性和稳定性。
第二阶段:OpenVoice 音色克隆
生成的语音通过 OpenVoice 的 ToneColorConverter 进行音色迁移。这一步的核心是说话人嵌入(Speaker Embedding)提取器——对参考音频进行 VAD(语音活动检测)处理后,提取说话人的音色向量(Speaker Embedding),然后将目标音色应用到源音频上。
需要注意的是,OpenVoice 的预训练权重(OpenVoice/checkpoints/converter/checkpoint.pth 和 config.json)不在 GitHub 仓库内,需要从 HuggingFace 单独下载(https://huggingface.co/myshell-ai/OpenVoice/tree/main/checkpoints),这增加了部署复杂度。
实验性 LLM 集成:MiniMax 也在支持列表
ChatTTS/experimental/llm.py 提供了一个 OpenAI-compatible API 封装,支持接入外部 LLM 进行文本预处理(Text Normalization)。支持 Kimi(Moonshot AI)、DeepSeek 和 MiniMax 三个服务商。其中 MiniMax 支持三种 Prompt 版本,包括 minimax(口语化回复)和 minimax_TN(文本规范化)。这意味着你可以用 MiniMax 的 API 自动把一段英文数字混合文本转换为 TTS 友好的纯中文语音化表达。
项目根目录下有三个核心目录:
ChatTTS/:封装了 ChatTTS 模型的核心推理逻辑。core.py 是主入口,提供 Chat.load_models() 和 Chat.infer() 两个核心 API。model/ 下是 DVAE 和 GPT 模型实现,infer/ 下是文本细化和推理代码,utils/ 包含 GPU 选择、日志等工具。experimental/llm.py 提供了 MiniMax 等 LLM 的封装。
OpenVoice/:从 MyShell 移植的音色克隆模块。api.py 定义了 OpenVoiceBaseClass 和 BaseSpeakerTTS(支持中英文 TTS),以及 ToneColorConverter(音色转换器)。utils/ 包含音频处理工具,text/ 包含文本到音素的转换逻辑。
tests/:目前包含 test_minimax_llm.py,验证 LLM 集成的正确性。
app.py 是 Gradio WebUI 的实现,整合了两个模块——用户输入文本后,ChatTTS 先生成基础语音,再通过 OpenVoice 应用参考音频的音色,输出最终克隆语音。
WebUI 方式(app.py):适合普通用户。Gradio 界面提供以下控件:
不过 GitHub 原版 Spaces 存在 PyTorch 2.6 兼容问题(torch.load 默认 weights_only=True 导致 tokenizer 加载失败),社区已出现多个 fork 修复版本(如 6Simple9 的版本)。
纯 API 方式:开发者可以通过 ChatTTS.core.Chat 类直接调用,在 Python 脚本中集成语音合成能力。MiniMax LLM 集成的示例代码也写在 README 中,说明作者对开发者生态有一定考量。
部署门槛较高:没有 Docker 支持,需要手动安装 PyTorch 环境(CUDA 版本匹配)、下载多个预训练权重(HuggingFace 上 ChatTTS 的 .pt 文件 + OpenVoice 的 checkpoint),纯 CPU 运行速度极慢,GPU 是刚需。
模型依赖复杂:项目同时依赖 2Noise/ChatTTS(HuggingFace)和 myshell-ai/OpenVoice 两个外部模型,任何一个模型文件下载失败都会导致程序无法运行。模型总大小保守估计超过 2GB。
HuggingFace Spaces 稳定性问题:原版 Spaces 存在已知的 PyTorch 兼容性问题,运行时可能报错,用户体验不稳定。社区 fork 版本众多,质量参差不齐。
声音克隆的伦理风险:作为声音克隆工具,该项目天然存在被滥用于诈骗、伪造证词等场景的风险。虽然 OpenVoice 原项目有一些限制措施,但该 fork 版本未包含额外的安全防护。
ChatTTS-OpenVoice 证明了开源社区的创新往往来自于组合式创新——ChatTTS 的自然度 + OpenVoice 的音色迁移,两者的结合产生了 1+1>2 的效果。尽管存在部署复杂、无容器化、Spaces 不稳定等现实问题,但其技术方案的设计思路值得借鉴。
适合场景:有技术背景的用户,需要特定音色定制化 TTS 输出的开发者,或对语音克隆技术感兴趣的 AI 研究者。不适合纯小白用户,在没有 GPU 的环境下体验很差。
如果你正在寻找一个可以真正「克隆自己声音」的方案,这款项目是目前开源生态中体验最接近商用的选择之一。

图1:ChatTTS-OpenVoice 工作流程示意图,展示了从文本输入到语音克隆输出的完整 Pipeline