MAI-Voice-2.1 emotion control vs Sume TTS emotion, speed and volume
MAI-Voice-2.1 lists emotion control. Sume TTS takes generation_config: emotion (1-64 chars), speed 0.6-1.5, volume 0.5-2. A three-take test costs 3 cents.

Microsoft lists "Granular Emotion Control" for MAI-Voice-2.1 and its Flash version. On Sume TTS, delivery is steered by an optional generation_config object: emotion (a string of 1 to 64 characters), speed (0.6 to 1.5) and volume (0.5 to 2), plus a separate top-level speed of slow, normal or fast. A three-take emotion test of a 200-character line costs about 3 x $0.0095 = $0.0285.
What each side documents
The Microsoft page, read 2026-10-09, states the feature as a yes for both models. The text read for this post does not list the emotions, their intensity scale, or how a script marks them, so do not assume a tag syntax carries over from one engine to another.
Sume's schema is explicit about types and ranges, and silent about the vocabulary. emotion is a free string with a 64-character limit; which values change the audio is a property of the engine behind the request. The only reliable way to learn the vocabulary is to try a short line and listen.
| Control | Sume TTS 1.0 | MAI-Voice-2.1 |
|---|---|---|
| Emotion | generation_config.emotion, string 1-64 characters | Granular emotion control: yes (vocabulary not in the page text read) |
| Speaking rate | generation_config.speed 0.6-1.5, or speed slow / normal / fast | Not stated in the page text read |
| Loudness | generation_config.volume 0.5-2 | Not stated in the page text read |
| What was used | Echoed on the finished job; null when not sent | Not applicable |
A cheap three-take test
Pick one 200-character line and run it three times with the same voice and language, changing only emotion. Sume charges $0.0475 per 1,000 characters, so each take is 200 x 0.0475 / 1,000 = $0.0095, and three takes are $0.0285. Use a different Idempotency-Key for each take, because the same key returns the first job.
Compare on the same speakers and the same room. Then read generation_config back from each finished job and keep the one you chose with the episode, so the next line can reuse it.
Language and voice come first
Emotion is the last knob, not the first. A voice that does not speak the line's language will not be rescued by an emotion string, and Sume's language field (2 to 16 characters) is checked against the voice: a mismatch is refused until you confirm it with confirm_language_mismatch. Set the language and voice, listen once with no emotion at all, and only then add generation_config to move from a flat read to the one you want. Store what you used; the finished job echoes it back.
Mistakes to avoid
Four habits keep an emotion test honest.
- Do not send both a top-level
speedandgeneration_config.speedin the same request until you have tested what you get; pick one control. - Do not put emotion words into the transcript and expect them to be performed. The transcript is spoken text.
- A 64-character limit means a label, not a sentence. Keep it short.
- Do not judge a voice on one line. Emotion that suits a 12-word hook can sound strained over 400 characters.
Sources
Related posts
More in Comparisons
- MAI-Voice-2.1 zero-shot voice prompting vs a Sume voice id or avatar
MAI-Voice-2.1 lists zero-shot voice prompting. Sume TTS takes a voice id or an avatar's voice, not a sample clip. What each request can and cannot express.
- MiniMax H3 768p vs Gemini Omni Flash 720p: an 8-second clip
On Sume, an 8-second clip is $0.60 on minimax-h3 at 768p and $1.00 on gemini-omni-flash-1.1 at 720p, with $0.30 at Omni's 360p. Price and constraints.
- MiniMax H3 Max vs Wan 3.0 at 1080p: 5, 10 and 15 seconds on Sume
On Sume, MiniMax H3 Max at 1080p costs $0.20 a second and Wan 3.0 costs $0.25. For 5, 10 and 15 seconds: $1.00/$2.00/$3.00 vs $1.25/$2.50/$3.75.
- MiniMax H3 Max 768p: 15 s is $1.50 on Sume, $1.20 on Runway Dev
Runway Dev lists h3_max at 5 credits per second at 480p and 8 at 768p. Sume lists minimax-h3-max at $0.0625 and $0.10, plus a 1080p row at $0.20.
Written by Sume