Diffusers documentation
MiniMax Music 3
MiniMax Music 3
MiniMax Music 3, sözler ve müzik açıklamasından beş dakikaya kadar uzunlukta, ifade gücü yüksek vokaller ve uzun menzilli yapıya sahip tam şarkılar üreten bir müzik üretim modelidir.
Model, otoregresif ve difüzyon aşamalarının bir hibrididir: 8B Qwen3 tabanlı küresel dil modeli, her kare için bir anlamsal ses token'ı öngörürken, küçük bir derinlik çözücü yedi artımsal RVQ kod kitabını doldurur ve bunların birleştirilmiş gizli durumları, üst üste binen parçacıklarda Flow-VAE latentlerini üreten 2.4B akış eşleştirme dönüştürücüsünü koşullandırır. DAC tarzı bir çözücü, latentleri 44.1 kHz stereo sese dönüştürür.
Kullanım
MiniMax Music 3 modüler bir pipeline olarak kullanılabilir.
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)Bellek kullanımını azaltın
Çeşitli bellek tasarrufu teknikleri hakkında daha fazla ayrıntı için Bellek kullanımını azaltma kılavuzuna bakın.
Tam pipeline, bfloat16'da ~23 GB VRAM gerektirir. Otomatik CPU offloading ile bir üretim ~23 GB boş VRAM'de çalışır ve dil modelinin group-offloading'i 8 GB'a sığar.
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
)İpuçları
[intro],[verse],[pre-chorus],[chorus],[bridge],[instrumental],[solo]ve[outro]gibi yapı etiketlerinin her birilyricsiçinde kendi satırında olmalıdır. Başlangıç etiketiyle aynı satırda bulunan metin, modelin girdi sözleşmesi tarafından düşürülür.- Müzik açıklaması vokalleri kontrol eder: vokal cinsiyetini ve timbresini açıkça belirtin (ör. “sıcak kadın vokal”) ya da model enstrümantale kayabilir. İnce taneli kontrol için açıklamayı küresel meta veriler (tür, BPM, ton, duygusal ilerleme), vokal detayları ve düzenleme olarak yapılandırın.
audio_durationbir üst sınırdır — dil modeli, bir durdurma belirteciyle şarkıyı daha erken bitirebilir. Otomatik regresif aşama, saniyede 25 kare ses üretir ve çalışma süresini belirler.- Flow-matching aşamasının classifier-free guidance ölçeği bir guider ayarıdır (referans çıkarım değeri 1.7'dir):
pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=...))ile değiştirin. - Pipeline, vokoderin yerel 44,1 kHz stereo çıktısını döndürür. Referans sunucu ayrıca 32 kHz'e yeniden örnekler; bu tam hıza ihtiyacınız varsa kendi yeniden örneklemenizi uygulayın.
MiniMaxMusic3ModularPipeline
sınıf diffusers.MiniMaxMusic3ModularPipeline
< source >( 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 )
MiniMax Music 3 ile söz ve başlık koşullu müzik üretimi için bir ModularPipeline.
MiniMaxMusic3Blocks
MiniMax Music 3 kullanılarak söz ve açıklama koşullu müzik üretimi için modüler bir pipeline. Otoregresif bir Qwen3 dil modeli, sözlerden ve müzik açıklamasından kare başına semantik kodlar ve gizli durumlar üretir; bir akış eşleştirme (flow-matching) transformer'ı, gizli durumları parça parça Flow-VAE latentlerine dönüştürür; ve DAC tarzı bir vokoder bunları 44,1 kHz'de stereo bir dalga formuna çözer.
Bileşenler:
tokenizer (Qwen2Tokenizer) language_model (Qwen3ForCausalLM) rvq_depth_decoder
(MiniMaxMusic3RVQDepthDecoder) condition_encoder (MiniMaxMusic3ConditionEncoder) transformer
(MiniMaxMusic3Transformer1DModel) scheduler (FlowMatchEulerDiscreteScheduler) guider
(ClassifierFreeGuidance) vocoder (MiniMaxMusic3Vocoder)
Girdiler:
prompt (str):
Müzik açıklaması (tür, ruh hali, vokaller, enstrümantasyon, düzenleme).
lyrics (str):
Söylenecek sözler. [verse] veya [chorus] gibi yapı etiketlerinin her biri kendi satırında olmalıdır; baştaki etiketle aynı satırda bulunan metin, checkpoint'in girdi sözleşmesi tarafından düşürülür.
audio_duration (float, isteğe bağlı, varsayılan 60.0):
Üretilen sesin saniye cinsinden uzunluğunun üst sınırı. Dil modeli daha erken durabilir. 9000 kare (altı dakika) ile sınırlıdır.
generator (Generator, isteğe bağlı):
Belirlenebilir üretim için Torch üreteci.
num_inference_steps (int, isteğe bağlı, varsayılan 30):
Parça başına flow-matching Euler adımı sayısı.
output_type (str, isteğe bağlı, varsayılan np):
Çıktı biçimi: ‘np’ veya ‘pt’.
Çıktılar:
audios (Tensor | ndarray):
[-1, 1] aralığında, (batch, channels, samples) biçiminde üretilen stereo dalga formu.
MiniMaxMusic3ConditionEncoder
sınıf diffusers.MiniMaxMusic3ConditionEncoder
< source >( 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 )
Otonom regresif aşamasının kare başına gizli durumlarını Flow-VAE gizli zaman çizelgesine yansıtır.
Her üretilen kare, num_condition_layers adet gizli durum taşır; boyutları condition_hidden_dim'dir (biri dil modelinden, diğeri her artımsal kod kitabı adımından gelir). Bunlar, öğrenilmiş softmax ağırlıklarıyla karıştırılır, projekte edilir ve en yakın komşu interpolasyonu kullanılarak dil modelinin kare hızından gizli kare hızına yeniden örneklenir.
forward
< source >( hidden_states: Tensor ) → torch.Tensor of shape (batch, latent_length, out_dim)
Parametreler
- hidden_states (
torch.Tensor, şekli(batch, frames, num_condition_layers * condition_hidden_dim)) — Otomatik regresif aşamadan gelen, kare başına birleştirilmiş gizli durumlar.
Dönüş değeri
torch.Tensor, şekli (batch, latent_length, out_dim)
gizli hizalı koşullama dizisi.
MiniMaxMusic3RVQDepthDecoder
sınıf diffusers.MiniMaxMusic3RVQDepthDecoder
< source >( 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 )
MiniMax Music 3'ün yerel dil modeli. Her ses çerçevesi içinde, küresel dil modelinin gizli durumu ve çerçevenin anlamsal kodundan yola çıkarak yedi artımsal RVQ kod kitabını (c1..c7) otoregresif olarak tahmin eder ve akış eşleştirme dönüştürücüsünü koşullandıran adım başına gizli durumları açığa çıkarır.
Ayrıca, boru hattının küresel dil modelinin geri besleme döngüsü için tam kareleri gömülebilmesi için kullanılan, kalan kod kitapları için gömme tablosunun da sahibidir.
forward
< source >( inputs_embeds: Tensor ) → torch.Tensor of shape (batch, steps, hidden_size)
Parametreler
- inputs_embeds (
torch.Tensor, şekli(batch, steps, hidden_size)) — Projeksiyonlanmış derinlik dizisi gömme değerleri: küresel gizli durum, ardından şu ana kadar örneklenen gömülü kodlar; her biriprojectionüzerinden geçirilir.
Dönüş değeri
torch.Tensor, şekli (batch, steps, hidden_size)
normalize edilmiş gizli durumlar; son adım bir sonraki kod kitabı başlığını besler.
MiniMaxMusic3Vocoder
sınıf diffusers.MiniMaxMusic3Vocoder
< source >( latent_channels: int = 128decoder_input_dim: int = 1024decoder_hidden_dim: int = 1536upsampling_ratios: tuple = (8, 8, 4, 2)sampling_rate: int = 44100 )
MiniMax Music 3'ün Flow-VAE dalga formu çözücü birimi (DAC tarzı bir çözücü). (batch, latent_channels, length) biçimindeki akış eşleşmeli (flow-matched) latentleri sampling_rate örneklem hızında stereo dalga formlarına çözer; iki ses kanalı, iki katlanmış latent_channels // 2 akışı olarak çözülür.
forward
< source >( latents: Tensor ) → torch.Tensor of shape (batch, 2, samples)