Разделы документации
Синтез речи (TTS)готовится
Планируемый контракт POST /v1/audio/speech: озвучивание текста и потоковая отдача аудио
Запрос
Планируется обычный HTTP-запрос с тем же ключом, что и у текстовых вызовов: заголовок Authorization: Bearer sk-libra-… . Тело — JSON в кодировке UTF-8.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| input | строка | да | Текст для озвучивания. Планируемый предел — 4096 знаков за один запрос. |
| model | строка | да | Голосовая модель синтеза, например libra-tts. |
| voice | строка | да | Идентификатор голоса из справочника голосов. |
| format | строка | нет | Формат аудио: mp3 (по умолчанию), wav, opus. |
| speed | число | нет | Скорость речи, 0.25–4.0, по умолчанию 1.0. |
| stream | логическое | нет | Если true — аудио отдаётся потоком по мере синтеза. |
Ответ и потоковая отдача
В обычном режиме ответ — бинарное аудио целиком, Content-Type по формату: audio/mpeg для mp3, audio/wav для wav, audio/ogg для opus. Ошибки, в отличие от аудио, приходят как JSON с Content-Type: application/json; charset=utf-8.
При stream: true аудио планируется отдавать порциями через chunked transfer encoding: тот же Content-Type, тело приходит кусками по мере синтеза, без служебных обёрток и без маркера data: [DONE] (это не server-sent events, как в чате). Так можно начать проигрывание, не дожидаясь конца фразы. Длину ответа заранее не сообщаем — заголовка Content-Length не будет.
Цена
Синтез тарифицируется по количеству знаков во входном тексте: 4 050 ₽ за 1 млн знаков. Считаются знаки поля input, включая пробелы и знаки препинания. Формат аудио и скорость на цену не влияют.
| Объём текста | Стоимость |
|---|---|
| 1 000 знаков | 4,05 ₽ |
| 10 000 знаков | 40,50 ₽ |
| 100 000 знаков | 405 ₽ |
| 1 000 000 знаков | 4 050 ₽ |
Важно: сейчас баланс аккаунта считается только в токенах и списывается из блока usage в ответе модели. Списания «за знак» в биллинге пока нет — этот механизм нужно построить отдельно.
Ошибки
Планируется тот же формат ошибок, что и в текстовом API: JSON с кодом и русским текстом сообщения.
| HTTP | Код | Когда |
|---|---|---|
| 401 | no_api_key | Заголовок Authorization не передан |
| 401 | invalid_api_key | Ключ не найден или отозван |
| 402 | insufficient_balance | На балансе не хватает средств на озвучивание |
| 429 | rate_limited | Превышен лимит запросов по ключу (120 запросов в минуту) |
| 502 | upstream_error | Сбой на стороне синтеза |