SuperAPI AI 工具集

multimodal-audiocraft

设计与创作

查看项目

更新于 10-28 01:22

技能介绍

用途

AudioCraft 是 Meta 提供的音频生成工具库,用于从文本描述生成音乐和音效。它主要面向以下需求:根据文字描述生成音乐、创建音效与环境音、构建音乐生成应用、进行旋律条件化的音乐生成、输出立体声音频,以及通过风格迁移实现可控的音乐生成。

主要能力

AudioCraft 包含三个核心组件:

  • MusicGen:文本到音乐的生成,支持旋律条件化。
  • AudioGen:文本到音效的生成。
  • EnCodec:高保真神经音频编解码器。

模型提供多种规模,从 Small(300M)到 Large(3.3B)。支持立体声音频生成,并提供 MusicGen-Style 用于基于参考音频的风格条件生成。

模型变体包括:musicgen-small(300M,快速生成)、musicgen-medium(1.5B,均衡)、musicgen-large(3.3B,最佳质量)、musicgen-melody(1.5B,文本+旋律)、musicgen-melody-large(3.3B,最佳旋律)、musicgen-stereo-*(立体声输出)、musicgen-style(1.5B,风格迁移)、audiogen-medium(1.5B,文本到音效)。

使用方式

安装方式:

# 从 PyPI 安装
pip install audiocraft

# 从 GitHub 安装最新版
pip install git+https://github.com/facebookresearch/audiocraft.git

# 或使用 HuggingFace Transformers
pip install transformers torch torchaudio

基础文本生成音乐(AudioCraft):

import torchaudio
from audiocraft.models import MusicGen

model = MusicGen.get_pretrained('facebook/musicgen-small')
model.set_generation_params(duration=8, top_k=250, temperature=1.0)

descriptions = ["happy upbeat electronic dance music with synths"]
wav = model.generate(descriptions)

torchaudio.save("output.wav", wav[0].cpu(), sample_rate=32000)

使用 HuggingFace Transformers:

from transformers import AutoProcessor, MusicgenForConditionalGeneration
import scipy

processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
model.to("cuda")

inputs = processor(
    text=["80s pop track with bassy drums and synth"],
    padding=True,
    return_tensors="pt"
).to("cuda")

audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("output.wav", rate=sampling_rate, data=audio_values[0, 0].cpu().numpy())

文本生成音效(AudioGen):

from audiocraft.models import AudioGen

model = AudioGen.get_pretrained('facebook/audiogen-medium')
model.set_generation_params(duration=5)

descriptions = ["dog barking in a park with birds chirping"]
wav = model.generate(descriptions)

torchaudio.save("sound.wav", wav[0].cpu(), sample_rate=16000)

生成参数包括:duration(默认 8.0 秒,范围 1-120)、top_k(默认 250)、top_p(默认 0.0,0 表示禁用)、temperature(默认 1.0)、cfg_coef(默认 3.0)。

MusicGen 还支持旋律条件生成(generate_with_chroma)、立体声生成、音频续写,以及 MusicGen-Style 的风格条件生成(generate_with_style)和纯风格生成。EnCodec 可用于音频压缩,将音频编码为 tokens 再解码还原。

适用场景

  • 根据文本描述生成音乐
  • 创建音效和环境音频
  • 构建音乐生成应用
  • 旋律条件化的音乐生成
  • 需要立体声音频输出
  • 需要风格迁移的可控音乐生成

限制与替代方案

若需要更长的商业音乐生成,可考虑 Stable Audio;文本转语音并带音乐/音效可考虑 Bark;基于频谱图的音乐生成可考虑 Riffusion;带歌词的原始音频生成可考虑 OpenAI Jukebox。

性能方面,GPU 显存需求:musicgen-small 约 4GB(FP32)/ 2GB(FP16),musicgen-medium 约 8GB / 4GB,musicgen-large 约 16GB / 8GB。常见问题包括 CUDA 显存不足(可换小模型或缩短时长)、质量不佳(可提高 cfg_coef 或优化提示词)、生成过短(检查最大时长设置)、音频伪影(尝试不同 temperature)、立体声不工作(需使用立体声模型变体)。

参考资源

  • GitHub:https://github.com/facebookresearch/audiocraft
  • 论文(MusicGen):https://arxiv.org/abs/2306.05284
  • 论文(AudioGen):https://arxiv.org/abs/2209.15352
  • HuggingFace:https://huggingface.co/facebook/musicgen-small
  • 演示:https://huggingface.co/spaces/facebook/MusicGen