Перейти к содержанию

Распознавание фрагмента моделью Heavy

POST /api/stt/v1:recognizeFragmentAsync запускает отдельную асинхронную операцию Heavy для русского аудиофрагмента. Исходный транскрипт записи не изменяется. Аутентификация и опрос операции совпадают с обычным STT v1.

Передайте multipart/form-data:

Поле Значение
audio Исходный аудио- или видеофайл до 10 ГиБ. Альтернатива recordingId.
recordingId ID собственной сохранённой записи с доступным аудио. Альтернатива audio.
startMs Целое число миллисекунд от начала исходника, не меньше нуля.
endMs Целое число миллисекунд; больше startMs, интервал не длиннее 120 000 мс.
privacyMode false по умолчанию; при true источник передаётся только через audio.
externalAiConsent false по умолчанию; в приватном режиме для Heavy необходимо true.
transcriptContext Необязательный JSON-объект с соседними фразами: {"before":["Предыдущая фраза"],"after":["Следующая фраза"]}.

Модель SpeechExpert-STT-Heavy, язык ru-RU и mono задаются сервером. Дополнительная диаризация и отдельная LLM-коррекция не включаются. Сервер сначала вырезает выбранный интервал, затем распознаёт его обычным маршрутом Heavy. Оплачивается только подготовленный фрагмент, с минимумом 15 секунд на запрос.

Для transcriptContext допускаются только поля before и after: каждое содержит массив максимум из двух строк до 2000 символов каждая, всего до 8000 символов. Размер JSON с пробелами и экранированием — до 50 000 байт UTF-8. Порядок фраз хронологический; пустые строки игнорируются. Некорректный контекст отклоняется до сохранения аудио и создания операции.

Соседние фразы помогают LLM понять имена и тему, но могут содержать ошибки исходного распознавания. Они не заменяют аудио и не должны попадать в результат: Heavy возвращает только текст выбранного интервала. Контекст не расширяет аудиофрагмент и не меняет оплату по его длительности. Он передаётся LLM вместе с запросом, но не сохраняется в метаданных операции или её ответе. Без контекста поведение остаётся прежним.

Ответ содержит обычную операцию с id и done. Опрашивайте GET /api/operations/{id} до завершения. В успешном response находятся result, audioRecovery и fragment: {startMs, endMs}; границы fragment относятся к исходной записи. Частичный результат (audioRecovery.status=partial) может содержать полезный текст и предупреждения; показывайте их с пометкой о неполной обработке. Ошибка операции не означает успешного завершения Heavy.

Для отмены используйте POST /api/operations/{id}:cancel. Временные файлы удаляются после обработки или отмены. Готовый результат приватной операции обрабатывается по общим правилам приватного STT.