Aiesa Транскрипция

Асинхронная расшифровка аудио с диаризацией и LLM-анализом

Aiesa Транскрипция

Российский провайдер расшифровки речи с разбивкой по спикерам (диаризацией). В отличие от Whisper, работает асинхронно: запрос ставит задачу в очередь и сразу возвращает id, а готовый текст вы забираете отдельным запросом.

Статус задачи опрашивайте на GET /v1/audio/transcriptions/{id}, а не на /v1/media/{id}. Media API обслуживает картинки, видео и музыку; для транскрипции он вернёт ошибку RESULT_EXPIRED, хотя текст на самом деле готов.

Обзор

ХарактеристикаЗначение
ID моделейaiesa/transcribe, aiesa/transcribe-fast
Эндпоинт/v1/audio/transcriptions
РежимАсинхронный: submit → опрос статуса
ДиаризацияВключена по умолчанию: поле segments, отдельный параметр не нужен
Макс. размер файла50 МБ при передаче base64; при передаче ссылкой лимит платформы не действует
Стоимостьaiesa/transcribe - 0,12 ₽/мин, aiesa/transcribe-fast - 0,40 ₽/мин

Какую модель выбрать

МодельПриоритет обработкиЦенаКогда использовать
aiesa/transcribeобычная очередь0,12 ₽/минпакетная обработка, когда ждать не жалко
aiesa/transcribe-fastускоренный0,40 ₽/мининтерактивные сценарии, когда результат нужен быстро

Тарификация идёт по целым минутам с округлением вверх, минимум одна минута. Запись на 15 секунд стоит как минута.

Возможности

Диаризация

Разбивка расшифровки по спикерам с таймкодами

Длинные записи

Совещания и интервью целиком, без нарезки на куски

LLM-анализ

Саммари и выводы по готовой расшифровке одним запросом

Хранение результата

Текст доступен по id и через неделю, и через месяц

Как это работает

  1. Отправка аудио: POST /v1/audio/transcriptions возвращает id задачи и статус processing
  2. Опрос статуса: GET /v1/audio/transcriptions/{id} раз в 5–10 секунд, пока статус processing
  3. Результат: при статусе completed в ответе появляются text, duration и segments со спикерами

Полный пример

# 1. Ставим задачу
curl -X POST "https://api.usellm.ru/v1/audio/transcriptions" \
  -H "Authorization: Bearer <USELLM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aiesa/transcribe",
    "file": "https://example.com/meeting.mp3"
  }'
# → {"id":"gen_1234567890123456789","object":"transcription","status":"processing","model":"aiesa/transcribe"}

# 2. Опрашиваем статус (повторять, пока status = processing)
curl "https://api.usellm.ru/v1/audio/transcriptions/gen_1234567890123456789" \
  -H "Authorization: Bearer <USELLM_API_KEY>"

Параметры запроса

ПараметрОбязательныйОписание
modelДаaiesa/transcribe или aiesa/transcribe-fast
fileДаАудио: data URI с base64 (data:audio/mp3;base64,...) или прямая ссылка на файл
languageНетЯзык аудио в ISO-639-1 (ru, en). Значение auto не поддерживается: если язык заранее неизвестен, не передавайте параметр вовсе
promptНетКонтекст для расшифровки
userНетИдентификатор вашего конечного пользователя

Параметр response_format на асинхронных моделях не применяется: ответ всегда приходит в собственном формате с полем segments. Значения вроде diarized_json игнорируются, диаризация включена по умолчанию.

Ссылка или base64

Передать file можно двумя способами, и выбор влияет на ограничения:

  • base64: файл идёт телом запроса, потолок 50 МБ. Подходит для файлов с диска.
  • прямая ссылка: провайдер скачивает аудио сам, лимит платформы на размер не действует. Подходит для длинных записей. Ссылка должна быть доступна извне без авторизации: приватные адреса и ссылки из внутренней сети провайдер скачать не сможет, и задача завершится ошибкой.

Ответ на создание задачи

{
  "id": "gen_1234567890123456789",
  "object": "transcription",
  "status": "processing",
  "model": "aiesa/transcribe"
}

Сохраните id: это единственный способ забрать результат.

Ответ при опросе статуса

{
  "id": "gen_1234567890123456789",
  "object": "transcription",
  "status": "completed",
  "text": "Добрый день, начнём совещание. Да, все на связи.",
  "duration": 15,
  "segments": [
    {
      "speaker": "SPEAKER_01",
      "text": "Добрый день, начнём совещание.",
      "start": 0,
      "end": 7,
      "startTime": "00:00:00",
      "endTime": "00:00:07"
    },
    {
      "speaker": "SPEAKER_02",
      "text": "Да, все на связи.",
      "start": 7,
      "end": 9,
      "startTime": "00:00:07",
      "endTime": "00:00:09"
    }
  ]
}

Поля ответа

ПолеОписание
statusprocessing - в работе, completed - готово, failed - ошибка
textПолная расшифровка одной строкой
durationДлительность аудио в секундах
segmentsРеплики по спикерам: speaker, text, start/end в секундах, startTime/endTime в формате HH:MM:SS
errorОписание ошибки при status: failed

Метки спикеров (SPEAKER_01, SPEAKER_02) назначаются автоматически и не сопоставляются с именами людей. Сопоставить их с реальными участниками - задача вашего приложения.

LLM-анализ расшифровки

По готовой транскрипции можно сразу получить саммари, список решений или любой другой разбор отдельным запросом, без пересылки текста туда-обратно.

curl -X POST "https://api.usellm.ru/v1/audio/transcriptions/gen_1234567890123456789/analysis" \
  -H "Authorization: Bearer <USELLM_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": ["Сделай краткое саммари встречи и перечисли ключевые решения"],
    "model": "aiesa/aiesa-mini"
  }'

Ответ:

{
  "content": "Ключевые решения: ...",
  "usage": { "prompt_tokens": 1200, "completion_tokens": 180, "cost_rub": 0.21 }
}
ПараметрОбязательныйОписание
messagesДаМассив инструкций для анализа
modelНетМодель анализа, по умолчанию aiesa/aiesa-mini
temperatureНет0–2
max_tokensНетМаксимум токенов в ответе

Советы и лучшие практики