Diffusers documentation

MiniMax Music 3

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMax Music 3

MiniMax Music 3 là một mô hình tạo nhạc, có khả năng tạo ra các bài hát hoàn chỉnh dài tới năm phút từ lời bài hát và mô tả về nhạc, với giọng hát biểu cảm và cấu trúc dài.

Mô hình là sự kết hợp giữa giai đoạn tự hồi quy và giai đoạn khuếch tán: một mô hình ngôn ngữ toàn cục 8B dựa trên Qwen3 dự đoán một token âm thanh ngữ nghĩa cho mỗi khung hình, trong khi một bộ giải mã chiều sâu nhỏ điền đầy bảy sách mã RVQ phần dư, và các trạng thái ẩn đã được hợp nhất của chúng điều kiện cho một transformer flow-matching 2.4B tạo ra các ẩn Flow-VAE trong các khối chồng lấn. Một bộ giải mã kiểu DAC chuyển các ẩn này thành âm thanh stereo 44.1 kHz.

Cách sử dụng

MiniMax Music 3 có sẵn dưới dạng pipeline mô-đun.

import soundfile as sf
import torch
from diffusers import ModularPipeline

pipe = ModularPipeline.from_pretrained("MiniMaxAI/MiniMax-Music3")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

lyrics = """[verse]
Morning light filtering through the pine
Every quiet street is yours and mine
[chorus]
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,
    audio_duration=60.0,
    generator=torch.Generator("cuda").manual_seed(7),
    output="audios",
)[0]

sf.write("minimax_music3.wav", audio.T, pipe.sampling_rate)

Giảm mức sử dụng bộ nhớ

Tham khảo hướng dẫn Giảm mức sử dụng bộ nhớ để biết thêm chi tiết về các kỹ thuật tiết kiệm bộ nhớ khác nhau.

Pipeline đầy đủ cần ~23 GB VRAM ở bfloat16. Với offloading CPU tự động, một lần sinh chạy trong ~22 GB VRAM trống, và ngoài ra, group-offloading mô hình ngôn ngữ cho phép chạy trong 8 GB.

import torch
from diffusers import ComponentsManager, ModularPipeline
from diffusers.hooks.group_offloading import apply_group_offloading

manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")  # or "mps", "xpu", "cpu"
pipe = ModularPipeline.from_pretrained("MiniMaxAI/MiniMax-Music3", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)

# Only needed below ~22 GB of free VRAM — slower, but fits in 8 GB.
apply_group_offloading(
    pipe.language_model, onload_device=torch.device("cuda"), offload_type="leaf_level", use_stream=True
)

Mẹo

  • Các thẻ cấu trúc như [intro], [verse], [pre-chorus], [chorus], [bridge], [instrumental], [solo] và [outro] phải được đặt riêng trên từng dòng trong lyrics. Văn bản nằm trên cùng một dòng với thẻ ở đầu sẽ bị loại bỏ theo hợp đồng đầu vào của mô hình.
  • Mô tả âm nhạc kiểm soát phần giọng hát: hãy mô tả rõ ràng giới tính và âm sắc của giọng hát (ví dụ “giọng nữ ấm áp”) hoặc mô hình có thể chuyển sang nhạc cụ. Để kiểm soát chi tiết, hãy cấu trúc mô tả thành các siêu dữ liệu toàn cục (thể loại, BPM, giọng, sự phát triển cảm xúc), chi tiết giọng hát và bố cục.
  • audio_duration là giới hạn trên — mô hình ngôn ngữ có thể kết thúc bài hát sớm hơn bằng một token dừng. Giai đoạn tự hồi quy tạo ra 25 khung hình mỗi giây âm thanh và chiếm phần lớn thời gian chạy.
  • Thang độ dẫn hướng không có bộ phân loại (classifier-free guidance scale) của giai đoạn khớp dòng (flow-matching) là một cài đặt của guider (giá trị suy luận tham chiếu là 1.7): thay thế nó bằng pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=...)).
  • Pipeline trả về đầu ra stereo 44,1 kHz gốc của vocoder. Máy chủ tham chiếu ngoài ra còn lấy lại mẫu xuống 32 kHz; hãy tự áp dụng việc lấy lại mẫu nếu bạn cần đúng tần số đó.

MiniMaxMusic3ModularPipeline

lớp diffusers.MiniMaxMusic3ModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

ModularPipeline cho việc tạo nhạc có điều kiện dựa trên lời bài hát và mô tả, sử dụng MiniMax Music 3.

MiniMaxMusic3Blocks

lớp diffusers.MiniMaxMusic3Blocks

< >

( )

Pipeline dạng module cho việc tạo nhạc có điều kiện dựa trên lời bài hát và mô tả, sử dụng MiniMax Music 3. Một mô hình ngôn ngữ tự hồi quy Qwen3 tạo ra các mã ngữ nghĩa và trạng thái ẩn cho từng khung hình từ lời bài hát và mô tả nhạc; một transformer flow-matching chuyển đổi các trạng thái ẩn thành các latent của Flow-VAE theo từng khối; và một bộ giải mã DAC-style giải mã chúng thành dạng sóng stereo ở 44,1 kHz.

Các thành phần: tokenizer (Qwen2Tokenizer) language_model (Qwen3ForCausalLM) rvq_depth_decoder (MiniMaxMusic3RVQDepthDecoder) condition_encoder (MiniMaxMusic3ConditionEncoder) transformer (MiniMaxMusic3Transformer1DModel) scheduler (FlowMatchEulerDiscreteScheduler) guider (ClassifierFreeGuidance) vocoder (MiniMaxMusic3Vocoder)

Inputs: prompt (str): Mô tả nhạc (thể loại, tâm trạng, giọng hát, nhạc cụ, bố cục). lyrics (str): Lời bài hát để hát. Các thẻ cấu trúc như [verse] hoặc [chorus] phải mỗi thẻ nằm trên một dòng riêng; văn bản nằm trên cùng một dòng với thẻ dẫn đầu sẽ bị loại bỏ theo hợp đồng đầu vào của checkpoint. audio_duration (float, tuỳ chọn, mặc định là 60.0): Giới hạn trên của độ dài âm thanh được tạo ra, tính bằng giây. Mô hình ngôn ngữ có thể dừng sớm hơn. Được giới hạn ở 9000 khung (sáu phút). generator (Generator, tuỳ chọn): Torch generator cho việc tạo ra có tính xác định. num_inference_steps (int, tuỳ chọn, mặc định là 30): Số bước Euler của flow-matching cho mỗi chunk. output_type (str, tuỳ chọn, mặc định là np): Định dạng đầu ra: ‘np’ hoặc ‘pt’.

Outputs: audios (Tensor | ndarray): Đường sóng stereo được tạo ra có hình dạng (batch, channels, samples) trong khoảng [-1, 1].

MiniMaxMusic3ConditionEncoder

lớp diffusers.MiniMaxMusic3ConditionEncoder

< >

( condition_hidden_dim: int = 4096num_condition_layers: int = 8out_dim: int = 2048input_sampling_rate: int = 24000input_hop_length: int = 960output_sampling_rate: int = 44100output_hop_length: int = 512 )

Chiếu các trạng thái ẩn theo từng khung hình của giai đoạn tự hồi quy lên dòng thời gian ẩn của Flow-VAE.

Mỗi khung hình được tạo ra mang theo num_condition_layers trạng thái ẩn có kích thước condition_hidden_dim (một từ mô hình ngôn ngữ và một cho mỗi bước codebook dư). Chúng được trộn với các trọng số softmax đã học, được chiếu (project) và được lấy mẫu lại từ tần số khung hình của mô hình ngôn ngữ sang tần số khung hình ẩn bằng nội suy lân cận gần nhất.

forward

< >

( hidden_states: Tensor ) → torch.Tensor of shape (batch, latent_length, out_dim)

Tham số

  • hidden_states (torch.Tensor có hình dạng (batch, frames, num_condition_layers * condition_hidden_dim)) — Trạng thái ẩn gộp theo từng khung hình từ giai đoạn tự hồi quy.

Trả về

torch.Tensor có hình dạng (batch, latent_length, out_dim)

chuỗi điều kiện được căn chỉnh với ẩn.

MiniMaxMusic3RVQDepthDecoder

lớp diffusers.MiniMaxMusic3RVQDepthDecoder

< >

( hidden_size: int = 4096num_layers: int = 4num_attention_heads: int = 16intermediate_size: int = 6144audio_vocab_size: int = 1024num_codebooks: int = 8max_position_embeddings: int = 16 )

Mô hình ngôn ngữ cục bộ của MiniMax Music 3. Trong mỗi khung âm thanh, nó dự đoán tự hồi quy bảy sách mã RVQ phần dư (c1..c7) từ trạng thái ẩn của mô hình ngôn ngữ toàn cục và mã ngữ nghĩa của khung, đồng thời phơi bày các trạng thái ẩn từng bước để điều kiện hóa transformer flow-matching.

Nó cũng sở hữu bảng nhúng cho các mã hóa phần dư, được pipeline sử dụng để nhúng các khung hoàn chỉnh cho vòng phản hồi của mô hình ngôn ngữ toàn cục.

forward

< >

( inputs_embeds: Tensor ) → torch.Tensor of shape (batch, steps, hidden_size)

Tham số

  • inputs_embeds (torch.Tensor có hình dạng (batch, steps, hidden_size)) — Các embedding của chuỗi chiều sâu đã được chiếu: trạng thái ẩn toàn cục tiếp theo là các mã đã được nhúng và lấy mẫu cho đến nay, mỗi mã được truyền qua projection.

Trả về

torch.Tensor có hình dạng (batch, steps, hidden_size)

trạng thái ẩn đã được chuẩn hóa; bước cuối cùng sẽ truyền vào đầu codebook tiếp theo.

MiniMaxMusic3Vocoder

lớp diffusers.MiniMaxMusic3Vocoder

< >

( latent_channels: int = 128decoder_input_dim: int = 1024decoder_hidden_dim: int = 1536upsampling_ratios: tuple = (8, 8, 4, 2)sampling_rate: int = 44100 )

Bộ giải mã dạng sóng Flow-VAE của MiniMax Music 3 (một bộ giải mã kiểu DAC). Nó giải mã các ẩn khớp dòng có hình dạng (batch, latent_channels, length) thành dạng sóng stereo ở sampling_rate; hai kênh âm thanh được giải mã như hai luồng gấp đôi latent_channels // 2.

forward

< >

( latents: Tensor ) → torch.Tensor of shape (batch, 2, samples)

Tham số

  • latents (torch.Tensor có hình dạng (batch, latent_channels, length)) — Latents của Flow-VAE được khớp theo flow.

Trả về

torch.Tensor có hình dạng (batch, 2, samples)

sóng âm stereo trong [-1, 1].

Update on GitHub