Озвучивает текст естественными голосами и клонирует голос по вашему аудиофайлу. Цена зависит от режима: озвучка - 0.01 ₽ за символ в Turbo или 0.015 ₽ за символ в HD, клонирование голоса - 250 ₽ за голос.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
MiniMax Speech 2.8 озвучивает текст естественными голосами: с живой интонацией, паузами и эмоциями. Модель хорошо говорит по-русски и ещё на 40 языках. Её используют для закадрового голоса в роликах, рекламы, аудиокниг, голосовых сообщений и озвучки персонажей. Это самая новая версия: она лучше всех передаёт интонацию и умеет смеяться, вздыхать и покашливать прямо по тексту.
У нейросети две модели: HD звучит естественнее всего, Turbo работает быстрее и стоит дешевле. Вы выбираете модель и один из 34 готовых голосов, а текст до 10 000 символов превращается в MP3. Каждый вызов создаёт асинхронную операцию: вы получаете id, а готовый файл забираете запросом статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Через API доступна озвучка готовыми голосами. Клонирование своего голоса и раздел «Мои голоса» работают в форме на странице нейросети.
{
"tool": "minimax-speech-2-8",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь всегда "minimax-speech-2-8".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
text | string | Да | Текст для озвучки, от 1 до 10 000 символов. Можно вставлять паузы <#1.5#> и звуки (laughs), (sighs) и другие - подробнее ниже. |
model | enum | Нет | speech-2.8-hd (HD) - самое естественное звучание, 15 ₽ за 1000 символов; speech-2.8-turbo (Turbo) - быстрее и дешевле, 10 ₽ за 1000 символов. По умолчанию speech-2.8-hd. |
voice | enum | Нет | Готовый голос из таблицы ниже. По умолчанию Wise_Woman. |
voice_source | enum | Нет | Группа голосов: adult - взрослые (по умолчанию), child - детские. Для детского голоса передавайте child, иначе вернётся validation_error. |
emotion | enum | Нет | Эмоция подачи: neutral - нейтральная, happy - радость, sad - грусть, angry - злость, fearful - страх, disgusted - отвращение, surprised - удивление. По умолчанию neutral. |
language_boost | enum | Нет | Язык текста - помогает модели правильно читать слова, числа и ударения. По умолчанию Russian. Список значений ниже. |
use_advanced | boolean | Нет | Включает ручные настройки speed, volume и pitch. Без true они не применяются. |
speed | number | Нет | Скорость речи от 0.5 до 2, по умолчанию 1. Работает только вместе с use_advanced: true. |
volume | number |
voice | Имя на сайте | Группа |
|---|---|---|
Wise_Woman | Эльвира | взрослый |
Inspirational_girl | Алина | взрослый |
Exuberant_Girl | Кристина | взрослый |
Russian_BrightHeroine | Марина | взрослый |
Russian_AmbitiousWoman | Галина | взрослый |
Russian_PessimisticGirl | Олеся | взрослый |
English_Kind-heartedGirl | Ольга | взрослый |
Spanish_Narrator | Лия | взрослый |
English_SentimentalLady | Инна | взрослый |
Calm_Woman | Анна | взрослый |
Young_Knight | Юля | взрослый |
Imposing_Manner | Валерия | взрослый |
Abbess | Вика | взрослый |
Friendly_Person | Михаил | взрослый |
Deep_Voice_Man | Владимир | взрослый |
Casual_Guy | Стас | взрослый |
Russian_HandsomeChildhoodFriend | Валера | взрослый |
Russian_ReliableMan | Иван | взрослый |
Russian_AttractiveGuy | Андрей | взрослый |
Robot_Armor | Робот | взрослый |
English_CaptivatingStoryteller | Алекс | взрослый |
English_Comedian | Вася | взрослый |
English_PassionateWarrior | Саня | взрослый |
Послушать каждый голос можно на странице нейросети: у кнопки голоса в форме есть пример звучания на русском. Для детских голосов передавайте voice_source: "child".
language_boost принимает: Russian (русский), English (английский), auto (определить автоматически), Spanish (испанский), Chinese (китайский), Chinese,Yue (китайский (кантонский)), French (французский), Portuguese (португальский), German (немецкий), Turkish (турецкий), Dutch (нидерландский), Ukrainian (украинский), Vietnamese (вьетнамский), Indonesian (индонезийский), Japanese (японский), Italian (итальянский), Korean (корейский), Thai (тайский), Polish (польский), Romanian (румынский), Greek (греческий), Czech (чешский), Finnish (финский), Hindi (хинди), Arabic (арабский), Bulgarian (болгарский), Danish (датский), Hebrew (иврит), Malay (малайский), Persian (персидский), Slovak (словацкий), Swedish (шведский), Croatian (хорватский), Filipino (филиппинский), Hungarian (венгерский), Norwegian (норвежский), Slovenian (словенский), Catalan (каталанский), Nynorsk (норвежский (нюнорск)), Tamil (тамильский), Afrikaans (африкаанс).
Для английского текста модель дополнительно нормализует числа и даты.
Паузу нужной длины можно поставить прямо в тексте: <#1.5#> - это полторы секунды тишины. Длительность от 0.01 до 99.99 секунды. Паузу ставьте между словами, а не внутри слова.
В версии 2.8 модель не только читает текст, но и отыгрывает звуки. Пишите их по-английски в круглых скобках прямо в text, в том месте, где звук должен прозвучать:
(laughs) - смех, (chuckle) - смешок;(sighs) - вздох, (breath) - вдох, (inhale) и (exhale) - вдох и выдох;(coughs) - кашель, (clear-throat) - откашляться;(gasps) - ахнуть, (crying) - плач, (humming) - напевать;(groans), (pant), (sniffs), (snorts), (burps), (lip-smacking), (hissing), (emm), (whistles), (sneezes), (applause).Самый простой вызов: модель, голос и текст. Эмоция по умолчанию - нейтральная.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "minimax-speech-2-8",
"input": {
"model": "speech-2.8-hd",
"voice": "Russian_ReliableMan",
"text": "Добрый день! Мы открылись после ремонта и ждём вас в новом зале. Всю неделю действует скидка двадцать процентов на всё меню."
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'minimax-speech-2-8',
input: {
model: 'speech-2.8-hd',
voice: 'Russian_ReliableMan',
text: 'Добрый день! Мы открылись после ремонта и ждём вас в новом зале. Всю неделю действует скидка двадцать процентов на всё меню.',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'minimax-speech-2-8',
'input': {
'model': 'speech-2.8-hd',
'voice': 'Russian_ReliableMan',
'text': 'Добрый день! Мы открылись после ремонта и ждём вас в новом зале. Всю неделю действует скидка двадцать процентов на всё меню.'
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Детские голоса передаются вместе с voice_source: "child". Эмоция happy делает подачу веселее, а (laughs) и (sighs) модель отыграет голосом.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "minimax-speech-2-8",
"input": {
"model": "speech-2.8-turbo",
"voice_source": "child",
"voice": "Lovely_Girl",
"emotion": "happy",
"text": "Знаешь, что я сегодня узнала? <#0.6#> (laughs) Оказывается, коты спят по шестнадцать часов в сутки! (sighs) Вот бы мне так."
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'minimax-speech-2-8',
input: {
model: 'speech-2.8-turbo',
voice_source: 'child',
voice: 'Lovely_Girl',
emotion: 'happy',
text: 'Знаешь, что я сегодня узнала? <#0.6#> (laughs) Оказывается, коты спят по шестнадцать часов в сутки! (sighs) Вот бы мне так.',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'minimax-speech-2-8',
'input': {
'model': 'speech-2.8-turbo',
'voice_source': 'child',
'voice': 'Lovely_Girl',
'emotion': 'happy',
'text': 'Знаешь, что я сегодня узнала? <#0.6#> (laughs) Оказывается, коты спят по шестнадцать часов в сутки! (sighs) Вот бы мне так.'
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
language_boost: "English" подсказывает модели язык, а use_advanced: true включает скорость и высоту голоса. Здесь чтение чуть медленнее и ниже - как у рассказчика.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "minimax-speech-2-8",
"input": {
"model": "speech-2.8-hd",
"voice": "English_CaptivatingStoryteller",
"language_boost": "English",
"use_advanced": true,
"speed": 0.9,
"pitch": -1,
"text": "Once upon a time, in a small village by the sea, there lived an old lighthouse keeper."
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'minimax-speech-2-8',
input: {
model: 'speech-2.8-hd',
voice: 'English_CaptivatingStoryteller',
language_boost: 'English',
use_advanced: true,
speed: 0.9,
pitch: -1,
text: 'Once upon a time, in a small village by the sea, there lived an old lighthouse keeper.',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'minimax-speech-2-8',
'input': {
'model': 'speech-2.8-hd',
'voice': 'English_CaptivatingStoryteller',
'language_boost': 'English',
'use_advanced': True,
'speed': 0.9,
'pitch': -1,
'text': 'Once upon a time, in a small village by the sea, there lived an old lighthouse keeper.'
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "minimax-speech-2-8",
"cost": 1.86,
"balance_after": 498.2,
"created_at": "2026-09-24T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "minimax-speech-2-8",
"cost": 1.86,
"created_at": "2026-09-24T12:00:00Z",
"completed_at": "2026-09-24T12:00:10Z",
"result": {
"type": "audio",
"urls": [
"https://storage.yandexcloud.net/bratuha.ru.files/user_files/1790255112173-cgxn05nq.mp3"
],
"files": [
{
"url": "https://storage.yandexcloud.net/bratuha.ru.files/user_files/1790255112173-cgxn05nq.mp3",
"name": "result"
}
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "minimax-speech-2-8",
"cost": 1.86,
"created_at": "2026-09-24T12:00:00Z",
"completed_at": "2026-09-24T12:00:12Z",
"result": null,
"error_message": "По вашему запросу не удалось получить результат. Пожалуйста, измените запрос или входные данные и попробуйте снова."
}
После создания операции сохраните id и проверяйте её статус запросом:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const response = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
}
)
const data = await response.json()
Пока озвучка создаётся, status будет queued или processing. Опрашивайте статус раз в 5-10 секунд.
После успешного завершения result содержит один аудиофайл MP3 (44,1 кГц, моно):
type всегда равен "audio";urls содержит одну ссылку на MP3;files дублирует ту же ссылку с именем файла.Длительность файла зависит от длины текста и скорости речи: 100 символов русского текста звучат примерно 8-9 секунд.
text стоит 0,01 ₽ в HD и 0,01 ₽ в Turbo. Считаются все символы, включая пробелы, знаки препинания, паузы <#...#> и звуки в скобках.cost. Если операция завершилась с ошибкой, деньги возвращаются на баланс автоматически.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги.queued проверяйте статус по id.model, voice, voice_source, emotion и language_boost, текст длиннее 10 000 символов и детский голос без voice_source: "child" вернут validation_error ещё до создания операции.speed, volume и pitch без use_advanced: true не применяются: модель читает с обычными настройками.language_boost по языку текста: с неверным языком модель хуже читает числа и ударения. auto подходит для смешанного текста.| Нет |
Громкость от 0.1 до 10, по умолчанию 1. Работает только вместе с use_advanced: true. |
pitch | integer | Нет | Высота голоса от -12 до 12, по умолчанию 0. Отрицательные значения делают голос ниже. Работает только вместе с use_advanced: true. |
Chinese (Mandarin)_Gentleman | Амир | взрослый |
Patient_Man | Влад | взрослый |
Determined_Man | Юрий | взрослый |
Elegant_Man | Макс | взрослый |
Lovely_Girl | Таня | детский |
Decent_Boy | Саша | детский |
Lively_Girl | Катя | детский |
Sweet_Girl_2 | Соня | детский |
Russian_CrazyQueen | Настя | детский |
Russian_Bad-temperedBoy | Артем | детский |
Arrogant_Miss | Ирина | детский |