MAGNeT 模型卡与技术解析:AudioCraft 中基于单非自回归 Transformer 的掩码音频生成

📅 发布时间:2026/9/20 12:29:25
MAGNeT 模型卡与技术解析:AudioCraft 中基于单非自回归 Transformer 的掩码音频生成
人工智能深度学习音频媒体生成音乐生成【免费下载链接】audiocraftAudiocraft is a library for audio processing and generation with deep learning. It features the state-of-the-art EnCodec audio compressor / tokenizer, along with MusicGen, a simple and controllable music generation LM with textual and melodic conditioning.项目地址https://gitcode.com/gh_mirrors/au/audiocraft点击查看免费下载MAGNeTMasked Audio Generation using a Single Non-Autoregressive Transformer是 AudioCraft 库中面向文本到音乐、文本到音效生成的非自回归模型其模型卡系统记录了模型的架构组成、训练与评估数据、客观指标FAD/KLD/CLAP以及已知限制与偏差。本文将围绕该模型卡展开结合 AudioCraft 仓库中 audiocraft/models/magnet.py、audiocraft/models/lm_magnet.py、audiocraft/solvers/magnet.py 等源码与配置文件完整解读模型细节、评估结果、使用 API、训练/微调/评估全流程帮助你既理解模型卡中每一项指标和数据来源又能直接上手推理与复现。模型概览Model details模型卡给出的 MAGNeT 核心信息如下属性内容开发组织Meta AI 的 FAIR 团队训练时间2023 年 11 月至 2024 年 1 月版本Version 1模型类型EnCodec 音频分词器 基于 Transformer 架构的非自回归音乐建模模型模型规格300M 与 1.5B 两种参数量任务变体文本到音乐生成MAGNeT、文本到音效生成Audio-MAGNeT代码许可证MIT权重许可证CC-BY-NC 4.0论文Masked Audio Generation using a Single Non-Autoregressive TransformerarXiv 2401.04577从源码结构看MAGNeT 由两个部分拼接而成EnCodec 负责将音频离散化为 token 序列非自回归 TransformerMagnetLMModel负责在 token 序列上进行掩码生成。在 magnet.py 中get_pretrained依次调用load_compression_model与load_lm_model_magnet加载这两部分与模型卡EnCodec 非自回归 Transformer的描述一一对应。模型卡说明模型权重以 CC-BY-NC 4.0 发布意味着权重仅可用于非商业用途代码本身遵循 MIT 协议。使用前请确认你的应用场景符合许可要求。技术原理从模型卡到源码实现模型卡将 MAGNeT 概括为一个非自回归 Transformer 进行音乐建模而 docs/MAGNET.md 进一步补充MAGNeT 是在32kHz EnCodec 分词器4 个码本、50 Hz 帧率之上训练的掩码生成式非自回归 Transformer。与 SoundStorm、VampNet 等此前的工作不同MAGNeT不需要语义 token 条件、模型级联或音频提示prompting用一个单一的非自回归 Transformer 直接完成完整的文本到音频生成。这些技术要点可以从源码中得到印证并行码本模式训练配置 config/solver/magnet/magnet_32khz.yaml 中codebooks_pattern.modeling: parallel即各 RVQ 码本并行建模而非自回归逐码本生成。受限注意力上下文lm_magnet.py 中restricted_context_attn_mask为码本 0 的层构造局部注意力掩码subcodes_context默认 5限定每个时间步能关注到的相邻时间步范围这也是为什么配置中注明efficient_attention_backend: xformers——受限注意力实现目前仅支持 xformers 后端。Span 掩码机制MagnetLMModel 的span_len默认 3定义了训练与推理时连续掩码 token 段的最小长度solvers/magnet.py 中的_spans_mask通过mean_maskrate_to_u查找表LUT将掩码率转换为要放置的 span 起始数量论文附录 C 给出了平均掩码率的推导。迭代解码推理阶段对每个码本依次执行若干轮掩码—预测—重掩码迭代decoding_steps默认[20, 10, 10, 10]掩码比例按余弦调度mask_p cos(t * pi / 2)从 1 衰减到 0见 lm_magnet.py。训练损失单码本掩码交叉熵训练时每步随机选择一个码本 stagerandom.randint(0, K-1)只在该码本的被掩码位置上计算交叉熵且所有更高层的码本全部置为掩码 token见 solvers/magnet.py。模型卡中提到的以 50 Hz 采样的 4 码本 EnCodec tokenizer正是该损失与并行码本模式的数据基础。预期用途Intended use模型卡明确了 MAGNeT 的定位与研究边界主要用途AI 音乐生成研究包括探测和理解生成模型的局限以推动科学发展以及由机器学习爱好者通过文本引导生成音乐、理解当前生成式 AI 的能力。主要用户音频、机器学习和人工智能领域的研究者以及希望理解这些模型的爱好者。超出范围的使用未经进一步风险评估与缓解不应将模型用于下游应用不得故意创作或传播制造敌对、疏远环境的音乐包括可能令人感到不安、痛苦或冒犯的内容以及传播历史或现存的刻板印象的内容。评估指标Metrics模型卡列出了三类客观指标均由预训练音频分类器/嵌入模型提取特征后计算指标全称特征来源FADFrechet Audio Distance预训练音频分类器VGGish特征KLDKullback-Leibler Divergence预训练音频分类器PaSST标签分布CLAP Score文本嵌入与音频嵌入的一致性预训练 CLAP 模型此外还开展了人类受试者参与的定性研究评估两个维度音乐样本的整体质量与相对输入文本的相关性。更详细的口径与人类研究流程见论文。模型卡明确标注决策阈值Decision thresholds不适用。评估数据集与训练数据集评估MusicCaps 基准10 秒音频-文本对以及一个与训练集无艺术家重叠的域内保留集。训练16K 小时的授权数据来源包括 Meta Music Initiative Sound Collection、Shutterstock 音乐集和 Pond5 音乐集预处理细节见论文。需要特别说明模型卡中16K 小时训练数据这一数据规模描述与 docs/MAGNET.md 中内部 10K 首高质量音乐曲目 ShutterStock 与 Pond5 音乐数据的描述一致。仓库不提供任何训练数据集仅附带少量用于演示的 dummy 数据。评估结果Evaluation results音乐生成模型MusicCaps模型卡给出的公开模型客观指标如下。注意对公开模型官方使用 SOTA 音乐源分离方法HT-DemucsHybrid Transformer for Music Source Separation只保留纯乐器音轨因此与论文中的指标存在差异ModelFrechet Audio DistanceKLDText Consistencyfacebook/magnet-small-10secs4.221.110.28facebook/magnet-medium-10secs4.611.140.28facebook/magnet-small-30secs4.351.170.28facebook/magnet-medium-30secs4.631.200.28从表中可以看出同一参数量下 10 秒模型优于 30 秒模型更短的序列更容易稳定生成medium 与 small 的文本一致性0.28持平。这些指标可通过 audiocraft/grids/magnet/magnet_pretrained_32khz_eval.py 中的评估网格在 MusicCaps 上复现。音效生成模型Audio-MAGNeTAudioCaps 基准10 秒样本ModelFrechet Audio DistanceKLDfacebook/audio-magnet-small3.211.42facebook/audio-magnet-medium2.321.64值得注意在音效任务上 medium 模型2.32明显优于 small3.21说明参数量对 FAD 的改善在音效域更显著。Audio-MAGNeT音效生成模型模型卡单列了一节介绍音频 MAGNeT 模型训练数据来源AudioSetGemmeke et al., 2017的子集、BBC 音效库、AudioCapsKim et al., 2019、Clotho v2Drossos et al., 2020、VGG-SoundChen et al., 2020、FSD50KFonseca et al., 2021、Free To Use Sounds、Sonniss Game Effects、WeSoundEffects、Paramount Motion - Odeon Cinematic Sound Effects。评估基准AudioCaps。模型命名facebook/audio-magnet-small与facebook/audio-magnet-medium。从配置看config/solver/magnet/audio_magnet_16khz.yaml 是 16kHz 单声道音效任务对应 AudioGen 的训练范式其 EnCodec 总 stride 为 320、帧率仍为 50 frames/s并启用了 50% 概率的音频混合增强aug_p: 0.5、mix_p: 0.5、SNR 范围 -5~5 dB。对应求解器是 solvers/magnet.py 中的AudioMagnetSolverDATASET_TYPE DatasetType.SOUND。限制与偏差Limitations and biases模型卡在数据、缓解措施、限制、偏差、风险与危害五个维度给出了诚实的能力边界数据训练数据由音乐专业人士创作并经权利方合法授权作者认为在更大数据集上扩展可进一步提升性能。缓解措施使用标签和 HT-Demucs 源分离方法移除了包含人声的音轨。已知限制无法生成逼真的人声vocals仅以英文描述训练其他语言效果较差并非对所有音乐风格和文化表现均衡有时会生成歌曲结尾并坍缩为静音有时难以判断哪些文本描述能产生最佳结果可能需要 prompt engineering。偏差数据源多样性不足各音乐文化并非均衡覆盖生成样本会反映训练数据的偏差。风险与危害模型偏差与限制可能导致生成被认为有偏、不当或冒犯的样本官方认为开源复现代码与训练新模型有助于将应用扩展到更新、更具代表性的数据上。这些限制在代码层也有对应体现例如 magnet.py 中self.duration self.lm.cfg.dataset.segment_duration说明模型在固定序列长度上工作10 秒或 30 秒变体与有时坍缩为静音的观测一致。预训练模型与推理 API六个预训练模型仓库提供了 6 个可直接加载的预训练模型MAGNeT.get_pretrained的 docstring 见 magnet.py模型名参数量任务生成时长facebook/magnet-small-10secs300M文本→音乐10 秒facebook/magnet-medium-10secs1.5B文本→音乐10 秒facebook/magnet-small-30secs300M文本→音乐30 秒facebook/magnet-medium-30secs1.5B文本→音乐30 秒facebook/audio-magnet-small300M文本→音效10 秒facebook/audio-magnet-medium1.5B文本→音效10 秒快速上手GPU 必需AudioCraft 的推理需要 GPUmedium约 1.5B 参数模型建议16GB 显存。按 docs/MAGNET.md 中的示例import torchaudio from audiocraft.models import MAGNeT from audiocraft.data.audio import audio_write model MAGNeT.get_pretrained(facebook/magnet-small-10secs) descriptions [disco beat, energetic EDM, funky groove] wav model.generate(descriptions) # 生成 3 个样本 for idx, one_wav in enumerate(wav): # 保存为 {idx}.wav按 -14 dB LUFS 响度归一化 audio_write(f{idx}, one_wav.cpu(), model.sample_rate, strategyloudness, loudness_compressorTrue)也可以启动 Gradio 本地 demo 或 Jupyter Notebook 交互# 方式一Gradio demo--share 可生成公网分享链接 python -m demos.magnet_app --share # 方式二本地运行 notebook需要有 GPU # 打开 demos/magnet_demo.ipynbget_pretrained会自动探测设备有 CUDA 则用cuda否则回退cpu见 magnet.py。生成参数详解set_generation_paramsMAGNeT 提供了独立于 MusicGen 的生成参数接口magnet.py默认值如下参数默认值含义use_samplingTrueTrue 用采样解码False 用 argmax 贪心解码top_k0top-k 采样参数0 表示禁用top_p0.9top-pnucleus采样参数0 表示使用 top_ktemperature3.0初始 softmax 温度max_cfg_coef10.0无分类器引导CFG初始系数min_cfg_coef1.0CFG 退火结束系数decoding_steps[20, 10, 10, 10]每个 RVQ 码本的迭代解码步数长度为 n_q 的列表span_arrangementnonoverlap掩码方案nonoverlap非重叠 span或 stride1重叠 spanMAGNeT 特有的两个机制值得展开源码见 lm_magnet.pyCFG 系数退火随解码进行掩码率mask_p从 1 衰减到 0引导系数按clsfg_coef mask_p * max_cfg_coef (1 - mask_p) * min_cfg_coef从max_cfg_coef线性退火到min_cfg_coeflm_magnet.py。这也解释了generate接口为何断言cfg_coef is None——MAGNeT 只支持max_cfg_coef, min_cfg_coef的退火形式不支持固定系数与两阶段 CFG。温度退火与 span 打分anneal_tempTrue时 softmax 温度在每阶段内线性衰减到零t temp * (steps_left / timesteps)span_scoring支持 maxspan 内取最大概率或 prod对数空间求积两种 span 置信度打分方式用于决定下一轮重掩码哪些 span。推理时 CFG 通过一次前向完成条件与无条件输入拼接后单次计算再按引导系数融合lm_magnet.py相比两次前向效率更高。训练、微调与评估训练配置与网格MagnetSolversolvers/magnet.py实现了 MAGNeT 的训练管线在预训练 EnCodec 提取的多流离散 token 上定义掩码生成任务。两个官方训练配置文本到音乐config/solver/magnet/magnet_32khz.yaml32kHz、EnCodec 总 stride 640 → 50 frames/s、rvq.n_q4、rvq.bins2048文本到音效config/solver/magnet/audio_magnet_16khz.yaml16kHz、总 stride 320 → 50 frames/s配置中的关键训练超参与模型卡评估结果直接相关音乐模型optim.lr1配合 dadam 优化器、cosine 调度、4000 步 warmup、batch_size: 19232 卡生成阶段配置decoding_steps: [60, 10, 10, 10]。音效模型optim.lr5e-4adamw、inverse_sqrt 调度、3000 步 warmup、aug_p: 0.5音频混合增强生成阶段temp: 3.5、top_p: 0.8、max_cfg_coef: 20.0、decoding_steps: [20, 10, 10, 10]。训练网格位于 audiocraft/grids/magnet/模型规模通过model/lm/model_scale切换 small300M、medium1.5B、large3.3B# 文本到音乐 dora grid magnet.magnet_32khz --dry_run --init # 文本到音效 dora grid magnet.audio_magnet_16khz --dry_run --init # 一切就绪后去掉 --dry_run --init 真正调度任务从 audiocraft/grids/magnet/magnet_32khz.py 可以看到small 模型用 32 卡、medium 用 64 卡并开启 FSDPfsdp.use: True、autocast: False10 秒变体通过dataset.segment_duration10与decoding_steps[20, 10, 10, 10]区分于 30 秒变体。数据集格式MAGNeT 底层是 AudioDataset 并附带元数据详见 docs/DATASETS.md音乐模型元数据以.json文件形式与音频文件同目录存放音效模型同样期望.json元数据可通过external_metadata_source指定外部文件夹。微调已有模型continue_from# 用预训练 MAGNeT 初始化 dora run solvermagnet/magnet_32khz model/lm/model_scalemedium continue_from//pretrained/facebook/magnet-medium-10secs conditionertext2music # 用自己训练过的 Dora 签名 SIG dora run solvermagnet/magnet_32khz model/lm/model_scalemedium continue_from//sig/SIG conditionertext2music # 或直接提供 checkpoint 路径 dora run solvermagnet/magnet_32khz model/lm/model_scalemedium continue_from/checkpoints/my_other_xp/checkpoint.th注意两个警告配置不会自动继承自 continue_from 的模型需自行保证conditioner、model/lm/model_scale等参数兼容且暂不支持层结构有差异的微调若改动模型结构需手工构造 checkpoint 文件其格式为torch.save的字典{best_state: {model: model_state_dict_here}}并将路径直接传给continue_from不带//pretrained/前缀。评估阶段复现6 个预训练模型的客观指标可用如下网格复现# 文本到音乐 REGEN1 dora grid magnet.magnet_pretrained_32khz_eval --dry_run --init # 文本到音效 REGEN1 dora grid magnet.audio_magnet_pretrained_16khz_eval --dry_run --init评估网格 magnet_pretrained_32khz_eval.py 使用dset: audio/musiccaps_32khz与objective_eval求解器并需要配置metrics.fad.tf.bin指向本地的 google-research FAD 二进制路径。REGEN1用于首次运行或网格变更时强制重新生成。加载自己训练的实验from audiocraft.solvers.magnet import MagnetSolver solver MagnetSolver.get_eval_solver_from_sig(SIG, devicecpu, batch_size8) solver.model solver.dataloaders导入 / 导出模型当前不支持从 Hugging Face 实现加载或向其导出。若要将自训练模型导出为与audiocraft.models.MAGNeTAPI 兼容的格式from audiocraft.utils import export from audiocraft import train xp train.main.get_xp_from_sig(SIG_OF_LM) export.export_lm(xp.folder / checkpoint.th, /checkpoints/my_audio_lm/state_dict.bin) # 还需要打包你使用的 EnCodec 模型 ## 情况 1) 自己训练的 xp_encodec train.main.get_xp_from_sig(SIG_OF_ENCODEC) export.export_encodec(xp_encodec.folder / checkpoint.th, /checkpoints/my_audio_lm/compression_state_dict.bin) ## 情况 2) 使用的预训练模型只写入指向待下载模型的指针 export.export_pretrained_compression_model(facebook/encodec_32khz, /checkpoints/my_audio_lm/compression_state_dict.bin)然后即可用MAGNeT.get_pretrained(/checkpoints/my_audio_lm/)加载自定义模型。常见问题FSDP 还是 autocast两者互斥FSDP 内部自带 autocast。autocast 可用于 1.5Bmedium模型前提是 GPU 显存足够FSDP 会通过分片优化器状态释放部分显存给激活值但复杂度更高。相关配置可在 config/solver/magnet/magnet_32khz.yaml 中看到默认autocast: true、autocast_dtype: float16而训练网格在 medium 规模时切换为fsdp.use: Trueautocast: False。引用与进一步阅读如果你在研究中使用了 MAGNeT请引用其论文misc{ziv2024masked, title{Masked Audio Generation using a Single Non-Autoregressive Transformer}, author{Alon Ziv and Itai Gat and Gael Le Lan and Tal Remez and Felix Kreuk and Alexandre Défossez and Jade Copet and Gabriel Synnaeve and Yossi Adi}, year{2024}, eprint{2401.04577}, archivePrefix{arXiv}, primaryClass{cs.SD} }进一步深入可参考仓库中的 MAGNET.md完整使用与训练指南、ENCODEC.md音频分词器训练、TRAINING.md训练管线与环境搭建、DATASETS.md数据集与元数据规范以及README.md中的安装说明。理解模型卡的客观指标时建议结合 magnet_pretrained_32khz_eval.py 与 MusicCaps/AudioCaps 基准口径并始终留意模型卡中关于人声、多语言、风格均衡性与 prompt engineering 的五条已知限制。赞分享人工智能深度学习音频媒体生成音乐生成【免费下载链接】audiocraftAudiocraft is a library for audio processing and generation with deep learning. It features the state-of-the-art EnCodec audio compressor / tokenizer, along with MusicGen, a simple and controllable music generation LM with textual and melodic conditioning.项目地址https://gitcode.com/gh_mirrors/au/audiocraft点击查看免费下载相关推荐MAGNeT掩码音频生成的单阶段非自回归TransformerMAGNeT掩码音频生成的单阶段非自回归Transformer MAGNeTMasked Audio Generation using a Single N人工智能深度学习音频媒体生成音乐生成AudioCraft MAGNeT 实战指南基于掩码非自回归 Transformer 的文本到音乐与音效生成AudioCraft MAGNeT 实战指南基于掩码非自回归 Transformer 的文本到音乐与音效生成 导读 MAGNeTMasked Audio G人工智能深度学习音频媒体生成音乐生成AnyFlowFARTransformer3DModel 深度解析基于 FAR 因果掩码的分块自回归视频扩散 TransformerAnyFlowFARTransformer3DModel 深度解析基于 FAR 因果掩码的分块自回归视频扩散 Transformer 导读 AnyFlowFA人工智能深度学习媒体生成计算机视觉音频多模态预训练微调上一篇从0到1掌握GraphQL Inspector构建健壮API的完整指南下一篇Comlink传输处理器完全指南自定义数据序列化与反序列化的终极教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考