Appearance
Подключение
Endpoint
wss://api.genvoice.ru/v1/api/tts/streamПодключение осуществляется по протоколу WebSocket (WSS) без query-параметров. Аутентификация и настройка сессии (включая формат аудио) происходят внутри WebSocket-сессии через сообщение session.begin.
Поддерживаемые форматы аудио
Формат задаётся в поле output_format события session.begin:
| Формат | Sample rate | Bits per sample | Байт/сек | Применение |
|---|---|---|---|---|
pcm_8000 | 8 000 Hz | 16-bit (signed LE) | 16 000 | Телефония (PCM) |
pcm_16000 | 16 000 Hz | 16-bit (signed LE) | 32 000 | Голосовые ассистенты |
pcm_22050 | 22 050 Hz | 16-bit (signed LE) | 44 100 | Общее назначение |
pcm_24000 | 24 000 Hz | 16-bit (signed LE) | 48 000 | Рекомендуемый |
ulaw_8000 | 8 000 Hz | 8-bit (µ-law) | 8 000 | Телефония (G.711 µ-law) |
alaw_8000 | 8 000 Hz | 8-bit (A-law) | 8 000 | Телефония (G.711 A-law) |
Рекомендация
Для большинства задач используйте pcm_24000 — наилучшее качество при умеренном объёме данных. Для телефонии (SIP/VoIP) выбирайте ulaw_8000 или alaw_8000.
Аудио передаётся в raw-формате (без заголовков WAV/MP3) и кодируется в base64 внутри JSON-сообщений audio.chunk.
HTTP-ошибки до WebSocket Upgrade
Если подключение невозможно, сервер отвечает HTTP-ошибкой до установки WebSocket:
| HTTP-код | Причина |
|---|---|
| 503 Service Unavailable | Сервер перегружен (достигнут лимит соединений) или выключается |
WebSocket Close Codes
После установки WebSocket-соединения сервер может закрыть его с одним из следующих кодов:
| Код | Значение | Описание |
|---|---|---|
| 1000 | Normal | Нормальное закрытие по session.end |
| 4001 | Auth Failed | Неверный API-ключ |
| 4002 | Auth Timeout | session.begin не отправлен в течение 10 секунд после подключения |
| 4003 | Rate Limited | Превышен лимит параллельных соединений |
| 4004 | Insufficient Balance | Недостаточно средств на балансе |
| 4005 | Service Unavailable | TTS-сервис временно недоступен |
| 4006 | Voice Not Found | Голос не найден |
| 4008 | Inactivity Timeout | Тайм-аут бездействия (по умолчанию 30 сек) |
| 4500 | Internal Error | Внутренняя ошибка сервера |
Обратите внимание
Код 4002 означает, что клиент подключился, но не отправил session.begin в течение 10 секунд. Отправляйте это сообщение сразу после установки соединения.
Лимиты
| Ограничение | Значение |
|---|---|
| Параллельных WebSocket-соединений на пользователя | Зависит от тарифа (1–10) |
| Максимальный размер сообщения | 64 КБ |
| Тайм-аут аутентификации | 10 секунд |
| Тайм-аут бездействия | 30 секунд (настраиваемый, до 180 сек) |
| Скорость речи | 0.5× – 1.5× |
Лимиты параллельных соединений по тарифам:
| Тариф | Параллельных соединений |
|---|---|
| Free | 1 |
| Старт | 2 |
| Базовый | 3 |
| Продвинутый | 5 |
При попытке открыть второе параллельное соединение сервер вернёт ошибку rate_limited и закроет соединение с кодом 4003.
Следующие шаги
- Протокол сообщений — формат всех событий
- Жизненный цикл сессии — состояния и переходы