TTS

GitHub
45k 6k 中等 12 次阅读 6天前MPL-2.0音频开发框架图像
AI 解读 由 AI 自动生成,仅供参考

🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。

无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。

在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。

使用场景

一家专注于多语言教育科技的公司,正试图为一款面向全球儿童的互动绘本应用快速生成高质量的旁白语音。

没有 TTS 时

  • 多语言支持成本极高:每增加一种新语言(如西班牙语或日语),都需要聘请专业配音演员录制,导致本地化周期长达数周且预算飙升。
  • 声音表现力单一:传统合成语音机械感重,缺乏情感起伏,无法根据故事情节调整语气,难以吸引儿童注意力。
  • 迭代更新困难:一旦绘本内容需要微调(如修改台词),必须重新预约录音棚和人员,无法实现即时更新。
  • 延迟问题严重:尝试使用其他开源方案时,推理速度过慢,导致在低端设备上播放语音时出现明显卡顿,破坏互动体验。

使用 TTS 后

  • 一键覆盖全球市场:利用 TTS 预训练的 1100 多种语言模型及 XTTS 功能,团队仅需输入文本即可瞬间生成地道的外语旁白,将新语言上线时间从数周缩短至几分钟。
  • 情感丰富且自然:借助深度学习能力,TTS 生成的语音具备逼真的停顿和情感色彩,甚至能通过少量样本克隆特定角色音色,让故事讲述栩栩如生。
  • 实时动态生成:得益于低于 200ms 的流式推理延迟,应用可根据孩子的互动选择实时生成对应台词,实现了真正的动态叙事体验。
  • 灵活微调与部署:开发团队利用提供的微调工具,针对儿童内容优化了发音风格,并轻松将模型集成到生产环境中,大幅降低了维护成本。

TTS 通过其强大的多语言预训练模型和低延迟推理能力,将语音内容的生产成本降低了 90%,同时让全球儿童都能享受到富有情感的个性化故事体验。

运行环境要求

操作系统
  • Linux (Ubuntu 18.04+)
  • Windows
  • macOS
GPU
  • 非必需(支持 CPU 推理,Docker 有 CPU 镜像)
  • 若需训练或使用高性能模型,建议使用 NVIDIA GPU
  • 具体显存和 CUDA 版本未在文中明确说明,但依赖 PyTorch CUDA 支持
内存

未说明

依赖
notes1. 在 Ubuntu/Debian 上可通过 'make system-deps' 安装系统级依赖。2. Windows 用户需参考外部链接进行特殊配置以支持 CUDA。3. 提供 Docker 镜像(含 CPU 和 GPU 版本)以便无需本地安装即可运行。4. 支持超过 1100 种语言的预训练模型。5. 包含多种模型架构(如 XTTS, VITS, Bark, Tortoise 等),不同模型对资源需求差异较大。
python>=3.9, <3.12
torch
numpy
scipy
librosa
pydub
soundfile
flask
gradio
pandas
matplotlib
TTS hero image

快速开始

🐸Coqui.ai 新闻

  • 📣 ⓍTTSv2 已发布,支持16种语言,整体性能更优。
  • 📣 ⓍTTS 微调代码已公开。请查看示例教程
  • 📣 ⓍTTS 现在可以以低于200毫秒的延迟进行流式传输。
  • 📣 ⓍTTS,我们的生产级TTS模型,能够说13种语言,现已发布。博客文章演示文档
  • 📣 🐶Bark 现已可用于推理,并支持无约束的语音克隆。文档
  • 📣 您可以使用~1100个Fairseq模型与🐸TTS一起使用。
  • 📣 🐸TTS 现在支持🐢Tortoise,且推理速度更快。文档

🐸TTS 是一个用于高级文本转语音生成的库。

🚀 预训练模型支持超过1100种语言。

🛠️ 提供工具用于训练新模型以及对任何语言的现有模型进行微调。

📚 提供数据集分析和整理的相关工具。


Discord License PyPI版本 公约 下载量 DOI

GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions GithubActions 文档


💬 咨询渠道

请使用我们专门的渠道进行提问和讨论。公开分享的帮助更有价值,这样更多人可以从中受益。

类型 平台
🚨 Bug报告 [GitHub问题追踪器]
🎁 功能请求与建议 [GitHub问题追踪器]
👩‍💻 使用问题 [GitHub讨论区]
🗯 一般讨论 [GitHub讨论区]或Discord

🔗 链接和资源

类型 链接
💼 文档 ReadTheDocs
💾 安装 TTS/README.md
👩‍💻 贡献 CONTRIBUTING.md
📌 路线图 主要开发计划
🚀 已发布的模型 TTS发布实验性模型
📰 论文 TTS论文

🥇 TTS性能

带下划线的“TTS*”和“Judy*”是内部的🐸TTS模型,尚未开源。它们旨在展示潜在能力。以点号开头的模型(.Jofish、.Abe 和 .Janice)则是真实的人类声音。

特性

  • 用于文本转语音任务的高性能深度学习模型。
    • 文本转频谱模型(Tacotron、Tacotron2、Glow-TTS、SpeedySpeech)。
    • 发言人编码器,可高效计算发言人的嵌入向量。
    • 声码器模型(MelGAN、Multiband-MelGAN、GAN-TTS、ParallelWaveGAN、WaveGrad、WaveRNN)
  • 快速高效的模型训练。
  • 在终端和Tensorboard上提供详细的训练日志。
  • 支持多说话人TTS。
  • 高效、灵活、轻量但功能齐全的Trainer API
  • 已发布并可直接使用的模型。
  • 提供工具来整理文本转语音数据集,位于dataset_analysis模块中。
  • 提供工具来使用和测试您的模型。
  • 模块化(但不过分)的代码库,便于实现新想法。

模型实现

声谱图模型

端到端模型

注意力机制

发言人编码器

语音合成器

语音转换

您也可以帮助我们实现更多模型。

安装

🐸TTS 已在 Ubuntu 18.04 上测试,要求 Python >= 3.9, < 3.12

如果您只对使用发布的 🐸TTS 模型进行 语音合成 感兴趣,那么从 PyPI 安装是最简单的方式。

pip install TTS

如果您计划编写代码或训练模型,请克隆 🐸TTS 并在本地安装。

git clone https://github.com/coqui-ai/TTS
pip install -e .[all,dev,notebooks]  # 选择相关的附加组件

如果您使用的是 Ubuntu (Debian),也可以运行以下命令进行安装。

$ make system-deps  # 适用于 Ubuntu (Debian)。如果您使用其他操作系统,请告知我们。
$ make install

如果您使用的是 Windows,👑@GuyPaddock 编写了安装说明 在这里

Docker 镜像

您也可以通过 Docker 镜像无需安装即可试用 TTS。只需运行以下命令,您就可以在不安装的情况下运行 TTS。

docker run --rm -it -p 5002:5002 --entrypoint /bin/bash ghcr.io/coqui-ai/tts-cpu
python3 TTS/server/server.py --list_models # 获取可用模型列表
python3 TTS/server/server.py --model_name tts_models/en/vctk/vits # 启动服务器

然后您可以在 这里 享受 TTS 服务。有关 Docker 镜像的更多详细信息(例如 GPU 支持)可以参见 这里

使用 🐸TTS 进行语音合成

🐍 Python API

运行多说话者和多语言模型

import torch
from TTS.api import TTS

# 获取设备
device = "cuda" if torch.cuda.is_available() else "cpu"

# 列出可用的 🐸TTS 模型
print(TTS().list_models())

# 初始化 TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)

# 运行 TTS
# ❗ 由于此模型是多语言语音克隆模型,我们必须设置目标说话人音频文件和语言
# 输出为幅度值列表的文本转语音
wav = tts.tts(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en")
# 文本转语音并保存为文件
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")

运行单说话者模型

# 使用目标模型名称初始化 TTS
tts = TTS(model_name="tts_models/de/thorsten/tacotron2-DDC", progress_bar=False).to(device)

# 运行 TTS
tts.tts_to_file(text="Ich bin eine Testnachricht.", file_path=OUTPUT_PATH)

# 使用 YourTTS 进行英语、法语和葡萄牙语的语音克隆示例
tts = TTS(model_name="tts_models/multilingual/multi-dataset/your_tts", progress_bar=False).to(device)
tts.tts_to_file("This is voice cloning.", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")
tts.tts_to_file("C'est le clonage de la voix.", speaker_wav="my/cloning/audio.wav", language="fr-fr", file_path="output.wav")
tts.tts_to_file("Isso é clonagem de voz.", speaker_wav="my/cloning/audio.wav", language="pt-br", file_path="output.wav")

语音转换示例

source_wav 中的声音转换为 target_wav 的声音

tts = TTS(model_name="voice_conversion_models/multilingual/vctk/freevc24", progress_bar=False).to("cuda")
tts.voice_conversion_to_file(source_wav="my/source.wav", target_wav="my/target.wav", file_path="output.wav")

结合语音转换模型进行语音克隆示例。

这样,您可以使用 🐸TTS 中的任何模型来克隆语音。

tts = TTS("tts_models/de/thorsten/tacotron2-DDC")
tts.tts_with_vc_to_file(
    "Wie sage ich auf Italienisch, dass ich dich liebe?",
    speaker_wav="target/speaker.wav",
    file_path="output.wav"
)

使用 Fairseq 模型在 ~1100 种语言中 进行文本转语音的示例 🤯。

对于 Fairseq 模型,使用以下命名格式:tts_models/<lang-iso_code>/fairseq/vits。您可以在此处找到语言 ISO 代码 这里,并在此处了解 Fairseq 模型 这里

# 具有即时语音转换功能的 TTS
api = TTS("tts_models/deu/fairseq/vits")
api.tts_with_vc_to_file(
    "Wie sage ich auf Italienisch, dass ich dich liebe?",
    speaker_wav="target/speaker.wav",
    file_path="output.wav"
)

命令行 tts

在命令行中合成语音。

您可以使用自己训练的模型,也可以从提供的列表中选择一个模型。

如果您未指定任何模型,则会使用基于 LJSpeech 的英语模型。

单说话人模型

  • 列出提供的模型:

    $ tts --list_models
    
  • 获取模型信息(适用于 tts_models 和 vocoder_models):

    • 按类型/名称查询: model_info_by_name 使用 --list_models 中显示的名称。
      $ tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"
      
      例如:
      $ tts --model_info_by_name tts_models/tr/common-voice/glow-tts
      $ tts --model_info_by_name vocoder_models/en/ljspeech/hifigan_v2
      
    • 按类型/索引查询: model_query_idx 使用 --list_models 中对应的索引。
      $ tts --model_info_by_idx "<model_type>/<model_query_idx>"
      
      例如:
      $ tts --model_info_by_idx tts_models/3
      
    • 按完整名称查询模型信息:
      $ tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"
      
  • 使用默认模型运行 TTS:

    $ tts --text "Text for TTS" --out_path output/path/speech.wav
    
  • 运行 TTS 并将生成的 TTS 音频数据直接输出到管道:

    $ tts --text "Text for TTS" --pipe_out --out_path output/path/speech.wav | aplay
    
  • 使用 TTS 模型及其默认声码器模型运行:

    $ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --out_path output/path/speech.wav
    

    例如:

    $ tts --text "Text for TTS" --model_name "tts_models/en/ljspeech/glow-tts" --out_path output/path/speech.wav
    
  • 使用列表中的特定 TTS 和声码器模型运行:

    $ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --vocoder_name "<model_type>/<language>/<dataset>/<model_name>" --out_path output/path/speech.wav
    

    例如:

    $ tts --text "Text for TTS" --model_name "tts_models/en/ljspeech/glow-tts" --vocoder_name "vocoder_models/en/ljspeech/univnet" --out_path output/path/speech.wav
    
  • 运用自己的 TTS 模型(使用 Griffin-Lim 声码器):

    $ tts --text "Text for TTS" --model_path path/to/model.pth --config_path path/to/config.json --out_path output/path/speech.wav
    
  • 运用自己的 TTS 和声码器模型:

    $ tts --text "Text for TTS" --model_path path/to/model.pth --config_path path/to/config.json --out_path output/path/speech.wav
        --vocoder_path path/to/vocoder.pth --vocoder_config_path path/to/vocoder_config.json
    

多说话人模型

  • 列出可用的说话人并从中选择一个

    $ tts --model_name "<language>/<dataset>/<model_name>"  --list_speaker_idxs
    
  • 使用目标说话人 ID 运行多说话人 TTS 模型:

    $ tts --text "Text for TTS." --out_path output/path/speech.wav --model_name "<language>/<dataset>/<model_name>"  --speaker_idx <speaker_id>
    
  • 运用自己的多说话人 TTS 模型:

    $ tts --text "Text for TTS" --out_path output/path/speech.wav --model_path path/to/model.pth --config_path path/to/config.json --speakers_file_path path/to/speaker.json --speaker_idx <speaker_id>
    

语音转换模型

$ tts --out_path output/path/speech.wav --model_name "<language>/<dataset>/<model_name>" --source_wav <path/to/speaker/wav> --target_wav <path/to/reference/wav>

目录结构

|- notebooks/       (用于模型评估、参数选择和数据分析的 Jupyter 笔记本。)
|- utils/           (通用工具。)
|- TTS
    |- bin/             (所有可执行文件的文件夹。)
      |- train*.py                  (训练您的目标模型。)
      |- ...
    |- tts/             (文本转语音模型)
        |- layers/          (模型层定义)
        |- models/          (模型定义)
        |- utils/           (模型专用工具。)
    |- speaker_encoder/ (说话人编码器模型。)
        |- (同上)
    |- vocoder/         (声码器模型。)
        |- (同上)

版本历史

v0.22.02023/12/12
v0.21.32023/12/01
v0.21.22023/11/30
v0.21.12023/11/24
v0.21.02023/11/24
v0.20.62023/11/17
v0.20.52023/11/15
v0.20.42023/11/13
v0.20.32023/11/10
v0.20.22023/11/08
v0.20.12023/11/07
v0.20.02023/11/06
v0.19.12023/10/30
v0.19.02023/10/25
v0.18.22023/10/21
v0.18.12023/10/20
v0.18.02023/10/20
v0.17.102023/10/19
v0.17.92023/10/19
v0.17.82023/10/06

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|3天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|4天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

146.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|昨天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|2天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|3天前
语言模型图像Agent