Instructions to use MiniMaxAI/MiniMax-Music3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use MiniMaxAI/MiniMax-Music3 with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("MiniMaxAI/MiniMax-Music3", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
Assigning lyrics to voices
I couldn't find any examples where the input caption describes multiple voices and they are assigned within the lyrics (e.g. I want voice 2 to sing this verse).
I had a look through the MiniMax Music 3 demo page (https://minimax-ai.github.io/music3-demo/) but wasn't able to see any examples of being able to do this.
Anyone had luck doing this?
Yes, it works. Not 100% of the time, but pretty well. I'd recommend using the Claude/Codex still to write the prompt if you aren't already. Basically you just need to define your two singers and have lots of verbiage around e.g., "Singer A will only sing the chorus and first verse, Singer B will only sing the second verse and nothing else" etc. Your LLM can probably do a good job of writing out those rules.
Yes, it works. Not 100% of the time, but pretty well. I'd recommend using the Claude/Codex still to write the prompt if you aren't already. Basically you just need to define your two singers and have lots of verbiage around e.g., "Singer A will only sing the chorus and first verse, Singer B will only sing the second verse and nothing else" etc. Your LLM can probably do a good job of writing out those rules.
Thanks! Just confirming you don't put anything in the lyrics, just in the input captions instructions?
Right I didn't need to put anything special in the lyrics. I did put "[Verse 1]" and "[Verse 2]" to make things more explicit, but I'm not sure that's even necessary.
I used Claude Code to work through some practical tests and had some/limited success in being able to control voices. For my tests I described two voices, a male and female.
Overall there's some improvement but it's, by no means, deterministic.
I've put Claude's findings below:
Findings: controlling which voice sings which lyrics (MiniMax Music 3)
Based on ~30 controlled generations (local ComfyUI repack, FP16 DiT + INT8 text encoder, fixed seeds, one variable per test) using a male/female duet.
TL;DR: short voice tags in the lyrics AND both voices described in the caption. Caption-only verbiage went 0/4. Tags at section level went 4/4 (male-first).
What reliably works
1. Voice tags in the lyrics are generally effective. With identical captions, adding tags flipped results from total failure to success:
[Verse 1]
[male vocal]
...his lines...
[Verse 2]
[female vocal]
...her lines...
2. Tags must stay short (1-2 words). [male vocal], [female vocal], [duet] were never sung aloud in 30 renders. A five-word tag, [male and female vocal duet], was sung as lyrics once. Longer meanings belong in the caption; the tag itself should be terse.
3. The granularity floor is two lines. Section-level and couplet-level (2-line) switching both work. Line-by-line alternation failed every attempt - the voices smear.
4. An "anti-choir" clause fixes the second voice rendering as a group. Without it, the female consistently came out doubled or as multiple women. In the caption's harmony section:
"There are exactly two voice tracks in this entire recording, one male and one female. No multi-tracking, no doubling, no stacked harmonies, no backing vocals, no choir or group vocals of any kind. Never more than two human voices are audible at any moment."
5. Caption side: declare both singers plainly ("A dual-vocal arrangement featuring Singer A, a deep Male Baritone, and Singer B, a bright, clear Female Soprano...") and state assignments redundantly ("Singer B sings the second verse entirely alone; the male is completely silent there, not present as harmony"). Also state which voice opens: "The very first voice heard in the recording is the male baritone."
What fails / the mechanics
- Structure control is near-deterministic; voice casting is probabilistic (~60-80% per render). In failed takes the model still executed the full structural program - audible trading seams, choruses thickening into a real second part, correct dynamics - just cast one gender in both roles. The form follows; the casting is a dice roll.
- First-voice capture: whichever voice actually opens tends to keep the track. Notably asymmetric in these tests: male-first songs switched to the female fine (4/4 at section level), female-first songs never let the male in (0/3). Male material first is the safer ordering.
- Tag influence decays with hold time. A switch after ~25-45s of one voice held; after ~85s the incoming voice decayed back within two lines. Adding more tags did NOT fix this - over-instruction consistently made things worse (in two separate tests, describing a voice too aggressively made it vanish entirely). Keep the second voice's entry early, or restructure.
- Duet sections need context. Both-voices choruses came out genuinely two-voice 3/3 in a song where both singers had already had solo verses. An isolated cold-open duet chorus failed. When a second voice joins a section one singer has owned for a while, it tends to inherit that singer's gender.
- Description tone matters: plain and confident works ("a bright, clear Female Soprano"); hedged or miniaturized descriptions ("small, quiet, intimate, never doubled...") made the voice disappear.
Practical workflow
Since casting is a roll: apply all of the above, then check the first ten seconds of each render. Right voice opening -> the rest almost always follows. Wrong voice -> abort and re-roll immediately; the opening decides the song. Budget 1-3 attempts per track.
Caveats: single model build, one voice pairing (baritone/soprano), small n per cell - the percentages are indicative rather than precise. But every claim above comes from A/B pairs with pinned seeds.