Matcha-TTS

GitHub
1.3k 192 简单 1 次阅读 今天MIT开发框架音频插件图像
AI 解读 由 AI 自动生成,仅供参考

Matcha-TTS 是一款基于“条件流匹配”(Conditional Flow Matching)技术的快速文本转语音(TTS)开源模型,由瑞典皇家理工学院团队研发并发表于 ICASSP 2024。它旨在解决传统神经 TTS 系统在生成速度与音质之间难以兼顾的痛点:既避免了自回归模型生成缓慢的问题,又克服了部分非自回归模型声音不够自然的缺陷。

该工具的核心亮点在于利用概率性的流匹配算法加速基于常微分方程(ODE)的语音合成过程。这使得 Matcha-TTS 在保持极高自然度的同时,拥有紧凑的内存占用和极快的推理速度,用户甚至可以通过调整步数灵活平衡生成效率与效果。此外,它还支持通过命令行或网页界面轻松调节语速、采样温度等参数,提供了丰富的预训练模型。

Matcha-TTS 非常适合多类人群使用:研究人员可将其作为探索高效生成式语音模型的前沿基准;开发者能便捷地将其集成到应用中,或利用其简洁的代码架构进行二次开发;普通用户也可通过 Hugging Face 空间或本地简易命令,快速体验高质量的语音合成服务。无论是需要批量处理音频的工程场景,还是追求极致听感的内容创作,Matcha-TTS 都提供了一个强大且易用的解决方案。

使用场景

某在线教育平台的技术团队需要为每日更新的数千道习题解析快速生成高质量语音,以支持视障学生及通勤场景下的音频学习。

没有 Matcha-TTS 时

  • 合成速度缓慢:传统自回归模型生成语音耗时过长,难以满足每日海量内容的实时转译需求,导致音频更新严重滞后。
  • 资源消耗巨大:现有方案显存占用高,迫使团队必须租用昂贵的多卡 GPU 服务器,大幅推高了运营成本。
  • 音质与效率难兼得:为了追求生成速度而减少采样步数时,语音会出现明显的机械感和失真,严重影响学习体验。
  • 部署调优复杂:模型推理过程对硬件环境敏感,工程化落地时需要编写大量复杂的加速代码和参数微调脚本。

使用 Matcha-TTS 后

  • 实时高效生成:利用条件流匹配(Conditional Flow Matching)技术,Matcha-TTS 将非自回归合成速度提升数倍,轻松实现千级文本的分钟级批量转写。
  • 轻量低耗运行:凭借紧凑的内存足迹,该模型可在单张消费级显卡甚至边缘设备上流畅运行,显著降低了基础设施成本。
  • 自然音质保持:即使在极少的 ODE 求解步数下,Matcha-TTS 仍能输出高度自然、富有情感的语音,完美平衡了速度与听感。
  • 开箱即用便捷:通过简单的 CLI 命令或 Gradio 界面即可调用预训练模型,无需繁琐的工程配置,极大缩短了从开发到上线的周期。

Matcha-TTS 通过革新性的流匹配架构,彻底打破了语音合成在速度、成本与音质之间的不可能三角,让大规模实时音频内容生产变得触手可及。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需(支持 CPU 推理)
  • 若需 GPU 加速或 ONNX GPU 推理,需 NVIDIA GPU 并安装对应 CUDA 版本的 PyTorch 及 onnxruntime-gpu
  • ONNX 导出功能强制要求 torch>=2.1.0
内存

未说明(提供最小显存/内存训练模式 'ljspeech_min_memory')

依赖
notes1. 推荐使用 conda 创建 Python 3.10 环境进行安装。 2. 预训练模型会在首次运行 CLI 或 Gradio 界面时自动下载。 3. 若需使用 ONNX 导出功能,必须手动安装 torch>=2.1.0(因旧版本不支持导出 scaled_product_attention 算子)。 4. 支持多 GPU 训练。
python3.10
torch>=2.0
pytorch-lightning>=2.0
hydra-core>=1.3
onnx (可选,用于导出)
onnxruntime / onnxruntime-gpu (可选,用于 ONNX 推理)
Matcha-TTS hero image

快速开始

🍵 Matcha-TTS:基于条件流匹配的快速TTS架构

Shivam MehtaRuibo TuJonas BeskowÉva Székely以及Gustav Eje Henter

python pytorch lightning hydra black isort PyPI Downloads

这是🍵 Matcha-TTS的官方代码实现,发表于ICASSP 2024。

我们提出了🍵 Matcha-TTS,这是一种新的非自回归神经网络TTS方法,它使用条件流匹配(类似于修正流)来加速基于ODE的语音合成。我们的方法:

  • 具有概率性
  • 内存占用小
  • 发音非常自然
  • 合成速度极快

请访问我们的演示页面并阅读我们的ICASSP 2024论文,以获取更多详细信息。

预训练模型将通过CLI或Gradio界面自动下载。

您也可以在HuggingFace 🤗 spaces上,在浏览器中试用🍵 Matcha-TTS。

预告视频

观看视频

安装

  1. 创建环境(建议但非必需)
conda create -n matcha-tts python=3.10 -y
conda activate matcha-tts
  1. 使用pip或从源码安装Matcha TTS
pip install matcha-tts

从源码安装

pip install git+https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTS
pip install -e .
  1. 运行CLI / Gradio应用 / Jupyter Notebook
# 这将下载所需的模型
matcha-tts --text "<INPUT TEXT>"

或者

matcha-tts-app

或者打开Jupyter Notebook中的synthesis.ipynb

CLI参数

  • 要根据给定文本进行合成,运行:
matcha-tts --text "<INPUT TEXT>"
  • 要从文件中合成,运行:
matcha-tts --file <PATH TO FILE>
  • 要批量从文件中合成,运行:
matcha-tts --file <PATH TO FILE> --batched

其他参数

  • 语速
matcha-tts --text "<INPUT TEXT>" --speaking_rate 1.0
  • 采样温度
matcha-tts --text "<INPUT TEXT>" --temperature 0.667
  • 欧拉ODE求解器步数
matcha-tts --text "<INPUT TEXT>" --steps 10

使用您自己的数据集进行训练

假设我们正在使用LJ Speech数据集进行训练

  1. 这里下载数据集,将其解压到data/LJSpeech-1.1,并准备文件列表,使其指向解压后的数据,就像NVIDIA Tacotron 2仓库设置中的第5项一样。

  2. 克隆并进入Matcha-TTS仓库

git clone https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTS
  1. 从源码安装软件包
pip install -e .
  1. 打开configs/data/ljspeech.yaml并修改如下:
train_filelist_path: data/filelists/ljs_audio_text_train_filelist.txt
valid_filelist_path: data/filelists/ljs_audio_text_val_filelist.txt
  1. 使用数据集配置的yaml文件生成归一化统计信息
matcha-data-stats -i ljspeech.yaml
# 输出:
#{'mel_mean': -5.53662231756592, 'mel_std': 2.1161014277038574}

将这些值更新到configs/data/ljspeech.yaml中的data_statistics键下。

data_statistics:  # 为ljspeech数据集计算
  mel_mean: -5.536622
  mel_std: 2.116101

然后指定您的训练和验证文件列表路径。

  1. 运行训练脚本
make train-ljspeech

或者

python matcha/train.py experiment=ljspeech
  • 对于最小内存运行:
python matcha/train.py experiment=ljspeech_min_memory
  • 对于多GPU训练,运行:
python matcha/train.py experiment=ljspeech trainer.devices=[0,1]
  1. 使用自定义训练的模型进行合成
matcha-tts --text "<INPUT TEXT>" --checkpoint_path <PATH TO CHECKPOINT>

ONNX支持

特别感谢@mush42实现了ONNX导出与推理支持。

可以将Matcha检查点导出为ONNX格式,并在导出的ONNX图上进行推理。

ONNX导出

要将检查点导出为ONNX,首先安装ONNX:

pip install onnx

然后运行以下命令:

python3 -m matcha.onnx.export matcha.ckpt model.onnx --n-timesteps 5

可选地,ONNX导出工具接受vocoder-namevocoder-checkpoint参数。这使您可以将声码器嵌入到导出的图中,并在一次运行中生成波形(类似于端到端TTS系统)。

注意n_timesteps被视为超参数,而非模型输入。这意味着您应在导出时指定它(而不是在推理时)。如果未指定,n_timesteps将被设置为5

重要提示:目前需要torch>=2.1.0才能进行导出,因为在较旧的版本中,scaled_product_attention算子无法导出。在最终版本发布之前,想要导出模型的人必须手动安装预发布版的torch>=2.1.0。

ONNX 推理

要对导出的模型进行推理,首先使用以下命令安装 onnxruntime

pip install onnxruntime
pip install onnxruntime-gpu  # 用于 GPU 推理

然后使用以下命令:

python3 -m matcha.onnx.infer model.onnx --text "hey" --output-dir ./outputs

你还可以控制合成参数:

python3 -m matcha.onnx.infer model.onnx --text "hey" --output-dir ./outputs --temperature 0.4 --speaking_rate 0.9 --spk 0

要在 GPU 上运行推理,请确保已安装 onnxruntime-gpu 包,然后在推理命令中添加 --gpu 参数:

python3 -m matcha.onnx.infer model.onnx --text "hey" --output-dir ./outputs --gpu

如果你只将 Matcha 导出为 ONNX 格式,输出目录中会生成梅尔谱图的图表和 numpy 数组。如果在导出的图中嵌入了声码器,则会在输出目录中生成 .wav 音频文件。

如果你只将 Matcha 导出为 ONNX 格式,并希望运行完整的 TTS 流程,可以传递一个 ONNX 格式的声码器模型路径:

python3 -m matcha.onnx.infer model.onnx --text "hey" --output-dir ./outputs --vocoder hifigan.small.onnx

这将会在输出目录中生成 .wav 音频文件。

从 Matcha-TTS 中提取音素对齐信息

如果数据集的结构如下:

data/
└── LJSpeech-1.1
    ├── metadata.csv
    ├── README
    ├── test.txt
    ├── train.txt
    ├── val.txt
    └── wavs

那么你可以使用以下命令从训练好的 Matcha-TTS 模型中提取音素级别的对齐信息:

python  matcha/utils/get_durations_from_trained_model.py -i dataset_yaml -c <checkpoint>

例如:

python  matcha/utils/get_durations_from_trained_model.py -i ljspeech.yaml -c matcha_ljspeech.ckpt

或者更简单地:

matcha-tts-get-durations -i ljspeech.yaml -c matcha_ljspeech.ckpt

使用提取的对齐信息进行训练

在数据集配置文件中启用加载持续时间功能。例如:ljspeech.yaml

load_durations: True

或者参考配置文件中的示例:configs/experiment/ljspeech_from_durations.yaml

引用信息

如果你使用了我们的代码,或者以其他方式认为这项工作对你有所帮助,请引用我们的论文:

@inproceedings{mehta2024matcha,
  title={Matcha-{TTS}: A fast {TTS} architecture with conditional flow matching},
  author={Mehta, Shivam and Tu, Ruibo and Beskow, Jonas and Sz{\'e}kely, {\'E}va and Henter, Gustav Eje},
  booktitle={Proc. ICASSP},
  year={2024}
}

致谢

由于本代码使用了 Lightning-Hydra-Template,因此你将拥有该模板提供的所有功能。

我们还想感谢以下开源项目:

  • Coqui-TTS:帮助我解决了如何使 Cython 二进制文件可以通过 pip 安装的问题,并给予了鼓励。
  • Hugging Face Diffusers:感谢他们出色的 diffusers 库及其组件。
  • Grad-TTS:提供了单调对齐搜索的源代码。
  • torchdyn:在研发过程中尝试其他 ODE 求解器时非常有用。
  • labml.ai:提供了 RoPE 的实现。

版本历史

v0.0.72024/08/09
v0.0.62024/05/27
v0.0.52024/01/12
0.0.42023/09/29
0.0.32023/09/21
v0.0.1.dev42023/09/17

常见问题

相似工具推荐

openclaw

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

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

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

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

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

ComfyUI

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

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|6天前
插件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|★★☆☆☆|1周前
插件开发框架