语言:
- 英文
库名称: stable-audio-tools
许可证: 其他
许可证名称: stable-audio-community
许可证链接: LICENSE
管道标签: 文本转音频
额外授权提示: 点击"同意"即表示您同意许可协议并确认已阅读Stability AI的隐私政策。
额外授权字段:
姓名: 文本
电子邮箱: 文本
国家: 国家选择
所属组织: 文本
是否愿意接收Stability AI产品、服务及研究的电子邮件更新与促销信息?:
类型: 选择
选项:
- '是'
- '否'
您计划如何使用该模型?:
类型: 选择
选项:
- 研究用途
- 个人使用
- 创意专业人士
- 初创企业
- 商业机构
我同意许可协议并确认Stability AI的隐私政策: 复选框
Stable Audio Open 1.0

请注意:商业用途请参考https://stability.ai/license
模型描述
Stable Audio Open 1.0
能够根据文本提示生成最长47秒的44.1kHz立体声音频。该模型包含三个核心组件:将波形压缩为可管理序列长度的自编码器、基于T5的文本嵌入模块用于文本条件控制,以及在自编码器潜在空间运行的基于Transformer的扩散模型(DiT)。
使用方法
本模型可与以下工具配合使用:
stable-audio-tools
库
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"
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科技浩室鼓点循环",
"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
请确保升级至最新版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")
prompt = "锤子敲击木质表面的声音。"
negative_prompt = "低质量。"
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)
更多优化与使用细节请参阅文档。