HuggingFace镜像/stable-audio-open-1.0
模型介绍文件和版本分析
下载使用量0

Stable Audio Open 1.0

Stable Audio Open logo

请注意:商业用途请参考 https://stability.ai/license

模型说明

Stable Audio Open 1.0 可根据文本提示生成可变长度(最长 47 秒)的 44.1kHz 立体声音频。它由三个组件构成:一个将波形压缩为可处理序列长度的自动编码器、一个用于文本条件控制的基于 T5 的文本嵌入,以及一个在自动编码器潜在空间中运行的基于 Transformer 的扩散(DiT)模型。

使用方法

本模型可通过以下方式使用:

  1. stable-audio-tools 库
  2. diffusers 库

使用 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 架构的潜在扩散模型。
  • 语言:英语
  • 许可证:Stability AI 社区许可证。
  • 商业许可证:如需将此模型用于商业用途,请参阅 https://stability.ai/license
  • 研究论文:https://arxiv.org/abs/2407.14358

训练数据集

使用的数据集

我们的数据集包含 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 的音乐和音频生成方面的研究与实验,包括:

  • 开展研究工作以更好地理解生成模型的局限性,并进一步推动科学发展。
  • 由机器学习从业者和艺术家通过文本引导生成音乐和音频,以探索生成式 AI 模型的当前能力。

超出范围的使用场景

未经进一步的风险评估和缓解措施,不得将该模型用于下游应用。不得使用该模型故意创建或传播会给人们造成敌意或疏离环境的音频或音乐作品。

局限性

  • 该模型无法生成逼真的人声。
  • 该模型使用英文描述进行训练,在其他语言上的表现可能不佳。
  • 该模型在所有音乐风格和文化方面的表现并非均等。
  • 该模型在生成音效和田野录音方面比生成音乐更擅长。
  • 有时难以确定何种类型的文本描述能产生最佳生成效果。可能需要进行提示词工程以获得令人满意的结果。

偏差

数据来源可能缺乏多样性,数据集中并非所有文化都得到了平等的代表。该模型在各种音乐流派和音效上的表现可能不均等。模型生成的样本将反映训练数据中的偏差。