tacotron
Tacotron 是一个基于 TensorFlow 实现的开源语音合成项目,旨在复现谷歌提出的端到端神经网络语音合成模型。它解决了传统语音合成系统依赖复杂人工规则和繁琐特征工程的痛点,能够直接从“文本 - 音频”配对数据中学习,将输入文字自动转换为自然流畅的语音。
虽然这是社区维护的非官方版本,但其核心价值在于填补了谷歌原始论文未公开代码和训练数据的空白,让学术界和开发者得以深入探索前沿技术。项目支持使用预训练模型快速搭建演示服务,也提供了完整的训练流程,兼容 LJ Speech 等主流数据集。其技术亮点包括可调节的超参数配置、对 Dropout 机制的修复,以及社区贡献的融合 Tacotron 2 特性(如位置敏感注意力机制),显著降低了训练所需的数据量。
Tacotron 非常适合人工智能研究人员、语音技术开发者以及对深度学习感兴趣的学生使用。对于希望定制专属语音音色或研究序列到序列模型的专业人士,它提供了一个透明、可扩展的实验平台;普通用户也可通过预训练模型体验文字转语音的乐趣。尽管生成质量仍在持续优化中,但它无疑是进入端到端语音合成领域的重要入门工具。
使用场景
一家小型有声书初创团队希望将大量公版领域小说快速转化为音频内容,但受限于预算无法聘请专业配音演员或购买昂贵的商业 TTS 服务。
没有 tacotron 时
- 成本高昂且扩展难:依赖真人录音导致单本书制作成本极高,无法大规模扩充书库。
- 声音表现机械僵硬:使用传统拼接式合成技术,生成的语音语调平淡,缺乏自然的情感起伏和呼吸感。
- 定制周期漫长:若想为不同角色定制独特声线,需重新录制大量样本,耗时数周甚至数月。
- 部署门槛高:缺乏端到端的训练流程,调整发音错误或优化音质需要深厚的信号处理专家介入。
使用 tacotron 后
- 零成本批量生产:利用预训练模型和本地 GPU,团队可免费下载 LJ Speech 等数据集,无限生成高质量音频。
- 拟真度显著提升:tacotron 直接学习文本到音频的映射,生成的语音在约 2 万步训练后即清晰可懂,具备自然的韵律。
- 快速适配新声线:只需准备几小时的目标说话人数据(如 Nancy Corpus),即可微调模型创造出专属的角色声音。
- 开源灵活可控:基于 TensorFlow 的实现允许开发者通过 Tensorboard 实时监控训练状态,并自由调整超参数以优化特定场景效果。
tacotron 让中小团队也能以极低的算力成本,构建出媲美大厂水准的定制化语音合成流水线。
运行环境要求
- Linux
- macOS
- 非必需但推荐(为了更好性能),需支持 TensorFlow GPU 版本的 NVIDIA 显卡
- 文中提及在 GTX 1080Ti 上表现良好,未明确具体显存和 CUDA 版本要求
未说明(训练过程建议预留充足内存,但未给出具体数值)

快速开始
Tacotron
在 TensorFlow 中实现的 Tacotron 语音合成模型。
音频样本
- 音频样本 来自使用本仓库训练的模型。
- 第一组在 LJ Speech 数据集 上训练了 441K 步。
- 大约在 20K 步时,语音开始变得可懂。
- 第二组由 @MXGray 在 Nancy 语料库 上训练了 140K 步。
- 第一组在 LJ Speech 数据集 上训练了 441K 步。
最新更新
@npuichigo 修复 了一个 bug,即 Prenet 中未应用 Dropout。
@begeekmyfriend 创建了一个 分支,添加了来自 Tacotron 2 论文中的位置敏感注意力机制和停止标记。这可以大大减少训练模型所需的数据量。
背景
2017 年 4 月,Google 发表了一篇论文《Tacotron:迈向端到端语音合成》,其中他们提出了一种神经网络文本转语音模型,可以直接从 (文本, 音频) 对中学习合成语音。然而,他们并未公开源代码或训练数据。本项目是对此论文中描述模型的开源实现尝试。
目前的质量还不如 Google 的演示效果,但希望未来能够达到那个水平 :-)。欢迎提交 Pull Request!
快速入门
安装依赖
安装 Python 3。
根据你的平台安装最新版本的 TensorFlow。为了获得更好的性能,如果硬件支持 GPU,请安装带有 GPU 支持的版本。此代码适用于 TensorFlow 1.3 及以上版本。
安装所需的依赖:
pip install -r requirements.txt
使用预训练模型
下载并解压模型:
curl https://data.keithito.com/data/speech/tacotron-20180906.tar.gz | tar xzC /tmp运行演示服务器:
python3 demo_server.py --checkpoint /tmp/tacotron-20180906/model.ckpt在浏览器中访问 localhost:9000
- 输入你想要合成的内容
训练
注意:训练模型至少需要 40GB 的可用磁盘空间。
下载语音数据集。
默认支持以下数据集:
- LJ Speech(公共领域)
- Blizzard 2012(知识共享署名-相同方式共享许可)
如果你能将其他数据集转换为正确格式,也可以使用。更多信息请参阅 TRAINING_DATA.md。
将数据集解压到
~/tacotron目录下解压后,对于 LJ Speech,目录结构应如下所示:
tacotron |- LJSpeech-1.1 |- metadata.csv |- wavs或者对于 Blizzard 2012:
tacotron |- Blizzard2012 |- ATrampAbroad | |- sentence_index.txt | |- lab | |- wav |- TheManThatCorruptedHadleyburg |- sentence_index.txt |- lab |- wav预处理数据
python3 preprocess.py --dataset ljspeech- 对于 Blizzard 数据,使用
--dataset blizzard。
- 对于 Blizzard 数据,使用
训练模型
python3 train.py可调超参数位于 hparams.py 中。你可以在命令行中使用
--hparams标志来调整这些参数,例如--hparams="batch_size=16,outputs_per_step=2"。通常情况下,训练和评估时的超参数应设置为相同的值。默认超参数推荐用于 LJ Speech 和其他英语数据集。有关其他语言的信息,请参阅 TRAINING_DATA.md。使用 TensorBoard 监控训练过程(可选)
tensorboard --logdir ~/tacotron/logs-tacotron训练器会每 1000 步输出一次音频和对齐信息。这些文件可以在
~/tacotron/logs-tacotron目录下找到。从检查点合成语音
python3 demo_server.py --checkpoint ~/tacotron/logs-tacotron/model.ckpt-185000将“185000”替换为你想要使用的检查点编号,然后打开浏览器访问
localhost:9000,输入你想要朗读的内容。或者,你也可以在命令行中运行 eval.py:python3 eval.py --checkpoint ~/tacotron/logs-tacotron/model.ckpt-185000如果你在训练时设置了
--hparams标志,这里也应使用相同的值。
注意事项及常见问题
TCMalloc 似乎能提高训练速度,并避免使用默认分配器时偶尔出现的减速现象。你可以通过安装它并设置
LD_PRELOAD=/usr/lib/libtcmalloc.so来启用。使用 TCMalloc 后,在 GTX 1080Ti 上大约可以达到 1.1 秒/步的速度。你可以使用 CMUDict 进行训练,只需将词典下载到
~/tacotron/training目录下,然后在train.py中传递--hparams="use_cmudict=True"参数即可。这样,在评估时,你可以用花括号括起来的 ARPAbet 音素来强制特定的发音,例如Turn left on {HH AW1 S S T AH0 N} Street.。如果你在
train.py中通过--slack_url参数传入 Slack 入站 Webhook URL,程序会在每 1000 步发送一次进度更新。有时,损失会出现激增,模型可能会忘记如何进行注意力机制计算(对齐信息不再合理)。虽然最终会恢复,但为了避免浪费时间,你可以在激增之前的一个检查点重新启动训练,方法是在
train.py中添加--restore_step=150000参数(将 150000 替换为激增前的步骤编号)。更新:最近由 @candlewill 提出的关于梯度裁剪的 修复 可能已经解决了这个问题。在评估和训练过程中,音频长度受限于
max_iters * outputs_per_step * frame_shift_ms毫秒。使用默认值(max_iters=200, outputs_per_step=5, frame_shift_ms=12.5),最大长度为 12.5 秒。如果你的训练示例更长,你可能会看到类似如下的错误:
形状不匹配:[32,1340,80] vs. [32,1000,80]要解决这个问题,你可以通过在
train.py中传递--hparams="max_iters=300"来增加max_iters的值(将 300 替换为你根据音频长度和上述公式计算出的合适数值)。以下是使用默认超参数在 LJ Speech 数据集上训练时预期的损失曲线:

其他实现
- Alex Barron 的实现:https://github.com/barronalex/Tacotron
- Kyubyong Park 的实现:https://github.com/Kyubyong/tacotron
版本历史
v0.2.02017/09/13v0.1.02017/09/05常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
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 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备