Tacotron-2

GitHub
2.3k 905 较难 1 次阅读 2天前MIT音频开发框架
AI 解读 由 AI 自动生成,仅供参考

Tacotron-2 是一个基于 TensorFlow 实现的开源深度学习项目,旨在复现并优化 DeepMind 提出的自然语音合成架构。它主要解决了如何让机器生成接近真人般自然、流畅且富有情感语音的难题。

该工具的核心工作原理分为两步:首先利用深度神经网络根据输入文本预测梅尔频谱图(Spectrogram),随后结合 WaveNet 声码器将这些频谱图转换为高质量的音频波形。相比传统方法,Tacotron-2 无需复杂的手工特征工程,即可端到端地合成高保真语音。项目中不仅提供了严格还原论文结果的超参数配置,还包含了经过验证能进一步提升效果的改进版设置,兼顾了学术复现的严谨性与实际应用的性能。

由于需要配置数据集、进行预处理以及分阶段训练模型,Tacotron-2 更适合具备一定深度学习基础的开发者、语音技术研究人员或算法工程师使用。普通用户若直接使用可能需要较高的技术门槛。对于希望深入探索文本转语音(TTS)底层逻辑、进行模型微调或构建自定义语音库的专业人士来说,这是一个极具参考价值的起点。

使用场景

一家专注于有声书制作的初创公司,希望将大量公版英文小说快速转化为高质量的真人朗读音频,以降低成本并缩短上线周期。

没有 Tacotron-2 时

  • 录音成本高昂:必须聘请专业配音演员并按小时付费,录制长篇巨著需要数周时间和巨额预算。
  • 修改极其困难:若发现文本有误或需要调整语气,必须重新预约录音棚和人员,流程繁琐且耗时。
  • 声音表现机械:早期传统的 TTS(文本转语音)技术生成的音频语调平淡、缺乏情感,听起来像机器人,无法用于商业出版。
  • 多角色演绎受限:单一配音员难以完美演绎书中所有不同性别、年龄的角色,导致听众体验单一。

使用 Tacotron-2 后

  • 大幅降低制作门槛:利用 Tacotron-2 强大的梅尔频谱预测能力,仅需输入文本即可生成接近真人音质的音频,无需昂贵的人工录音。
  • 即时编辑与迭代:修改文本后几分钟内即可重新合成对应片段,支持快速纠错和风格微调,极大提升了生产效率。
  • 自然度显著提升:得益于其结合 WaveNet 声码器的架构,生成的语音在韵律、停顿和情感表达上极度自然,几乎无法与真人区分。
  • 灵活的角色定制:通过切换训练数据集(如 README 中提到的 en_US 男声/女声数据),可轻松为不同角色分配独特的声音特质,丰富听觉层次。

Tacotron-2 通过将深度学习引入语音合成,让中小团队也能以极低成本生产出广播剧级别的有声内容,彻底改变了音频内容的生产模式。

运行环境要求

操作系统
  • Linux
GPU
  • 未明确说明具体型号,但作为深度学习音频合成模型(Tacotron-2 + WaveNet),强烈建议使用支持 CUDA 的 NVIDIA GPU
  • README 提到需安装音频库依赖,通常此类训练在 Linux GPU 环境下进行
内存

未说明(建议 16GB+ 以处理大型音频数据集和模型训练)

依赖
notes1. 该工具主要基于 TensorFlow 实现,而非 PyTorch。 2. 仅官方支持 LJSpeech 和类 LJSpeech 格式的数据集(如 M-AILABS),其他数据集需自行编写预处理脚本。 3. 提供了 Docker 镜像构建方案以简化环境配置。 4. 训练分为两个阶段:先训练 Tacotron 频谱预测模型,再训练 WaveNet 声码器,也可端到端联合训练。 5. Linux 下需手动安装音频开发库(如 libasound-dev, ffmpeg 等)以确保音频处理功能正常。
python3.x (README 明确指出需要 Python 3)
tensorflow
libasound-dev
portaudio19-dev
libportaudio2
libportaudiocpp0
ffmpeg
libav-tools
Tacotron-2 hero image

快速开始

Tacotron-2:

DeepMind的Tacotron-2的TensorFlow实现。该深度神经网络架构在论文《通过基于梅尔频谱图预测来调节WaveNet实现自然的TTS合成》中有所描述:Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions

本仓库包含了对原论文的额外改进和尝试,因此我们提出了paper_hparams.py文件,其中保存了完全相同的超参数,以便在没有任何额外改动的情况下复现论文结果。

建议使用的默认hparams.py文件包含了一些经过验证在大多数情况下能带来更好效果的附加超参数。您可以根据需要自由调整这些参数。

相关差异将在文档中尽快标注出来。

仓库结构:

Tacotron-2
├── datasets
├── en_UK		(0)
│   └── by_book
│       └── female
├── en_US		(0)
│   └── by_book
│       ├── female
│       └── male
├── LJSpeech-1.1	(0)
│   └── wavs
├── logs-Tacotron	(2)
│   ├── eval_-dir
│   │ 	├── plots
│ 	│ 	└── wavs
│   ├── mel-spectrograms
│   ├── plots
│   ├── taco_pretrained
│   ├── metas
│   └── wavs
├── logs-Wavenet	(4)
│   ├── eval-dir
│   │ 	├── plots
│ 	│ 	└── wavs
│   ├── plots
│   ├── wave_pretrained
│   ├── metas
│   └── wavs
├── logs-Tacotron-2	( * )
│   ├── eval-dir
│   │ 	├── plots
│ 	│ 	└── wavs
│   ├── plots
│   ├── taco_pretrained
│   ├── wave_pretrained
│   ├── metas
│   └── wavs
├── papers
├── tacotron
│   ├── models
│   └── utils
├── tacotron_output	(3)
│   ├── eval
│   ├── gta
│   ├── logs-eval
│   │   ├── plots
│   │   └── wavs
│   └── natural
├── wavenet_output	(5)
│   ├── plots
│   └── wavs
├── training_data	(1)
│   ├── audio
│   ├── linear
│	└── mels
└── wavenet_vocoder
	└── models

上述目录树展示了当前仓库的状态(分步训练,一次完成一步)。

  • 步骤 (0):获取您的数据集,这里我提供了Ljspeechen_USen_UK(来自M-AILABS)的示例。

  • 步骤 (1):预处理您的数据。这将生成training_data文件夹。

  • 步骤 (2):训练您的Tacotron模型。这将产生logs-Tacotron文件夹。

  • 步骤 (3):合成/评估Tacotron模型。这将生成tacotron_output文件夹。

  • 步骤 (4):训练您的Wavenet模型。这将产生logs-Wavenet文件夹。

  • 步骤 (5):使用Wavenet模型合成音频。这将生成wavenet_output文件夹。

  • 注意:步骤2、3和4都可以通过简单的运行同时完成Tacotron和WaveNet的训练(Tacotron-2,步骤( *))。

注意:

  • 我们的预处理仅支持Ljspeech及类似Ljspeech的数据集(M-AILABS语音数据)! 如果您使用的是以不同方式存储的数据集,可能需要自行编写预处理脚本。
  • 在上述目录树中,为了简化起见,未展示所有文件,并且最大深度设置为3
  • 如果您同时训练两个模型,仓库的结构将会有所不同。

预训练模型与样本:

预训练模型和音频样本将在稍后添加。不过,您可以在这里查看模型性能的一些初步见解(处于训练初期阶段)。请注意,这些内容已经非常过时,我将很快更新。

模型架构:

作者描述的模型可以分为两部分:

  • 频谱图预测网络
  • WaveNet声码器

如需深入了解模型架构、训练流程和预处理逻辑,请参阅我们的维基页面

当前状态:

如需了解我们在该项目上的进展,请参阅此讨论

由于整个模型的两部分是分别训练的,我们可以先训练特征预测模型,以便在后续的WaveNet训练中使用其预测结果。

如何开始

  • 机器环境配置:

首先,您需要安装Python 3以及TensorFlow

接下来,您需要安装一些Linux依赖项,以确保音频库正常工作:

apt-get install -y libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg libav-tools

最后,您可以安装项目所需的依赖包。如果您使用Anaconda:(否则请将pip替换为pip3python替换为python3

pip install -r requirements.txt

  • Docker:

或者,您也可以构建Docker镜像,以确保所有环境自动配置完毕,并在Docker容器内运行该项目。 Dockerfile位于“docker”文件夹内

可以通过以下命令构建Docker镜像:

docker build -t tacotron-2_image docker/

然后可以使用以下命令运行容器:

docker run -i --name new_container tacotron-2_image

如果您在使用Docker运行我们的模型时遇到任何问题,请随时向我们反馈,我会尽快处理。谢谢!

数据集:

我们已在 ljspeech数据集上测试了上述代码,该数据集包含近24小时由一位女演员录制的带标签语音。(下载数据集时,README文件中提供了更多关于该数据集的信息)

我们目前还在对新的M-AILABS语音数据集进行测试,该数据集包含超过700小时的语音(超过80GB的数据),覆盖10多种语言。

下载数据集后,请解压缩文件,并将文件夹放置到克隆的仓库目录中

超参数设置:

在继续之前,您必须选择最适合您需求的超参数。虽然在预处理或训练过程中可以通过命令行更改超参数,但我仍然建议您直接在hparams.py文件中一次性完成所有修改。

为了选择最佳的FFT参数,我制作了一个griffin_lim_synthesis_tool笔记本,您可以使用它来反演实际提取的梅尔频谱图/线性频谱图,从而判断您的预处理效果如何。其他选项在hparams.py中都有详细说明,并且命名清晰,方便您尝试不同的设置。

关于超参数的详细文档即将发布!!

预处理

在运行以下步骤之前,请确保您位于 Tacotron-2 文件夹 内。

cd Tacotron-2

然后可以使用以下命令开始预处理:

python preprocess.py

可以通过 --dataset 参数选择数据集。如果使用 M-AILABS 数据集,您需要根据自己的需求提供 language、voice、reader、merge_books 和 book 参数。默认值为 Ljspeech

M-AILABS 示例:

python preprocess.py --dataset='M-AILABS' --language='en_US' --voice='female' --reader='mary_ann' --merge_books=False --book='northandsouth'

或者,如果您希望将一位说话人的所有书籍合并为一个数据集:

python preprocess.py --dataset='M-AILABS' --language='en_US' --voice='female' --reader='mary_ann' --merge_books=True

这通常不会超过 几分钟

训练:

要依次训练 两个模型(一个接一个):

python train.py --model='Tacotron-2'

特征预测模型可以 单独 训练,使用以下命令:

python train.py --model='Tacotron'

检查点将每 5000 步 保存一次,并存储在 logs-Tacotron 文件夹 中。

当然,也可以单独训练 WaveNet 模型,使用以下命令:

python train.py --model='WaveNet'

日志文件将存储在 logs-Wavenet 文件夹 中。

注意:

  • 如果未提供 model 参数,则默认训练 Tacotron-2 模型(即同时训练两个模型)。
  • 请参阅 train.py 中的训练参数,以获取可用选项。
  • 现在也可以仅使用 wavenet_preprocess.py 进行 WaveNet 的预处理。

合成

要以 端到端 方式(文本到音频)合成音频(两个模型协同工作):

python synthesize.py --model='Tacotron-2'

对于频谱图预测网络(单独使用),有 三种 不同的梅尔频谱图合成方式:

  • 评估合成(对自定义句子进行合成)。这通常是在拥有完整的端到端模型后使用的模式。

python synthesize.py --model='Tacotron'

  • 自然合成(让模型通过将前一时刻的解码器输出作为下一时刻的输入来独立进行预测)。

python synthesize.py --model='Tacotron' --mode='synthesis' --GTA=False

  • 真值对齐合成(默认:模型在教师强制机制下借助真实标签进行辅助)。这种合成方法用于生成用于训练 WaveNet 声码器的梅尔频谱图。(如论文所述,这种方法效果更好)

python synthesize.py --model='Tacotron' --mode='synthesis' --GTA=True

基于先前合成的梅尔频谱图单独合成 波形,可以使用以下命令:

python synthesize.py --model='WaveNet'

注意:

  • 如果未提供 model 参数,则默认合成 Tacotron-2 模型的音频(端到端 TTS)。
  • 请参阅 synthesize.py 中的合成参数,以获取可用选项。

参考文献与资源:

常见问题

相似工具推荐

stable-diffusion-webui

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

162.1k|★★★☆☆|今天
开发框架图像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 真正成长为懂上

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

ComfyUI

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

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

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

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

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