xtts2-ui
10秒音频样本克隆任意声音,支持16种语言的零门槛AI语音合成工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
10秒音频样本克隆任意声音,支持16种语言的零门槛AI语音合成工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
只需 10 秒目标语音样本,即可将任意文本克隆为该声音的多语言 AI 语音合成工具。
想象一下这样的场景:你是一名视频创作者,需要为多语种视频配音,但既没有专业录音设备,也不想花时间反复录制多条音频。或者你是一名有声书主播,想让一个「数字分身」用你的声音朗读不同语言的书籍。又或者,你只是想让 AI 助手用你自己或家人的声音说话。这些曾经需要专业团队才能完成的任务,如今通过 XTTS2-UI 这款开源工具,普通用户在家用电脑上就能实现。
XTTS2-UI 是 Coqui 公司 XTTS-v2 语音克隆模型的 Web 前端界面。XTTS-v2 是目前开源社区中最受关注的零样本(zero-shot)语音克隆模型之一,能够仅凭 10 秒钟的音频样本,捕捉说话人的音色、口音和韵律特征,然后将这些特征迁移到任意文本的语音合成中。与传统需要大量训练数据的声音克隆不同,XTTS-v2 的「少样本」能力让普通用户无需任何 AI 专业知识,也能在几分钟内克隆出相当逼真的数字声音。
该项目的作者 BoltzmannEntropy 在 GitHub 上维护了多个与语音技术相关的项目,XTTS2-UI 是其中最受欢迎的一个,获得了 400+ stars,反映了开源社区对低门槛语音克隆工具的强烈需求。
XTTS2-UI 提供了两种运行方式,满足不同用户的使用偏好。第一种是基于 Gradio 的 app.py,适合想要快速上手的普通用户。启动后在浏览器中打开界面,可以直接上传或录制目标语音(WAV 格式,约 10 秒),输入想要合成的文本,选择语言和语速,一键生成克隆语音。界面上还会显示生成的音频波形和下载按钮,整个流程非常直观。
第二种是基于 Streamlit 的 app2.py,提供了稍微不同的布局和交互设计。两种界面共享底层的 TTS 核心模块(来自 Coqui 的 TTS Python 包),唯一的区别是前端 UI 框架。
项目内置支持 16 种语言,涵盖阿拉伯语、中文、捷克语、荷兰语、英语、法语、德语、匈牙利语、意大利语、日语、韩语、波兰语、葡萄牙语、俄语、西班牙语和土耳其语。对于每种语言,代码中维护了从语言名称到 BCP-47 语言标签(如 zh-cn、en、ar)的映射关系,用户只需在界面选择语言名称,系统自动转换为模型所需的标签。
此外,项目还提供了 appTerminal.py,允许用户在命令行模式下批量处理文本文件,通过修改 texts.json 一次性生成多个文本在多个说话人上的合成音频,适合需要批量生产的开发者。
从代码层面看,XTTS2-UI 的工作流程分为以下几个阶段:
第一阶段:模型加载。 项目使用 TTS.api.TTS 类加载预训练的 XTTS-v2 模型(tts_models/multilingual/multi-dataset/xtts_v2)。模型权重在首次运行时自动从 Hugging Face 下载(约 1.5GB),存储到用户本地的 TTS 缓存目录。加载后模型被移到 GPU(cuda:0)或 CPU(Mac 系统)。
第二阶段:声音嵌入提取。 当用户上传或录制一个 WAV 音频文件后,XTTS-v2 会通过Speaker Encoder 将这段音频编码为一个固定的「声音向量」——这就是所谓的「声音指纹」。这个嵌入向量包含了说话人的音色、音调、语速等声学特征,是后续合成的关键。
第三阶段:文本转语音。 用户输入文本后,系统将其分词并转换为音素序列,然后结合之前提取的声音嵌入,通过 GPT 风格的Transformer 模型生成对应的 Mel 频谱图,最后通过 HiFiGAN 声码器将频谱图转换为真实的音频波形。
第四阶段:音频输出。 合成的音频默认保存到 outputs/ 目录,文件命名格式为 {speaker_name}-{uuid}.wav。用户也可以直接在浏览器中播放。
值得注意的是,项目使用了 gradio 的 Blocks API 来构建界面,而非简单的 Interface,这允许更灵活的布局和自定义组件(如音频录制组件 audio-recorder-streamlit)。在 Streamlit 版本中,使用了 @st.cache_resource 装饰器来缓存模型加载,避免每次刷新页面都重新下载和初始化模型,这是一个实用的性能优化。
XTTS2-UI 的部署体验可以用「代码简单、环境复杂」来概括。项目本身只有 19 个文件,核心逻辑(app.py、app2.py)加在一起不超过 300 行代码,结构清晰易懂。但部署它需要满足以下前置条件:
GPU 是必须的。 XTTS-v2 是一个参数量约 70M 的 Transformer 模型,合成一段 10 秒音频在 CPU 上需要数分钟,在 GPU 上则只需几秒。项目默认将模型加载到 cuda:0,Mac 用户(CPU 优先)有特殊处理。推荐显存 6GB 以上。
PyTorch + CUDA 环境配置是最大的坑。 项目要求用户根据自己显卡的 CUDA 版本(11.8 或 12.1),手动从 PyTorch 官方源安装对应版本的 PyTorch。这个步骤经常因为版本不匹配而失败。许多用户在 GitHub Issues 中反馈「模型每次运行都重新下载」的问题,根本原因是 PyTorch 和 CUDA 版本不一致导致的缓存失效。
缺少 Dockerfile 是主要遗憾。 目前项目没有提供容器化方案,用户必须自己在主机上配置完整的 Python + CUDA 环境。如果能提供一个 NVIDIA CUDA 基础镜像的 Dockerfile,配合 docker-compose 一键启动,将大大降低部署门槛。
首先,克隆质量受限于目标语音样本的质量和多样性。10 秒音频虽然足够提取基本音色,但如果音频有噪声、语速过快或过慢、或者涵盖的音素不够丰富,克隆效果会明显下降。项目本身也在 README 中坦诚写道:「不要期望达到专业录音棚的质量,目前还做不到。」
其次,Coqui 模型的商业使用有法律限制。XTTS-v2 模型的使用需要同意 Coqui 的服务条款,禁止将克隆声音用于欺骗、冒充等不当用途。
第三,首次启动需要用户手动在终端输入 y 同意服务条款,这个交互在 Web UI 中无法完成(需要通过代码预先设置环境变量绕过),对新手有一定困扰。
XTTS2-UI 的出现代表了语音克隆技术从「实验室」走向「普通用户」的重要一步。Coqui 的 XTTS 系列模型从 v1 迭代到 v2,支持语言从几种扩展到十几种,克隆质量显著提升,而 XTTS2-UI 则把这个能力包装成了一个零技术门槛的 Web 工具。
这类工具的普及带来了一些值得关注的讨论:语音克隆的门槛降低意味着任何人都可以用少量样本克隆他人的声音,这在娱乐和创作领域有巨大潜力,但也带来了深度伪造(deepfake)音频的风险。开源社区正在通过模型许可证、使用条款等方式尝试平衡创新与安全,但最终的责任仍然落在使用者身上。
对于开发者而言,XTTS2-UI 的代码结构也值得学习:它展示了如何用 Gradio/Streamlit 快速构建 AI 模型的 Web 界面,如何封装 PyTorch 模型的 API 调用,以及如何处理文件上传、音频录制、结果展示等常见场景。它的简洁性本身就是一种设计哲学——不追求过度工程化,而是让技术以最直接的方式服务于用户。