🚀 稳定音频开源模型 1.0
Stable Audio Open 1.0
能够根据文本提示生成长达 47 秒的 44.1kHz 立体声音频。该模型由自编码器、基于 T5 的文本嵌入和基于变压器的扩散模型三部分组成,可助力 AI 音乐与音频生成的研究与实验。
⚠️ 重要提示
如需商业使用,请参考 https://stability.ai/license。
💡 使用建议
点击“同意”即表示您同意 许可协议,并认可 Stability AI 的 隐私政策。
🚀 快速开始
Stable Audio Open 1.0
可与以下库结合使用:
stable-audio-tools
库
diffusers
库
✨ 主要特性
Stable Audio Open 1.0
由三个关键部分构成:
- 自编码器:可将波形压缩为易于处理的序列长度。
- 基于 T5 的文本嵌入:用于文本条件处理。
- 基于变压器的扩散(DiT)模型:在自编码器的潜在空间中运行。
📦 安装指南
使用此模型前,请确保将 diffusers
库升级到最新版本:
pip install -U diffusers
💻 使用示例
基础用法
以下是使用 stable-audio-tools
库进行推理的示例代码:
import torch
import torchaudio
from einops import rearrange
from stable_audio_tools import get_pretrained_model
from stable_audio_tools.inference.generation import generate_diffusion_cond
device = "cuda" if torch.cuda.is_available() else "cpu"
model, model_config = get_pretrained_model("stabilityai/stable-audio-open-1.0")
sample_rate = model_config["sample_rate"]
sample_size = model_config["sample_size"]
model = model.to(device)
conditioning = [{
"prompt": "128 BPM tech house drum loop",
"seconds_start": 0,
"seconds_total": 30
}]
output = generate_diffusion_cond(
model,
steps=100,
cfg_scale=7,
conditioning=conditioning,
sample_size=sample_size,
sigma_min=0.3,
sigma_max=500,
sampler_type="dpmpp-3m-sde",
device=device
)
output = rearrange(output, "b d n -> d (b n)")
output = output.to(torch.float32).div(torch.max(torch.abs(output))).clamp(-1, 1).mul(32767).to(torch.int16).cpu()
torchaudio.save("output.wav", output, sample_rate)
高级用法
使用 diffusers
库的示例代码:
import torch
import soundfile as sf
from diffusers import StableAudioPipeline
pipe = StableAudioPipeline.from_pretrained("stabilityai/stable-audio-open-1.0", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "The sound of a hammer hitting a wooden surface."
negative_prompt = "Low quality."
generator = torch.Generator("cuda").manual_seed(0)
audio = pipe(
prompt,
negative_prompt=negative_prompt,
num_inference_steps=200,
audio_end_in_s=10.0,
num_waveforms_per_prompt=3,
generator=generator,
).audios
output = audio[0].T.float().cpu().numpy()
sf.write("hammer.wav", output, pipe.vae.sampling_rate)
更多优化和使用细节请参考 文档。
📚 详细文档
模型详情
训练数据集
所用数据集
我们的数据集包含 486492 条音频记录,其中 472618 条来自 Freesound,13874 条来自自由音乐档案(FMA)。所有音频文件均遵循 CC0、CC BY 或 CC Sampling+ 许可协议。这些数据用于训练我们的自编码器和 DiT 模型。我们使用公开可用的预训练 T5 模型(t5-base)进行文本条件处理。
归属信息
用于训练 Stable Audio Open 1.0
的所有音频记录的归属信息可在我们的 归属页面 上找到。
风险缓解
在开始训练之前,我们进行了深入分析,以确保训练数据中不存在未经授权的受版权保护的音乐。
- Freesound 数据集:我们首先使用基于 AudioSet 类的 PANNs 音乐分类器识别 Freesound 中的音乐样本。识别出的音乐样本至少有 30 秒的音乐,且被预测属于与音乐相关的类别,阈值为 0.15(PANNs 输出概率范围为 0 到 1)。该阈值是通过对 FMA 中已知音乐示例进行分类并确保不存在假阴性来确定的。然后,我们将识别出的音乐样本发送给 Audible Magic 的识别服务(一家值得信赖的内容检测公司),以确保不存在受版权保护的音乐。Audible Magic 标记了疑似受版权保护的音乐,我们在对数据集进行训练之前将其移除。大部分移除的内容是背景中播放受版权保护音乐的现场录音。经过此过程后,我们剩下 266324 条 CC0、194840 条 CC-BY 和 11454 条 CC Sampling+ 音频记录。
- FMA 子集:由于 FMA 子集由音乐信号组成,我们的处理过程略有不同。我们对一个大型受版权保护音乐数据库(https://www.kaggle.com/datasets/maharshipandya/-spotify-tracks-dataset)进行元数据搜索,并标记任何潜在匹配项。标记的内容由人工进行单独审核。经过此过程后,我们最终得到 8967 条 CC-BY 和 4907 条 CC0 曲目。
使用与限制
预期用途
Stable Audio Open
的主要用途是基于 AI 的音乐和音频生成的研究与实验,包括:
- 研究工作,以更好地理解生成模型的局限性并进一步推动科学发展。
- 机器学习从业者和艺术家通过文本引导生成音乐和音频,以探索生成式 AI 模型的当前能力。
超出范围的用例
在未进行进一步风险评估和缓解的情况下,该模型不应用于下游应用。该模型不应被用于故意创建或传播会给人们带来敌对或排斥环境的音频或音乐作品。
局限性
- 该模型无法生成逼真的人声。
- 该模型使用英语描述进行训练,在其他语言中的表现不佳。
- 该模型在所有音乐风格和文化中的表现不尽相同。
- 该模型在生成音效和现场录音方面比音乐更好。
- 有时很难评估哪种类型的文本描述能提供最佳生成效果。可能需要进行提示工程才能获得满意的结果。
偏差
数据来源可能缺乏多样性,并非所有文化都在数据集中得到平等体现。该模型在各种音乐流派和音效上的表现可能不尽相同。模型生成的样本将反映训练数据中的偏差。
📄 许可证
本项目采用 Stable Audio Community 许可证。