
请注意:商业用途请参考 https://stability.ai/license
Stable Audio Open 1.0 可根据文本提示生成可变长度(最长 47 秒)的 44.1kHz 立体声音频。它由三个组件构成:一个将波形压缩为可处理序列长度的自动编码器、一个用于文本条件控制的基于 T5 的文本嵌入,以及一个在自动编码器潜在空间中运行的基于 Transformer 的扩散(DiT)模型。
本模型可通过以下方式使用:
stable-audio-tools该模型旨在与 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"
# Download model
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)
# Set up text and timing conditioning
conditioning = [{
"prompt": "128 BPM tech house drum loop",
"seconds_start": 0,
"seconds_total": 30
}]
# Generate stereo audio
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
)
# Rearrange audio batch to a single sequence
output = rearrange(output, "b d n -> d (b n)")
# Peak normalize, clip, convert to int16, and save to file
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 配合使用请确保将 diffusers 升级到最新版本:pip install -U 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")
# define the prompts
prompt = "The sound of a hammer hitting a wooden surface."
negative_prompt = "Low quality."
# set the seed for generator
generator = torch.Generator("cuda").manual_seed(0)
# run the generation
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)
有关优化和使用的更多详细信息,请参阅 文档。
Stable Audio Open 1.0 是一个基于 Transformer 架构的潜在扩散模型。我们的数据集包含 486,492 条音频录音,其中 472,618 条来自 Freesound,13,874 条来自 Free Music Archive (FMA)。所有音频文件均根据 CC0、CC BY 或 CC Sampling+ 许可授权。这些数据用于训练我们的自编码器和 DiT。我们使用公开可用的预训练 T5 模型 (t5-base) 进行文本条件控制。
用于训练 Stable Audio Open 1.0 的所有音频录音的归属信息可在我们的 归属页面 上找到。
在开始训练之前,我们进行了深入分析,以确保训练数据中不存在未经授权的受版权保护的音乐。
为此,我们首先使用基于 AudioSet 类别的 PANNs 音乐分类器在 Freesound 中识别音乐样本。识别出的音乐样本至少包含 30 秒的音乐,并且被预测属于音乐相关类别,阈值为 0.15(PANNs 输出概率范围为 0 到 1)。该阈值是通过对 FMA 中的已知音乐示例进行分类并确保不存在假阴性而确定的。
识别出的音乐样本被发送到 Audible Magic 的识别服务(一家值得信赖的内容检测公司),以确保不存在受版权保护的音乐。Audible Magic 标记了疑似受版权保护的音乐,我们在对数据集进行训练之前将其移除。大部分被移除的内容是背景中播放着受版权保护音乐的田野录音。经过此过程后,我们剩下 266,324 条 CC0、194,840 条 CC-BY 和 11,454 条 CC Sampling+ 音频录音。
我们还进行了深入分析,以确保 FMA 子集中不存在受版权保护的内容。在这种情况下,流程略有不同,因为 FMA 子集包含音乐信号。我们根据一个大型受版权保护音乐数据库(https://www.kaggle.com/datasets/maharshipandya/-spotify-tracks-dataset)进行元数据搜索,并标记任何潜在匹配项。标记的内容由人工进行单独审核。经过此过程后,我们最终得到 8,967 条 CC-BY 和 4,907 条 CC0 音轨。
Stable Audio Open 的主要用途是基于 AI 的音乐和音频生成方面的研究与实验,包括:
未经进一步的风险评估和缓解措施,不得将该模型用于下游应用。不得使用该模型故意创建或传播会给人们造成敌意或疏离环境的音频或音乐作品。
数据来源可能缺乏多样性,数据集中并非所有文化都得到了平等的代表。该模型在各种音乐流派和音效上的表现可能不均等。模型生成的样本将反映训练数据中的偏差。