MiniMax-Music3

MiniMax-Music3 是一个音乐生成模型,采用自回归语言模型与流匹配声学模型级联的两阶段架构,输入音乐描述与歌词即可生成带人声的立体声歌曲。

安装

在使用本项目进行模型推理和训练前,请先安装 DiffSynth-Studio。

git clone https://github.com/modelscope/DiffSynth-Studio.git
cd DiffSynth-Studio
pip install -e .

更多关于安装的信息,请参考安装依赖

快速开始

运行以下代码可以快速加载 MiniMax/MiniMax-Music3 模型并进行推理。显存管理已启动,框架会自动根据剩余显存控制模型参数的加载,最低 6G 显存即可运行。

from diffsynth.pipelines.minimax_music3 import MiniMaxMusic3Pipeline, ModelConfig
from diffsynth.utils.data.audio import save_audio
import torch

vram_config = {
    "offload_dtype": "disk",
    "offload_device": "disk",
    "onload_dtype": torch.bfloat16,
    "onload_device": "cpu",
    "preparing_dtype": torch.bfloat16,
    "preparing_device": "cuda",
    "computation_dtype": torch.bfloat16,
    "computation_device": "cuda",
}

pipe = MiniMaxMusic3Pipeline.from_pretrained(
    torch_dtype=torch.bfloat16,
    device="cuda",
    model_configs=[
        ModelConfig(model_id="MiniMax/MiniMax-Music3", origin_file_pattern="language_model/model*.safetensors", **vram_config),
        ModelConfig(model_id="MiniMax/MiniMax-Music3", origin_file_pattern="rvq_depth_decoder/diffusion_pytorch_model.safetensors", **vram_config),
        ModelConfig(model_id="MiniMax/MiniMax-Music3", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors", **vram_config),
        ModelConfig(model_id="MiniMax/MiniMax-Music3", origin_file_pattern="condition_encoder/diffusion_pytorch_model.safetensors", **vram_config),
        ModelConfig(model_id="MiniMax/MiniMax-Music3", origin_file_pattern="vocoder/diffusion_pytorch_model.safetensors", **vram_config),
    ],
    tokenizer_config=ModelConfig(model_id="MiniMax/MiniMax-Music3", origin_file_pattern="tokenizer/"),
    vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 0.5,
)

lyrics = (
    "[verse]\n"
    "Morning light filtering through the pine\n"
    "Every quiet street is yours and mine\n"
    "[chorus]\n"
    "Softly the world begins to breathe"
)
prompt = (
    "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, building gently into the chorus. "
    "Vocals: soft female lead, close and breathy, light stacked harmonies in the chorus. "
    "Arrangement: fingerpicked guitar and soft piano; brushed drums and upright bass enter in the chorus."
)
audio = pipe(prompt=prompt, lyrics=lyrics, max_audio_duration=60.0, num_inference_steps=30, cfg_scale=1.7, seed=7)
save_audio(audio, 44100, "MiniMax-Music3.wav")

模型总览

模型 ID 推理 低显存推理 全量训练 全量训练后验证 LoRA 训练 LoRA 训练后验证
MiniMax/MiniMax-Music3 code code

模型推理

模型通过 MiniMaxMusic3Pipeline.from_pretrained 加载,详见加载模型

MiniMaxMusic3Pipeline 推理的输入参数包括:

  • prompt: 音乐描述,用于指定风格、BPM、调性、人声特征与编曲。

  • lyrics: 歌词。[verse][chorus] 等结构标签需各自独占一行,与标签同行的文本会被丢弃。留空时生成纯器乐。

  • max_audio_duration: 生成音频时长的上限,单位为秒。自回归阶段可能提前结束,因此实际时长可能短于该值;帧数上限为 9000 帧。

  • num_inference_steps: 每个窗口的流匹配迭代步数。

  • cfg_scale: 声学阶段的 classifier-free guidance 强度。

  • seed: 随机种子。

  • rand_device: 随机数生成所在的设备。设为 "cpu" 可获得与计算设备无关的复现结果。

  • progress_bar_cmd: 进度条。每个窗口显示一条覆盖全部迭代步的进度条。

模型分两阶段生成:自回归语言模型逐帧产出语义 token 与残差 RVQ 码,其逐帧隐状态作为条件,驱动分块流匹配模型生成 Flow-VAE 隐变量,最后由声码器合成 44.1kHz 立体声波形。自回归阶段的离散采样对数值精度敏感,因此该阶段的模型参数常驻显存,逐层显存管理仅作用于声码器。

若显存不足,请参考显存管理

模型训练

MiniMax-Music3 暂不支持训练。