SuperAPI AI 工具集

audiocraft-audio-generation

设计与创作

查看项目

更新于 10-21 16:17

技能介绍

用途

AudioCraft 是 Meta 的 PyTorch 音频生成库,用于文本生成音乐(MusicGen)和文本生成音效(AudioGen),并提供 EnCodec 神经音频编解码器。当需要从文字描述生成音乐、创建音效与环境音频、构建音乐生成应用、进行旋律条件生成、输出立体声或需要可控风格迁移时,可使用本库。若需要更长的商业音乐生成可考虑 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,文本转音效)。

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

使用方式

安装方式:

# 从 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)

EnCodec 音频压缩:

from audiocraft.models import CompressionModel
import torch
import torchaudio

model = CompressionModel.get_pretrained('facebook/encodec_32khz')
wav, sr = torchaudio.load("audio.wav")
if sr != 32000:
    resampler = torchaudio.transforms.Resample(sr, 32000)
    wav = resampler(wav)
with torch.no_grad():
    encoded = model.encode(wav.unsqueeze(0))
    codes = encoded[0]
with torch.no_grad():
    decoded = model.decode(codes)
torchaudio.save("reconstructed.wav", decoded[0].cpu(), sample_rate=32000)

适用场景

  • 音乐生成流水线:封装 MusicGenerator 类,支持单条与批量提示生成。
  • 音效设计批处理:根据规格列表批量生成爆炸、脚步、开门等音效。
  • Gradio 演示:搭建交互式音乐生成界面。
  • 音频压缩与重建:使用 EnCodec 编码为 token 再解码回波形。

限制

  • GPU 显存需求:musicgen-small 约 4GB(FP32)/2GB(FP16),medium 约 8GB/4GB,large 约 16GB/8GB。
  • 常见问题包括 CUDA OOM(需更小模型或更短时长)、质量不佳(提高 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