🚀 TANGO:使用指令引导扩散的文本转音频模型
TANGO 是一款用于文本转音频生成的潜在扩散模型。它能够根据文本提示生成逼真的音频,涵盖人类声音、动物声音、自然和人造声音以及音效等。我们使用经过冻结处理且经过指令微调的大语言模型 Flan - T5 作为文本编码器,并训练了一个基于 UNet 的扩散模型用于音频生成。在客观和主观指标上,我们的模型均优于当前最先进的音频生成模型。我们向研究社区发布了模型、训练和推理代码以及预训练检查点。
📣 我们最近发布了 Tango 2,可点击此处访问。
📣 我们正在发布在 TangoPromptBank 上进行预训练的 Tango - Full。
🚀 快速开始
下载模型并生成音频
下载 TANGO 模型并根据文本提示生成音频:
import IPython
import soundfile as sf
from tango import Tango
tango = Tango("declare-lab/tango-full-ft-audiocaps")
prompt = "An audience cheering and clapping"
audio = tango.generate(prompt)
sf.write(f"{prompt}.wav", audio, samplerate=16000)
IPython.display.Audio(data=audio, rate=16000)
An audience cheering and clapping.webm
模型将自动下载并保存到缓存中。后续运行将直接从缓存中加载模型。
调整步数以提高音频质量
generate
函数默认使用 100 步从潜在扩散模型中采样。我们建议使用 200 步来生成更高质量的音频,但这会增加运行时间。
prompt = "Rolling thunder with lightning strikes"
audio = tango.generate(prompt, steps=200)
IPython.display.Audio(data=audio, rate=16000)
Rolling thunder with lightning strikes.webm
批量生成音频
使用 generate_for_batch
函数为一批文本提示生成多个音频样本:
prompts = [
"A car engine revving",
"A dog barks and rustles with some clicking",
"Water flowing and trickling"
]
audios = tango.generate_for_batch(prompts, samples=2)
这将为三个文本提示中的每个提示生成两个样本。
📦 安装指南
请遵循仓库中的说明进行安装、使用和实验。我们的代码发布在:https://github.com/declare-lab/tango
💻 使用示例
基础用法
import IPython
import soundfile as sf
from tango import Tango
tango = Tango("declare-lab/tango-full-ft-audiocaps")
prompt = "An audience cheering and clapping"
audio = tango.generate(prompt)
sf.write(f"{prompt}.wav", audio, samplerate=16000)
IPython.display.Audio(data=audio, rate=16000)
高级用法
prompt = "Rolling thunder with lightning strikes"
audio = tango.generate(prompt, steps=200)
IPython.display.Audio(data=audio, rate=16000)
prompts = [
"A car engine revving",
"A dog barks and rustles with some clicking",
"Water flowing and trickling"
]
audios = tango.generate_for_batch(prompts, samples=2)
📚 详细文档
我们上传了几个 TANGO 生成的样本,可访问:https://tango-web.github.io/
📄 许可证
本项目采用 CC - BY - NC - SA 4.0 许可证。
📋 信息表格