SuperAPI AI 工具集

audiocraft-audio-generation

设计与创作

查看项目

更新于 10-15 18:31

技能介绍

用途

AudioCraft 是 Meta 的 PyTorch 音频生成库,用于文本生成音乐和文本生成音频。当需要从文本描述生成音乐、创建音效与环境音频、构建音乐生成应用、进行旋律条件音乐生成、需要立体声输出,或需要带风格迁移的可控音乐生成时,可以使用它。

文档同时列出了替代方案:需要更长的商业音乐生成可用 Stable Audio;需要带音乐/音效的文本转语音可用 Bark;基于频谱图的音乐生成可用 Riffusion;带歌词的原始音频生成可用 OpenAI Jukebox。

主要能力

  • 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,文本生成音效)。

使用方式

安装方式有三种:

# From PyPI
pip install audiocraft

# From GitHub (latest)
pip install git+https://github.com/facebookresearch/audiocraft.git

# Or use HuggingFace Transformers
pip install transformers torch torchaudio

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

import torchaudio
from audiocraft.models import MusicGen

# Load model
model = MusicGen.get_pretrained('facebook/musicgen-small')

# Set generation parameters
model.set_generation_params(
    duration=8,  # seconds
    top_k=250,
    temperature=1.0
)

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

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

使用 HuggingFace Transformers:

from transformers import AutoProcessor, MusicgenForConditionalGeneration
import scipy

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

# Generate music
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
)

# Save
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

# Load AudioGen
model = AudioGen.get_pretrained('facebook/audiogen-medium')

model.set_generation_params(duration=5)

# Generate sound effects
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-stereo-medium)、音频续写(通过 Transformers 传入音频与文本),以及 MusicGen-Style 的风格条件生成(generate_with_style,可设置 cfg_coef_beta 控制风格影响、eval_q 与 excerpt_length 配置风格条件器,也支持仅风格无文本的生成)。AudioGen 支持批量生成多种音效。EnCodec 支持音频编码为 tokens 再解码重建。

文档还提供了三个常见工作流示例:音乐生成流水线(封装 MusicGenerator 类)、音效设计批处理(batch_generate_sounds 函数)、Gradio 演示界面。

适用场景

  • 从文本描述生成音乐。
  • 创建音效与环境音频。
  • 构建音乐生成应用。
  • 旋律条件音乐生成。
  • 立体声音频输出。
  • 带风格迁移的可控音乐生成。

限制与注意事项

性能优化方面:可使用更小模型、在生成之间清空缓存(torch.cuda.empty_cache())、生成更短时长、使用半精度(model.half());批量处理多个提示比逐个处理更高效。

GPU 显存需求:musicgen-small 约 4GB(FP32)/约 2GB(FP16);musicgen-medium 约 8GB/约 4GB;musicgen-large 约 16GB/约 8GB。

常见问题与解决:CUDA OOM 可改用更小模型或缩短时长;质量不佳可提高 cfg_coef 或优化提示词;生成过短需检查最大时长设置;音频伪影可尝试不同 temperature;立体声不生效需使用立体声模型变体。

文档还引用了进阶用法(训练、微调、部署)与故障排查资料,以及 GitHub、论文、HuggingFace 与 Demo 等资源链接。