Сообщения
После session.ready отправляйте сырой PCM. Управляющие сообщения: finalize, stop, ping.
Клиент → Сервер
| Сообщение | Данные | Описание |
|---|---|---|
session.finalize | — | Принудительно закрыть текущий сегмент и отправить final. |
session.stop | — | Аккуратно завершить поток. |
session.ping | — | Проверка связи. Ответ — session.pong. |
Аудиокадры — сырой pcm_s16le, 16 кГц, моно, до 64 КБ на кадр. Нет ни заголовка кадра, ни порядкового номера, ни учёта смещений: отправляйте байты по порядку, остальное сделает сервер.
Сервер → Клиент
Все серверные сообщения — текстовые JSON-кадры с полем type. sessionId есть только в session.ready, не в каждой расшифровке или переводе. segmentId непрозрачен, префикс разбирать не нужно.
| Сообщение | Данные | Описание |
|---|---|---|
session.ready | sessionId, audio, limits, store, region | Поток начался. Можно отправлять аудио. |
transcript.partial | text, language?, pending?, tail?, paragraphs?, tailTranslation? | Снимок предпросмотра. В режиме sentence paragraphs содержит {speaker?, pieces: [{text, confirmed}], translation?}, а tail/tailTranslation — незавершённую фразу. pending — плоский резервный формат. Заменяйте снимок целиком, показывайте переводы абзацев вместо суммарного translation.partial. Только transcript.final — окончательный результат. |
transcript.final | segmentId, text, startMs?, endMs?, speaker?, language? | Зафиксированный сегмент на часах эффективного аудио. |
translation.partial | text, sourceText | Неустойчивый предпросмотр перевода. |
translation.final | segmentId, text, sourceText, sourceLanguage, targetLanguage, enhanced? | Зафиксированный перевод. С aiEnhance тот же segmentId приходит ещё раз с enhanced: true. |
digest.update | sections[] | Живой протокол: { title, points[], confirmed }. Каждая отправка заменяет предыдущую. |
usage.update | effectiveSamples, discardedSamples, effectiveSeconds, discardedSeconds, priceCentsPerHour, accruedCents, collectedCents, uncollectedCents, balanceCents | Каждые 15 секунд и в конце. |
session.error | code, message, retryable, scope | Восстановимая или фатальная ошибка. |
session.ended | reason, enhancement, storage, billing | Сервер закрыл поток. У хранения и доработки свои статусы. |
session.pong | — | Ответ на session.ping. |