模型:

facebook/musicgen-medium

英文

MusicGen - Medium - 1.5B

MusicGen是一个文本转音乐模型,能够根据文本描述或音频提示生成高质量的音乐样本。它是一个单阶段自回归Transformer模型,使用32kHz的EnCodec tokenizer进行训练,采样频率为50 Hz的4个码本。与现有的方法(如MusicLM)不同,MusicGen不需要自监督的语义表示,并且可以在一次传递中生成所有4个码本。通过在码本之间引入小的延迟,我们展示了可以并行预测它们,从而每秒仅需要50个自回归步骤以生成音频。

MusicGen是由Jade Copet,Felix Kreuk,Itai Gat,Tal Remez,David Kant,Gabriel Synnaeve,Yossi Adi,Alexandre Défossez于 Simple and Controllable Music Generation 年发表的。

发布了四个检查点:

示例

自己试试MusicGen吧!

  • Audiocraft Colab:
  • Hugging Face Colab:
  • Hugging Face Demo:

? Transformers使用

您可以使用? Transformers库从版本4.31.0开始在本地运行MusicGen。

  • 首先安装? Transformers library 从main:
  • pip install git+https://github.com/huggingface/transformers.git
    
  • 运行以下Python代码生成文本条件的音频样本:
  • from transformers import AutoProcessor, MusicgenForConditionalGeneration
    
    
    processor = AutoProcessor.from_pretrained("facebook/musicgen-medium")
    model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-medium")
    
    inputs = processor(
        text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
        padding=True,
        return_tensors="pt",
    )
    
    audio_values = model.generate(**inputs, max_new_tokens=256)
    
  • 在ipynb笔记本中听取音频样本:
  • from IPython.display import Audio
    
    sampling_rate = model.config.audio_encoder.sampling_rate
    Audio(audio_values[0].numpy(), rate=sampling_rate)
    

    或者使用第三方库(如scipy)将它们保存为.wav文件:

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

    有关使用? Transformers库进行推理使用MusicGen模型的更多详细信息,请参阅 MusicGen docs

    Audiocraft使用

    您还可以通过原始 Audiocraft library 在本地运行MusicGen:

  • 首先安装 audiocraft library
  • pip install git+https://github.com/facebookresearch/audiocraft.git
    
  • 确保已经安装 ffmpeg
  • apt get install ffmpeg
    
  • 运行以下Python代码:
  • from audiocraft.models import MusicGen
    from audiocraft.data.audio import audio_write
    
    model = MusicGen.get_pretrained("medium")
    model.set_generation_params(duration=8)  # generate 8 seconds.
    
    descriptions = ["happy rock", "energetic EDM"]
    
    wav = model.generate(descriptions)  # generates 2 samples.
    
    for idx, one_wav in enumerate(wav):
        # Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
        audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
    

    模型详细信息

    开发模型的组织:Meta AI的FAIR团队。

    模型日期:MusicGen的训练日期为2023年4月至2023年5月。

    模型版本:这是模型的第1个版本。

    模型类型:MusicGen由音频标记化的EnCodec模型、基于Transformer架构的自回归语言模型组成,模型有不同的大小:300M、1.5B和3.3B参数;以及两个变体:用于文本转音乐生成任务的模型和用于以旋律为导向的音乐生成的模型。

    有关更多信息,请参阅论文[Simple and Controllable Music Generation][ https://arxiv.org/abs/2306.05284] ]。

    引用详细信息:

    @misc{copet2023simple,
          title={Simple and Controllable Music Generation}, 
          author={Jade Copet and Felix Kreuk and Itai Gat and Tal Remez and David Kant and Gabriel Synnaeve and Yossi Adi and Alexandre Défossez},
          year={2023},
          eprint={2306.05284},
          archivePrefix={arXiv},
          primaryClass={cs.SD}
    }
    

    许可证代码使用MIT许可,模型权重使用CC-BY-NC 4.0许可。

    如何发送关于模型的问题或评论:关于MusicGen的问题和评论可以通过项目的 Github repository 或通过打开问题来发送。

    预期用途

    主要预期用途:MusicGen的主要用途是在基于AI的音乐生成研究中使用,包括:

    • 研究努力,例如探索并更好地理解生成模型的局限性,以进一步改进科学状况
    • 通过文本或旋律引导生成音乐,以了解机器学习爱好者目前的生成AI模型的能力

    主要预期用户:模型的主要预期用户是音频、机器学习和人工智能领域的研究人员,以及试图更好地理解这些模型的业余爱好者。

    范围之外的用例:在进一步评估和减轻风险之前,不应将模型用于下游应用。不应使用该模型刻意创建或传播会给人们带来敌对或使人疏远的音乐作品。这包括生成人们可以预见到会感到不安、痛苦或冒犯的音乐,或者传播历史或现实的刻板印象的内容。

    度量标准

    模型性能指标:我们使用以下客观指标来评估模型在标准音乐基准上的性能:

    • 在从预训练音频分类器(VGGish)提取的特征上计算的Frechet Audio Distance
    • 在从预训练音频分类器(PaSST)提取的标签分布上计算的Kullback-Leibler Divergence
    • 在从预训练CLAP模型提取的音频嵌入和文本嵌入之间计算的CLAP分数

    此外,我们还进行了与人类参与者的定性研究,根据以下几个方面评估模型的性能:

    • 音乐样本的整体质量
    • 与所提供文本输入相关性
    • 对于以旋律为导向的音乐生成,对旋律的遵循程度

    有关性能指标和人类研究的更多详细信息,请参阅论文。

    决策阈值:不适用。

    评估数据集

    模型在 MusicCaps benchmark 和一个域内保留的评估集上进行了评估,该评估集与训练集没有艺术家重叠。

    训练数据集

    模型使用以下数据源进行训练: Meta Music Initiative Sound Collection Shutterstock music collection Pond5 music collection 。有关训练集和相应预处理的更多详细信息,请参阅论文。

    定量分析

    有关更多信息,请参阅论文[Simple and Controllable Music Generation][arxiv]的"Experimental Setup"部分。

    限制和偏见

    数据:用于训练模型的数据源是由音乐专业人员创建的,并与权利持有人签订了法律协议。模型使用了20K小时的数据进行训练,我们相信将模型扩展到更大的数据集可以进一步改善模型的性能。

    缓解措施:通过使用一种现代的音乐源分离方法,即使用开源的 Hybrid Transformer for Music Source Separation (HT-Demucs),将所有人声从数据源中删除。因此,该模型无法生成人声。

    限制:

    • 该模型无法生成逼真的人声。
    • 该模型是使用英文描述进行训练的,对其他语言的表现不会很好。
    • 该模型不适用于所有音乐风格和文化。
    • 该模型有时会生成歌曲结尾并陷入沉默。
    • 很难评估哪种类型的文本描述会产生最好的生成结果,可能需要进行提示工程以获得令人满意的结果。

    偏见:数据源的来源可能缺乏多样性,并不完全代表所有音乐文化。模型在广泛存在的各种音乐流派上的表现可能不同。模型生成的样本将反映训练数据中的偏见。对该模型的进一步工作应包括平衡和公正地代表不同文化的方法,例如通过将训练数据扩展为既具有多样性又具有包容性。

    风险和危害:模型的偏见和局限性可能导致生成被认为具有偏见、不适当或冒犯的样本。我们相信,提供重现研究和训练新模型的代码将有助于将其应用于新的、更具代表性的数据。

    用例:用户必须意识到模型的偏见、局限性和风险。MusicGen是为了在控制音乐生成方面的人工智能研究而开发的模型。因此,在没有进一步调查和对风险进行缓解之前,不应将其用于下游应用。