Озвучивает текст голосом из короткого аудиопримера и старается сохранить манеру речи диктора. За один запуск — до 700 символов, это около минуты речи. Цена - 3 ₽ за запуск.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Zonos2 озвучивает текст голосом конкретного человека. Достаточно короткой записи голоса - до 30 секунд: модель копирует тембр и манеру речи и читает ваш текст этим голосом. Так делают озвучку роликов своим голосом, голосовые ответы в приложениях, персонажей для игр и аудиоверсии текстов.
Сценарии:
Каждый вызов создаёт асинхронную операцию: сначала вы получаете id, затем проверяете статус, пока не придёт готовый файл.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режим задаётся параметром use_advanced:
false или не передан - базовый режим, дополнительные настройки не применяются;true - учитываются accurate_mode, clean_speaker_background, temperature, top_p, min_p, top_k.language работает в обоих режимах.
{
"tool": "zonos2",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "zonos2".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
text | string | Да | Текст для озвучки, от 1 до 700 символов. Это около минуты речи: дольше модель за один запуск не говорит и обрывает запись, поэтому более длинный текст API отклоняет с ошибкой 400. Длинный текст разбивайте на части и отправляйте отдельными операциями. |
reference_audio_url | string (url) | Да | Ссылка на образец голоса длиной от 1 до 30 секунд. Только внешние http/https URL с расширением .mp3, .wav, .m4a, .aac, .flac, .ogg, .opus или .webm. В записи должен звучать один человек, без музыки и шума. |
voice_consent | boolean | Да | Подтверждение, что у вас есть право использовать этот голос: свой голос или голос человека, который дал согласие. Передавайте true, без него запрос отклоняется с ошибкой 400. В модель не отправляется. |
use_advanced | boolean | Нет | true - включить дополнительные настройки ниже. false - базовый режим, в нём дополнительные настройки не отправляются в модель. По умолчанию false, обычно так и лучше. |
language | enum | Нет | Язык текста: по нему модель читает числа, даты и сокращения. Работает в любом режиме. Варианты: ru (русский), auto (не задавать язык: модель читает числа по-английски), en_us (английский, США), en_gb (английский, Великобритания), fr_fr (французский), de (немецкий), es (испанский), it (итальянский), pt_br (португальский, Бразилия), ja (японский), cmn (китайский), ko (корейский). По умолчанию ru. Для текста на другом языке выберите его код. |
accurate_mode | boolean | Нет | Точное совпадение голоса. true - голос ближе к образцу, false - речь выразительнее, но сходство слабее. По умолчанию true. Работает только при use_advanced: true. |
clean_speaker_background | boolean | Нет | Включайте (true), если в образце нет шума, музыки и посторонних голосов. По умолчанию false. Работает только при use_advanced: true. |
temperature | number | Нет | Вариативность звучания, от 0 до 2. Ниже - ровнее и стабильнее, выше - разнообразнее интонации. По умолчанию 1.15. Работает только при use_advanced: true. |
top_p | number | Нет | Ограничение выбора вариантов по суммарной вероятности, от 0 до 1. 0 - без ограничения. По умолчанию 0. Работает только при use_advanced: true. |
min_p | number | Нет | Отсекает слишком маловероятные варианты речи, от 0 до 1. По умолчанию 0.18. Работает только при use_advanced: true. |
top_k | number | Нет | Сколько вариантов рассматривать на каждом шаге, целое число от 0 до 2048. 0 - без ограничения. По умолчанию 106. Работает только при use_advanced: true. |
Русский текст голосом из образца. Стоимость - 3 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "zonos2",
"input": {
"text": "Добрый день! Меня зовут Анна, и сегодня я расскажу, как оформить заказ на нашем сайте за пару минут.",
"reference_audio_url": "https://cdn.example.com/reference-voice-1.mp3",
"voice_consent": true
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'zonos2',
input: {
text: 'Добрый день! Меня зовут Анна, и сегодня я расскажу, как оформить заказ на нашем сайте за пару минут.',
reference_audio_url: 'https://cdn.example.com/reference-voice-1.mp3',
voice_consent: true,
},
}),
})
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': 'zonos2',
'input': {
'text': 'Добрый день! Меня зовут Анна, и сегодня я расскажу, как оформить заказ на нашем сайте за пару минут.',
'reference_audio_url': 'https://cdn.example.com/reference-voice-1.mp3',
'voice_consent': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Английский текст с явно заданным языком, точным сходством с образцом и чуть более ровной интонацией (temperature: 1). Образец чистый, поэтому включён clean_speaker_background. Стоимость - 3 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "zonos2",
"input": {
"text": "Welcome to our store. Today we have a special offer for all new customers.",
"reference_audio_url": "https://cdn.example.com/reference-voice-1.wav",
"voice_consent": true,
"use_advanced": true,
"language": "en_us",
"accurate_mode": true,
"clean_speaker_background": true,
"temperature": 1,
"top_p": 0,
"min_p": 0.18,
"top_k": 106
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'zonos2',
input: {
text: 'Welcome to our store. Today we have a special offer for all new customers.',
reference_audio_url: 'https://cdn.example.com/reference-voice-1.wav',
voice_consent: true,
use_advanced: true,
language: 'en_us',
accurate_mode: true,
clean_speaker_background: true,
temperature: 1,
top_p: 0,
min_p: 0.18,
top_k: 106,
},
}),
})
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': 'zonos2',
'input': {
'text': 'Welcome to our store. Today we have a special offer for all new customers.',
'reference_audio_url': 'https://cdn.example.com/reference-voice-1.wav',
'voice_consent': True,
'use_advanced': True,
'language': 'en_us',
'accurate_mode': True,
'clean_speaker_background': True,
'temperature': 1,
'top_p': 0,
'min_p': 0.18,
'top_k': 106,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "zonos2",
"cost": 3,
"balance_after": 497,
"created_at": "2026-09-30T12:46:26Z"
}
cost - сколько списано за операцию, в рублях.balance_after - баланс после списания.{
"id": "op_uuid-123",
"status": "completed",
"tool": "zonos2",
"cost": 3,
"created_at": "2026-09-30T12:46:26Z",
"completed_at": "2026-09-30T12:52:19Z",
"result": {
"type": "audio",
"urls": [
"https://storage.bratuha.ru/results/zonos2/speech-1.wav"
],
"files": [
{
"url": "https://storage.bratuha.ru/results/zonos2/speech-1.wav",
"name": "result"
}
]
},
"error_message": null
}
Например, если модель не смогла прочитать образец голоса (так бывает с записями WebM из браузера):
{
"id": "op_uuid-123",
"status": "failed",
"tool": "zonos2",
"cost": 3,
"created_at": "2026-09-30T12:46:26Z",
"completed_at": "2026-09-30T12:46:36Z",
"result": null,
"error_message": "Длительность аудио слишком короткая. Минимальная длина — 0,5 секунды. Найдена длина 0,0 секунды."
}
Сохраните id из ответа на создание и запрашивайте статус операции по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForSpeech(id) {
while (true) {
const response = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await response.json()
if (operation.status === 'completed' || operation.status === 'failed') {
return operation
}
await new Promise((resolve) => setTimeout(resolve, 5000))
}
}
Статус операции:
queued - операция создана и ждёт запуска;processing - текст озвучивается;completed - готово, ссылка лежит в result;failed - не получилось, причина в error_message.Время выполнения сильно плавает: короткий текст часто готов за 15-60 секунд, но иногда ожидание растягивается до нескольких минут. Закладывайте в интеграции до 10-15 минут. Опрашивать одну операцию можно не чаще раза в секунду, иначе придёт 429.
После завершения в result приходит один WAV-файл с озвученным текстом:
{
"type": "audio",
"urls": [
"https://storage.bratuha.ru/results/zonos2/speech-1.wav"
],
"files": [
{
"url": "https://storage.bratuha.ru/results/zonos2/speech-1.wav",
"name": "result"
}
]
}
type - всегда "audio".urls - массив из одной ссылки на готовый файл.files - та же ссылка в виде объекта с url и name. Можно брать ссылку из любого из двух полей.Файл - WAV без сжатия (16 бит, моно, 44,1 кГц). Для ориентира: фраза из 94 символов в тестовом запуске дала запись длиной около 7 секунд.
Цена одна: 3 ₽ за запуск с текстом до 700 символов. Образец голоса и дополнительные настройки на цену не влияют. Точная сумма приходит в поле cost ответа на создание операции и сразу списывается с баланса.
POST /api/v1/operations не идемпотентен: каждый запрос создаёт новую операцию и списывает деньги. Не повторяйте запрос автоматически при обрыве связи.queued, результат нужно забирать запросом статуса по id.http/https URL. Адреса localhost и внутренних сетей не принимаются. Длительность образца сервер проверяет до создания операции: если она больше 30 секунд, меньше 1 секунды или её не удалось определить, API вернёт ошибку 400 и деньги не спишутся.use_advanced: true с accurate_mode: true.voice_consent: true.