tango
Tango 是一个基于扩散模型的开源项目,专为“文生音频”任务设计。它能将简单的文字描述转化为逼真的声音,涵盖人声、动物叫声、自然环境音、机械声以及各种音效,甚至支持音乐生成。
针对传统音频生成模型往往需要海量数据训练且输出不够自然的问题,Tango 创新性地结合了冻结指令的大语言模型(Flan-T5)作为文本编码器,与基于 UNet 的扩散模型协同工作。这一架构使其仅用相当于同类最先进模型六十三分之一的数据量,就能在客观和主观评估中达到顶尖水平。其升级版 Tango 2 进一步引入了基于人类反馈的直接偏好优化(DPO)技术,利用 Audio-Alpaca 数据集进行对齐训练,显著提升了生成音频的质量和相关性,实现了更快的推理速度。
Tango 非常适合 AI 研究人员探索多模态生成技术,也适合开发者将其集成到应用中进行二次开发。同时,对于游戏设计师、视频创作者等需要快速获取高质量素材的专业人士,Tango 提供了高效的创作辅助能力。项目完全开源,提供了从预训练模型、训练代码到在线演示的完整资源,降低了技术使用门槛,助力社区共同推动音频生成技术的发展。
使用场景
独立游戏开发者小林正在为一款复古像素风冒险游戏制作音效,需要大量匹配特定场景(如“雨夜中的脚步声”或“机械怪兽的低吼”)的独特音频素材。
没有 tango 时
- 素材库局限:只能在免费音效网站反复搜索,很难找到完全契合“机械怪兽低吼”这种具体描述的现成文件,往往被迫使用勉强凑合的替代品。
- 版权风险高:部分高质量音效需付费购买或标注来源,增加了项目预算和法律合规的排查成本。
- 定制成本昂贵:若委托专业拟音师定制,单条音效报价高且沟通修改周期长,严重拖慢开发进度。
- 风格不统一:东拼西凑来的音效在音色质感上差异巨大,导致游戏整体听觉体验割裂,缺乏沉浸感。
使用 tango 后
- 精准生成:直接输入“雨夜中踩在积水石板上的脚步声”等自然语言提示,tango 即可生成高度匹配且细节丰富的专属音效。
- 零版权负担:生成的音频由模型原创,开发者可放心将其用于商业项目,无需担心侵权纠纷。
- 即时迭代:对生成结果不满意时,只需微调提示词(如增加“更沉闷的回声”),几秒钟内即可获得新版本,极大提升了试错效率。
- 风格一致性强:通过控制提示词的语调和技术参数,能批量产出质感统一的音效系列,完美维持游戏的听觉美学。
tango 将原本耗时数周的音效搜集与定制工作压缩至几小时,让小型团队也能以低成本拥有电影级的原创音频资产。
运行环境要求
- Linux
需要 NVIDIA GPU,需安装与设备匹配的 CUDA 版本(示例环境为 cu117),具体显存需求未说明
未说明

快速开始
Tango:LLM引导的扩散模型文生音频及基于DPO的对齐
🔥如果你喜欢Tango,请查看我们的最新创新Jam,一款歌词转歌曲生成器:https://github.com/declare-lab/jamify
🔥🎤 我们发布了TangoFlux,这是文生音频领域的最新SOTA。现在你可以在不到3秒内生成30秒的音频。请访问Github。
Tango 2论文 | Tango 2模型 | Tango 2演示 | Tango 2 Replicate演示 | Audio-Alpaca | Tango 2官网
Tango论文 | Tango模型 | Tango演示 | Tango官网
Google Colab快速入门
| Colab | 信息 |
|---|---|
| Tango_2_Google_Colab_demo.ipynb |
Tango模型家族
| 模型名称 | 模型路径 |
|---|---|
| Tango | https://huggingface.co/declare-lab/tango |
| Tango-Full-FT-Audiocaps | https://huggingface.co/declare-lab/tango-full-ft-audiocaps |
| Tango-Full-FT-Audio-Music-Caps | https://huggingface.co/declare-lab/tango-full-ft-audio-music-caps |
| Mustango | https://huggingface.co/declare-lab/mustango |
| Tango-Full | https://huggingface.co/declare-lab/tango-full |
| Tango-2 | https://huggingface.co/declare-lab/tango2 |
| Tango-2-full | https://huggingface.co/declare-lab/tango2-full |
| Tango-AF-AC-FT-AC | https://huggingface.co/declare-lab/tango-af-ac-ft-ac |
| TangoMusic-AF-FT-MC | https://huggingface.co/declare-lab/tango-music-af-ft-mc |
描述
TANGO 是一个用于文生音频(TTA)的潜在扩散模型(LDM)。TANGO 可以根据文本提示生成逼真的音频,包括人声、动物声音、自然和人造声音以及音效。我们使用冻结的指令微调LLM Flan-T5作为文本编码器,并训练了一个基于UNet的扩散模型来进行音频生成。尽管我们在一个规模小63倍的数据集上训练了LDM,但在客观和主观指标上,我们的表现与当前最先进的TTA模型相当。我们向研究社区开放了我们的模型、训练和推理代码以及预训练检查点。
🎵 🔥 我们发布了基于Tango构建的Tango 2,用于文生音频。Tango 2以Tango-full-ft检查点为初始状态,并在audio-alpaca这一成对文生音频偏好数据集上使用DPO进行了对齐训练。🎶
🎵 🔥 我们还发布了Audio-alpaca。Audio-alpaca 是一个成对偏好数据集,包含约1.5万个(提示,音频_w, 音频_l)三元组,其中给定一个文本提示,音频_w是更受欢迎的生成音频,而音频_l则是不理想的音频。下载Audio-alpaca。Tango 2 就是在Audio-alpaca 上进行训练的。
快速入门指南
下载TANGO模型,并根据文本提示生成音频:
import IPython
import soundfile as sf
from tango import Tango
tango = Tango("declare-lab/tango2")
prompt = "观众欢呼鼓掌"
audio = tango.generate(prompt)
sf.write(f"{prompt}.wav", audio, samplerate=16000)
IPython.display.Audio(data=audio, rate=16000)
模型会自动下载并保存在缓存中。后续运行将直接从缓存加载模型。
generate函数默认使用100步来从潜在扩散模型中采样。我们建议使用200步以生成更高质量的音频。不过这会增加运行时间。
prompt = "雷鸣电闪"
audio = tango.generate(prompt, steps=200)
IPython.display.Audio(data=audio, rate=16000)
使用generate_for_batch函数可以为一批文本提示生成多个音频样本:
prompts = [
"汽车引擎轰鸣",
"狗吠声伴随着一些咔嗒声",
"水流潺潺"
]
audios = tango.generate_for_batch(prompts, samples=2)
这将为三个文本提示中的每一个生成两个样本。
更多生成的样本请见这里。
先决条件
我们的代码基于PyTorch 1.13.1+cu117版本。虽然我们在requirements文件中注明了torch==1.13.1,但根据你的GPU设备类型,你可能需要安装特定CUDA版本的PyTorch。
安装requirements.txt。
git clone https://github.com/declare-lab/tango/
cd tango
pip install -r requirements.txt
在Linux系统上,你可能还需要安装libsndfile1,以便soundfile能够正常工作:
(sudo) apt-get install libsndfile1
数据集
请按照 AudioCaps 仓库 中的说明下载数据。音频文件路径及对应的字幕描述已提供在我们的 data 目录中。*.json 文件用于训练和评估。下载完数据后,您应该能够通过文件 ID 将其映射到我们 data/*.json 文件中提供的文件路径。
请注意,由于版权问题,我们无法分发这些数据。
🎵 🔥 我们还提供了 Audio-alpaca 数据集。Audio-alpaca 是一个成对偏好数据集,包含约 1.5 万个 (prompt, audio_w, audio_l) 三元组:给定一个文本提示,audio_w 是更优的生成音频,而 audio_l 则是较差的音频。下载 Audio-alpaca。Tango 2 就是在 Audio-alpaca 上训练得到的。
如何训练?
我们使用 Hugging Face 的 accelerate 包进行多 GPU 训练。在终端运行 accelerate config,并根据提示设置您的运行配置。
现在您可以使用以下命令在 AudioCaps 数据集上训练 TANGO:
accelerate launch train.py \
--text_encoder_name="google/flan-t5-large" \
--scheduler_name="stabilityai/stable-diffusion-2-1" \
--unet_model_config="configs/diffusion_model_config.json" \
--freeze_text_encoder --augment --snr_gamma 5 \
参数 --augment 使用了我们在论文中提到的增强数据进行训练。我们建议至少训练 40 个 epoch,这也是 train.py 中的默认设置。
若要从我们发布的检查点开始训练,请使用 --hf_model 参数:
accelerate launch train.py \
--hf_model "declare-lab/tango" \
--unet_model_config="configs/diffusion_model_config.json" \
--freeze_text_encoder --augment --snr_gamma 5 \
有关完整参数列表及其用法,请参阅 train.py 和 train.sh。
训练脚本应会自动从 这里 下载 AudioLDM 权重。但如果下载速度较慢或遇到其他问题,您可以:i) 从 这里 下载 audioldm-s-full 文件,ii) 将其重命名为 audioldm-s-full.ckpt,iii) 存放在 /home/user/.cache/audioldm/ 目录中。
要在 TANGO 检查点的基础上,使用 TANGO 2 在 Audio-alpaca 数据集上进行训练:
训练脚本将下载 audio_alpaca 的 WAV 文件,并将其保存在 {PATH_TO_DOWNLOAD_WAV_FILE}/audio_alpaca 目录下。默认位置为 ~/.cache/huggingface/datasets。
accelerate launch tango2/tango2-train.py --hf_model "declare-lab/tango-full-ft-audiocaps" \
--unet_model_config="configs/diffusion_model_config.json" \
--freeze_text_encoder \
--learning_rate=9.6e-7 \
--num_train_epochs=5 \
--num_warmup_steps=200 \
--per_device_train_batch_size=4 \
--per_device_eval_batch_size=4 \
--gradient_accumulation_steps=4 \
--beta_dpo=2000 \
--sft_first_epochs=1 \
--dataset_dir={PATH_TO_DOWNLOAD_WAV_FILE}
如何进行推理?
从您自己训练的检查点
训练得到的检查点将保存在 saved/*/ 目录中。
要从您训练好的检查点在 AudioCaps 测试集上进行音频生成和客观评估:
CUDA_VISIBLE_DEVICES=0 python inference.py \
--original_args="saved/*/summary.jsonl" \
--model="saved/*/best/pytorch_model_2.bin" \
有关完整参数列表及其用法,请参阅 inference.py 和 inference.sh。
要对 TANGO 2 进行音频生成和客观评估:
CUDA_VISIBLE_DEVICES=0 python tango2/inference.py \
--original_args="saved/*/summary.jsonl" \
--model="saved/*/best/pytorch_model_2.bin" \
请注意,TANGO 2 的推理脚本与 TANGO 的不同。
从我们在 Hugging Face Hub 上发布的检查点
要从我们的 Hugging Face 检查点在 AudioCaps 测试集上进行音频生成和客观评估:
python inference_hf.py --checkpoint="declare-lab/tango"
注意事项
我们在 inference.py 中使用了 audioldm_eval 提供的功能来进行客观评估。该功能要求黄金参考音频文件和生成音频文件具有相同的文件名。您需要创建目录 data/audiocaps_test_references/subset,并将参考音频文件放在此处。文件名应如下所示:output_0.wav, output_1.wav 等等。文件编号应与 data/test_audiocaps_subset.json 中对应行的索引一致。
我们使用术语 subset,是因为 AudioCaps 原始数据集中的一些实例后来已被 YouTube 删除,不再可用。因此,我们仅对截至 2023 年 4 月 8 日仍可获取的数据实例进行了模型评估。
我们使用 WandB 来记录训练和推理结果。
实验结果
Tango
| 模型 | 数据集 | 文本 | 参数量 | FD ↓ | KL ↓ | FAD ↓ | OVL ↑ | REL ↑ |
|---|---|---|---|---|---|---|---|---|
| 真实数据 | − | − | − | − | − | − | 91.61 | 86.78 |
| DiffSound | AS+AC | ✓ | 400M | 47.68 | 2.52 | 7.75 | − | − |
| AudioGen | AS+AC+8 others | ✗ | 285M | − | 2.09 | 3.13 | − | − |
| AudioLDM-S | AC | ✗ | 181M | 29.48 | 1.97 | 2.43 | − | − |
| AudioLDM-L | AC | ✗ | 739M | 27.12 | 1.86 | 2.08 | − | − |
| AudioLDM-M-Full-FT‡ | AS+AC+2 others | ✗ | 416M | 26.12 | 1.26 | 2.57 | 79.85 | 76.84 |
| AudioLDM-L-Full‡ | AS+AC+2 others | ✗ | 739M | 32.46 | 1.76 | 4.18 | 78.63 | 62.69 |
| AudioLDM-L-Full-FT | AS+AC+2 others | ✗ | 739M | 23.31 | 1.59 | 1.96 | − | − |
| TANGO | AC | ✓ | 866M | 24.52 | 1.37 | 1.59 | 85.94 | 80.36 |
Tango 2
| 模型 | 参数量 | FAD ↓ | KL ↓ | IS ↑ | CLAP ↑ | OVL ↑ | REL ↑ |
|---|---|---|---|---|---|---|---|
| AudioLDM-M-Full-FT | 416M | 2.57 | 1.26 | 8.34 | 0.43 | - | - |
| AudioLDM-L-Full | 739M | 4.18 | 1.76 | 7.76 | 0.43 | - | - |
| AudioLDM 2-Full | 346M | 2.18 | 1.62 | 6.92 | 0.43 | - | - |
| AudioLDM 2-Full-Large | 712M | 2.11 | 1.54 | 8.29 | 0.44 | 3.56 | 3.19 |
| Tango-full-FT | 866M | 2.51 | 1.15 | 7.87 | 0.54 | 3.81 | 3.77 |
| Tango 2 | 866M | 2.69 | 1.12 | 9.09 | 0.57 | 3.99 | 4.07 |
引用
如果您觉得我们的工作有所帮助,请考虑引用以下文章:
@misc{majumder2024tango,
title={Tango 2: 通过直接偏好优化对齐基于扩散的文本到音频生成},
author={Navonil Majumder 和 Chia-Yu Hung、Deepanway Ghosal、Wei-Ning Hsu、Rada Mihalcea 和 Soujanya Poria},
year={2024},
eprint={2404.09956},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
@article{ghosal2023tango,
title={使用指令微调的 LLM 和潜在扩散模型进行文本到音频生成},
author={Ghosal, Deepanway 和 Majumder, Navonil 以及 Mehrish, Ambuj 和 Poria, Soujanya},
journal={arXiv 预印本 arXiv:2304.13731},
year={2023}
}
致谢
我们借用了 audioldm 和 audioldm_eval 中的代码,这些代码来自 AudioLDM 的 仓库。我们感谢 AudioLDM 团队开源他们的代码。
常见问题
相似工具推荐
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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备