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 секунд стоит как минута.
Возможности
Разбивка расшифровки по спикерам с таймкодами
Совещания и интервью целиком, без нарезки на куски
Саммари и выводы по готовой расшифровке одним запросом
Текст доступен по id и через неделю, и через месяц
Как это работает
- Отправка аудио:
POST /v1/audio/transcriptionsвозвращаетidзадачи и статусprocessing - Опрос статуса:
GET /v1/audio/transcriptions/{id}раз в 5–10 секунд, пока статусprocessing - Результат: при статусе
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"
}
]
}
Поля ответа
| Поле | Описание |
|---|---|
status | processing - в работе, 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 | Нет | Максимум токенов в ответе |