Озвучивает текст готовыми голосами на 15 языках, включая русский, и может менять подачу речи по текстовой подсказке. Цена - 10 ₽ за 1000 символов.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Inworld Realtime TTS 2 озвучивает текст готовыми голосами на 15 языках, в том числе на русском. Её используют для закадрового голоса в роликах, озвучки уроков и инструкций, голосовых ответов ассистентов и чат-ботов, реплик персонажей в играх.
У модели 65 голосов, каждый говорит на своём языке. Подачу можно задать словами прямо в тексте: короткая инструкция в квадратных скобках в начале текста меняет темп и настроение, но сама не озвучивается.
Каждый вызов создаёт асинхронную операцию: вы получаете id, а готовый MP3 забираете отдельным запросом статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режим у модели один - озвучка текста. Отличаются язык, голос, подача и необязательные настройки скорости и выразительности.
{
"tool": "inworld-realtime-2",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь всегда "inworld-realtime-2".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
text | string | Да | Текст для озвучки, от 1 до 2000 символов. Пишите на том языке, который указали в language. В начале можно дать инструкцию по подаче в квадратных скобках - подробнее ниже. |
language | enum | Нет | Язык текста: ru (русский), en (английский), zh (китайский), ja (японский), ko (корейский), fr (французский), de (немецкий), es (испанский), pt (португальский), it (итальянский), nl (нидерландский), pl (польский), hi (хинди), he (иврит), ar (арабский). От языка зависит, какие голоса можно выбрать. Если не передать, используется ru. |
voice | enum | Нет | Готовый голос. Он должен относиться к выбранному языку - таблица голосов ниже. Если не передать, используется Nikolai. |
use_advanced | boolean | Нет | Включает ручные настройки speaking_rate и temperature. Без true эти поля не применяются. |
speaking_rate | number | Нет | Скорость речи от 0.5 до 1.5. 1 - обычная скорость. Работает только вместе с use_advanced: true. |
temperature | number | Нет | Выразительность от 0.7 до 1.5. 1 - обычная подача, меньше - ровнее и предсказуемее, больше - живее и разнообразнее. Работает только вместе с use_advanced: true. |
В начале text можно в квадратных скобках написать, как читать, а с новой строки - сам текст:
[говори медленно и тепло, как сказочник перед сном]
Добрый вечер! Сегодня я расскажу вам короткую историю о старом маяке.
Инструкция работает и на русском, и на английском, например [speak quickly, clearly and calmly]. Вслух она не читается, но входит в длину текста и в стоимость.
language | Язык | Голоса (voice - имя на сайте) |
|---|---|---|
ru | Русский | Svetlana - Светлана, Elena - Елена, Dmitry - Дмитрий, Nikolai - Николай |
en | Английский | Alex - Алекс, Ashley - Эшли, Craig - Крейг, Deborah - Дебора, Dennis - Деннис, Edward - Эдвард, Elizabeth - Элизабет, Hades - Аид, Julia - Джулия, Pixie - Пикси, Mark - Марк, Olivia - Оливия, Priya - Прия, Ronald - Рональд, Sarah - Сара, Shaun - Шон, Theodore - Теодор, Timothy - Тимоти, Wendy - Венди, Dominus - Доминус, Hana - Хана, Clive - Клайв, Carter - Картер, Blake - Блейк, Luna - Луна |
zh | Китайский | Yichen - Ичэнь, Xiaoyin - Сяоинь, Xinyi - Синьи, Jing - Цзин |
ja | Японский | Asuka - Асука, Satoshi - Сатоси |
ko | Корейский | Hyunwoo - Хёну, Minji - Минджи, Seojun - Соджун, Yoona - Юна |
fr | Французский | Alain - Ален, Hélène - Элен, Mathieu - Матьё, Étienne - Этьен |
de | Немецкий | Johanna - Йоханна, Josef - Йозеф |
es | Испанский | Diego - Диего, Lupita - Лупита, Miguel - Мигель, Rafael - Рафаэль |
pt | Португальский | Heitor - Эйтор, Maitê - Майте |
it | Итальянский | Gianni - Джанни, Orietta - Ориетта |
nl | Нидерландский | Erik - Эрик, Katrien - Катрин, Lennart - Леннарт, Lore - Лоре |
pl | Польский | Szymon - Шимон, Wojciech - Войцех |
hi | Хинди | Riya - Рия, Manoj - Манодж |
he | Иврит | Yael - Яэль, Oren - Орен |
ar | Арабский | Nour - Нур, Omar - Омар |
Послушать каждый голос можно на странице нейросети в форме сайта: у кнопки голоса есть пример звучания.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "inworld-realtime-2",
"input": {
"text": "Добрый вечер! Сегодня я расскажу вам короткую историю о старом маяке, который стоял на краю холодного северного моря.",
"language": "ru",
"voice": "Nikolai"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'inworld-realtime-2',
input: {
text: 'Добрый вечер! Сегодня я расскажу вам короткую историю о старом маяке, который стоял на краю холодного северного моря.',
language: 'ru',
voice: 'Nikolai',
},
}),
})
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': 'inworld-realtime-2',
'input': {
'text': 'Добрый вечер! Сегодня я расскажу вам короткую историю о старом маяке, который стоял на краю холодного северного моря.',
'language': 'ru',
'voice': 'Nikolai',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Инструкция в начале текста задаёт темп и настроение. Голос Svetlana, русский язык.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "inworld-realtime-2",
"input": {
"text": "[говори медленно и тепло, как сказочник перед сном]\nДобрый вечер! Сегодня я расскажу вам короткую историю о старом маяке, который стоял на краю холодного северного моря.",
"language": "ru",
"voice": "Svetlana"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'inworld-realtime-2',
input: {
text: '[говори медленно и тепло, как сказочник перед сном]\nДобрый вечер! Сегодня я расскажу вам короткую историю о старом маяке, который стоял на краю холодного северного моря.',
language: 'ru',
voice: 'Svetlana',
},
}),
})
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': 'inworld-realtime-2',
'input': {
'text': '[говори медленно и тепло, как сказочник перед сном]\nДобрый вечер! Сегодня я расскажу вам короткую историю о старом маяке, который стоял на краю холодного северного моря.',
'language': 'ru',
'voice': 'Svetlana',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Английский текст читает голос Dennis. use_advanced включает ручную скорость и выразительность.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "inworld-realtime-2",
"input": {
"text": "Welcome to our store! Today we have a special offer on all winter jackets.",
"language": "en",
"voice": "Dennis",
"use_advanced": true,
"speaking_rate": 1.1,
"temperature": 1.2
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'inworld-realtime-2',
input: {
text: 'Welcome to our store! Today we have a special offer on all winter jackets.',
language: 'en',
voice: 'Dennis',
use_advanced: true,
speaking_rate: 1.1,
temperature: 1.2,
},
}),
})
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': 'inworld-realtime-2',
'input': {
'text': 'Welcome to our store! Today we have a special offer on all winter jackets.',
'language': 'en',
'voice': 'Dennis',
'use_advanced': True,
'speaking_rate': 1.1,
'temperature': 1.2,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "inworld-realtime-2",
"cost": 1.17,
"balance_after": 498.83,
"created_at": "2026-09-24T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "inworld-realtime-2",
"cost": 1.17,
"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/1790254401468-speech.mp3"
],
"files": [
{
"url": "https://storage.yandexcloud.net/bratuha.ru.files/user_files/1790254401468-speech.mp3",
"name": "result"
}
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "inworld-realtime-2",
"cost": 1.17,
"created_at": "2026-09-24T12:00:00Z",
"completed_at": "2026-09-24T12:00:09Z",
"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. Опрашивайте статус раз в 3-5 секунд, не чаще одного раза в секунду.
После успешного завершения result содержит один аудиофайл MP3 (48 кГц, моно):
type всегда равен "audio";urls содержит одну ссылку на MP3;files дублирует ту же ссылку с именем файла.Длительность файла зависит от длины текста и скорости речи: 150 символов русского текста звучат примерно 10 секунд, 2000 символов - около 2,5 минуты.
text, включая пробелы, знаки препинания и инструкцию в квадратных скобках.cost. Если операция завершилась с ошибкой, деньги возвращаются на баланс автоматически.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги.queued проверяйте статус по id.Nikolai работает только с ru, а Dennis - только с en. Несовместимая пара вернёт validation_error ещё до создания операции.language и voice, текст длиннее 2000 символов и speaking_rate или temperature вне допустимого диапазона тоже вернут validation_error.[бодро, как ведущий утреннего шоу] или [тихо и доверительно]. Длинная инструкция увеличивает стоимость, а подачу меняет не сильнее.