Распознавание фрагмента моделью 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.