API транскрипции

API транскрипции

API транскрипции преобразует аудиофайлы в текст. Поддерживает более 50 языков с автоматическим определением, временные метки сегментов и AI-постобработку.

Процесс

  1. Загрузка — получите presigned URL и загрузите файл
  2. Создание задания — укажите параметры транскрипции
  3. Ожидание — опрашивайте статус или используйте SSE-стрим
  4. Получение результата — полный текст и сегменты с таймкодами

Загрузка файла

# Получаем presigned URL
curl -X POST https://api.nagovori.ru/v1/uploads/presign \
  -H "Authorization: Bearer $NAGOVORI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "meeting.mp3",
    "content_type": "audio/mpeg",
    "size_bytes": 5242880
  }'

Ответ:

{
  "bucket": "uploads",
  "object_key": "uploads/user123/abc.mp3",
  "upload_url": "https://storage.example.com/...",
  "expires_at": "2026-04-20T11:00:00Z"
}

Загрузите файл PUT-запросом на upload_url:

curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: audio/mpeg" \
  --data-binary @meeting.mp3

Создание транскрипции

curl -X POST https://api.nagovori.ru/v1/transcriptions \
  -H "Authorization: Bearer $NAGOVORI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "object_key": "uploads/user123/abc.mp3",
    "filename": "meeting.mp3",
    "content_type": "audio/mpeg",
    "size_bytes": 5242880,
    "language": "auto"
  }'

Параметры

Параметр Тип Обязательный Описание
object_key string Да Ключ объекта из ответа presign
filename string Нет Имя файла
content_type string Нет MIME-тип файла
size_bytes integer Нет Размер файла в байтах
duration_seconds integer Нет Длительность аудио в секундах
language string Нет Код языка или "auto"
model string Нет ID модели ASR

Статусы

Статус Описание
queued В очереди на обработку
processing Обрабатывается
completed Завершено — текст доступен
failed Ошибка — смотрите error_message

Получение результата

curl https://api.nagovori.ru/v1/transcriptions/{id} \
  -H "Authorization: Bearer $NAGOVORI_API_KEY"

Ответ (при статусе completed):

{
  "id": "...",
  "status": "completed",
  "transcript_text": "Полный текст расшифровки...",
  "transcript_segments": [
    {"start": 0.0, "end": 3.5, "text": "Первый сегмент"},
    {"start": 3.5, "end": 7.2, "text": "Второй сегмент"}
  ],
  "detected_language": "ru",
  "duration_seconds": 120
}

Стриминг через SSE

Для получения текста в реальном времени используйте Server-Sent Events:

curl -N https://api.nagovori.ru/v1/transcriptions/{id}/stream \
  -H "Authorization: Bearer $NAGOVORI_API_KEY"

События:

  • update — полный снимок состояния транскрипции
  • token — отдельный текстовый токен (инкрементальный)
  • done — транскрипция завершена

Поддерживаемые форматы

Аудио: MP3, WAV, OGG, FLAC, M4A, AAC, WMA, WEBM

Видео (извлекается аудиодорожка): MP4, MKV, AVI, MOV

Языки

Автоматическое определение из 50+ языков. Для более точного результата укажите язык явно:

  • ru — русский
  • en — английский
  • de — немецкий
  • fr — французский
  • es — испанский
  • auto — автоопределение (по умолчанию)