Скилл MiniMax Voice — Свободный текст в prod-ready T2A JSON-запрос
Студия озвучивает мульти-персонажный анимационный проект. Реплики готовы, но каждому персонажу нужен свой MiniMax T2A — другая модель, другая скорость и pitch, другая эмоция, другая inline-разметка. Половина команды держит спецификацию JSON в соседнем табе и руками копирует значения; вторая половина переспрашивает, что делает vol. Реплика, прочитанная плоским текстом, возвращается мёртвой, потому что никто не вставил <#0.3#> паузы; другая возвращается на неверном pitch, потому что модель не подходит к выбранной эмоции. К десятому дублю несостыковки между персонажами слышнее, чем сами актёрские реплики.
Ниже — Скилл MiniMax Voice: один скилл Claude Code, который превращает свободную строку в ОДИН prod-ready JSON-запрос MiniMax T2A со всей inline-разметкой, настройкой голоса и роутингом по character-preset. Дословно — ниже. Скилл стоит отдельно, потому что TTS — другой домен, чем prompt-под-генерацию: другой движок, другая форма выхода, другие ручки.
Скилл выбирает правильную модель (speech-2.8-hd по умолчанию — нужна для междометий; падение на speech-2.8-turbo только под low-latency), ставит language_boost по детекции текста, вставляет паузы <#0.2#>–<#0.5#> между фразами, добавляет междометия по character-preset ((chuckle), (sighs), (breath)) и выдаёт JSON плюс одну строку notes: с подсказкой настройки. В скилл вшит набор пресетов персонажей — восемь именованных персонажей с подобранными кортежами speed/pitch/emotion/interjection, — так что запрос «озвучь Марка» возвращает полный, настроенный JSON за один шот.
Скилл — /minimax-voice
---
name: minimax-voice
description: Generate a production-ready MiniMax T2A speech-synthesis JSON request from free-form text and an optional character/voice preset. Triggers on "minimax voice", "озвучь через minimax", "сделай minimax json", "voice prompt для T2A", "промпт для синтеза речи", or any explicit request to format text for MiniMax speech synthesis. Inserts pause markers `<#x#>` and interjection tags like `(chuckle)`, picks model/speed/pitch/emotion based on character. Honors built-in character presets when the character matches one of: Mark, Mila, Artur, Lyubov, Korney, Sonya, Lyala, Prapraded.
---
MiniMax Voice Prompt
Convert a free-form Russian/English line into ONE production-ready MiniMax T2A JSON request, with proper inline markup and voice tuning.
When to run
User asks for:
- «Озвучь это через minimax: …»
- «Сделай minimax json для Марка: …»
- «MiniMax voice prompt для бабушки Любови»
- «T2A промпт под текст …»
- «Хочу синтез речи через MiniMax — вот текст»
If the user asks for a different TTS engine (ElevenLabs, OpenAI TTS, Yandex SpeechKit) — say so and stop. This skill is MiniMax-only.
Protocol
- Read the API reference. Consult the MiniMax T2A documentation for model names, allowed values, inline markup, and error codes. If unavailable — fall back to inline cheatsheet below.
- Identify the character. Look for a character name in the request. If it matches a preset character (see preset table) — use the preset. Otherwise ask once for emotion/tempo intent or default to the «narrator» preset.
- Choose model.
speech-2.8-hdby default — required for interjections. Drop tospeech-2.8-turboonly if the user asks for low-latency. - Set language_boost. Detect Russian / English from the input text; default
Russianfor Cyrillic,autootherwise. - Mark up the text:
- Insert
<#0.2#>–<#0.5#>pauses between phrases for natural cadence. Avoid pauses >1s in conversational lines. - Add interjections matching the character preset (e.g.
(chuckle)for Mark,(sighs)for Mila on Friday-chaos lines,(breath)between long phrases). - Don't strip the user's text — only add markup; preserve punctuation.
- Insert
- Pick voice tuning from the preset, or — if none — emotion
calm, speed1.0, pitch0. - Emit the JSON block. No prose around it. After the JSON, a single
notes:line with one tweak hint (when to raise/lower pitch or speed if the result feels off).
Пресеты персонажей (канон — см. character bible)
Источник: документ character bible проекта.
| Character | Voice profile | speed | pitch | emotion | Default interjections | voice_id slot | |---|---|---|---|---|---|---| | Mark (12, изобретатель) | Энергичный мальчик, перескоки | 1.15 | +2 | happy | (inhale), (chuckle), (gasps), (laughs) | TBD_russian_boy_voice | | Sonya (≈8, фантазёрка) | Девочка, мечтательная, певучая | 1.0 | +3 | happy | (chuckle), (humming) | TBD_russian_girl_voice | | Lyala (малышка, хаос) | Малышка, односложно, эмоционально | 1.0 | +5 | happy | (chuckle), (gasps), (laughs) | TBD_russian_toddler_voice | | Mila (37, мама-коуч) | Спокойная, тёплая, осознанная | 0.95 | 0 | calm | (breath), (sighs) | TBD_russian_woman_voice | | Artur (43, папа-предприниматель) | Уверенный, ироничный, с лёгким юмором | 1.0 | -2 | calm | (chuckle), (sighs) | TBD_russian_man_voice | | Lyubov (65, бабушка-кодер) | Тёплая, объясняющая, терпеливая | 0.95 | 0 | calm | (breath) | TBD_russian_grandma_voice | | Korney (70, дед-чудак) | Загадочная улыбка, рассказчик | 0.9 | -3 | calm | (chuckle), (humming), (sighs) | TBD_russian_grandpa_voice | | Praprаded (1841, дворянин) | Архаичная речь, удивлённо-неспешно | 0.9 | -1 | surprised | (gasps), (inhale), (sighs) | TBD_russian_aristocrat_voice | | narrator (default) | Нейтральный диктор | 1.0 | 0 | calm | — | TBD_russian_narrator_voice |
voice_id slots are placeholders — the user supplies the real ID (system preset or cloned voice). Always emit the slot as a placeholder string TBD_<role>_voice so it's grep-able.
Inline cheatsheet (fallback if WIKI page missing)
- Models:
speech-2.8-hd/speech-2.8-turbo— required for interjections.speech-2.6-*— only path towhisper/fluentemotions. - Pause:
<#x#>where x ∈ [0.01, 99.99] sec. - Interjections (2.8 only): (laughs) (chuckle) (coughs) (clear-throat) (groans) (breath) (pant) (inhale) (exhale) (gasps) (sniffs) (sighs) (snorts) (burps) (lip-smacking) (humming) (hissing) (emm) (sneezes).
- Emotions: happy, sad, angry, fearful, disgusted, surprised, calm, fluent, whisper.
- Ranges: speed 0.5–2.0, vol >0–10, pitch -12..+12.
- Audio: sample_rate 32000 + bitrate 128000 + format mp3 + channel 1 — safe defaults.
- Text limit: 10 000 chars; >3 000 → use streaming.
Output format (exact)
```json
{
"model": "speech-2.8-hd",
"text": "<marked-up text>",
"stream": false,
"language_boost": "Russian",
"voice_setting": {
"voice_id": "TBD_<role>_voice",
"speed": <num>,
"vol": 1.2,
"pitch": <int>,
"emotion": "<emotion>"
},
"audio_setting": {
"sample_rate": 32000,
"bitrate": 128000,
"format": "mp3",
"channel": 1
}
}
```
notes: <one short tuning hint — e.g. "если звучит слишком ровно — pitch +1, speed +0.05">
No headers, no commentary outside the JSON block and the notes: line.
Live example
User: «MiniMax voice для Марка: Привет! Я только что собрал дрон-курьер и он умеет приносить бутерброды!»
Output:
{
"model": "speech-2.8-hd",
"text": "(inhale) Прив-вет! <#0.2#> Я только что собрал дрон-курьер (chuckle) и он умеет приносить бутерброды!",
"stream": false,
"language_boost": "Russian",
"voice_setting": {
"voice_id": "TBD_russian_boy_voice",
"speed": 1.15,
"vol": 1.2,
"pitch": 2,
"emotion": "happy"
},
"audio_setting": {
"sample_rate": 32000,
"bitrate": 128000,
"format": "mp3",
"channel": 1
}
}
notes: если звучит слишком взросло — pitch +3; если слишком крикливо — pitch +1 и speed 1.1.
Special: long-form («полный приветственный текст») workflow
Если пользователь просит полное знакомство персонажа (>20 сек / multi-paragraph), не помещай в один JSON — раздели на 2–3 дубля по эмоциональным битам (например, greeting / show-and-tell / outro), выдай каждый как отдельный JSON-блок. Каждый дубль — ≤ 30 секунд речи.
Cross-skills
- Под шот-лист и сценаристику — [[creative-direction-skills|
/brief-to-scenario]] и [[aoc-application-skills|/generation-prompts]]. - API reference: документация формата MiniMax T2A.