gigastt-pro

Интеграция

WebSocket, REST и SSE на одном порту

Все три интерфейса слушают 127.0.0.1:9876. Канонические спецификации — OpenAPI и AsyncAPI в репозитории движка; здесь та часть контракта, которой хватит, чтобы написать клиента.

Эндпоинты

Три способа отдать аудио

Протокол версионируется: текущая версия 1.0, поля в сообщениях только добавляются. Клиент, написанный под неё, обновление сервера не сломает.

  • WS/v1/ws

    Потоковый вход

    Сервер присылает ready и принимает бинарные кадры PCM16; телефония идёт как mulaw или alaw (G.711) через сообщение configure. Результаты возвращаются сообщениями partial и final.

  • POST/v1/transcribe

    Файл → JSON

    Тело запроса — сам файл, multipart-обёртка не нужна. В ответе текст, слова с таймкодами и confidence. Поддерживаются WAV, FLAC, MP3, OGG/Vorbis, Ogg-FLAC, Opus, M4A/AAC.

  • POST/v1/transcribe/stream

    Файл → SSE

    Вход тот же, что у /v1/transcribe, но ответ приходит событиями: data: partial по мере распознавания и data: final в конце файла.

Запросы

Как выглядит запрос

curl
curl -X POST http://127.0.0.1:9876/v1/transcribe \
  -H "Content-Type: application/octet-stream" \
  --data-binary @recording.wav
  • GET /health

    Liveness. Отвечает и во время загрузки модели — тогда поле model равно loading.

  • GET /ready

    Readiness. 200, когда пул сессий готов; 503 initializing во время загрузки и pool_exhausted при насыщении.

  • /v1/jobs

    Асинхронные задачи. Роуты существуют только с --enable-jobs, без флага отдают 404.

  • /metrics

    Prometheus. Поднимается флагом --metrics и слушает отдельный --metrics-listen (по умолчанию 127.0.0.1:9090); API-порт метрики не отдаёт.

Доступ

Ключи опциональны

Клиент передаёт ключ в заголовке X-API-Key. Для WebSocket, где заголовок выставить не всегда возможно, есть запасной путь — query api_key. Роуты /health и /ready остаются открытыми.

Поведение запроса задаёт query: itn, punctuation, vad и diarization включают постобработку, redact=off|mask|hash маскирует персональные данные, stop=off|mask|drop применяет стоп-лист. Формат ответа выбирает format: помимо JSON есть txt, srt, vtt и md, а word_timestamps и segments добавляют таймкоды слов и сегментную разметку.

Полные OpenAPI и AsyncAPI — в репозитории движка

Этой страницы хватает, чтобы написать клиента. Спецификации идут вместе с исходниками; порт по умолчанию — 9876.