Аудиоотладчик¶
POST /api/stt/v1:debugAudioAsync проверяет всю запись тремя независимыми
ASR: Yandex-SpeechKit, ElevenLabs-Scribe-v2, GigaAM-v3-RNNT.
Операция предлагает места для прослушивания, сохраняя исходный транскрипт.
LLM, Heavy, исправление текста, извлечение сущностей и генерация резюме
в этой операции не вызываются.
Передайте multipart/form-data:
| Поле | Значение |
|---|---|
audio |
Исходный аудио- или видеофайл до 10 ГиБ. Альтернатива recordingId. |
recordingId |
ID собственной сохранённой записи с доступным аудио. Альтернатива audio. |
lang |
ru-RU по умолчанию. Поддерживается русский язык. |
privacyMode |
false по умолчанию; при true допускается только загрузка audio. |
externalAiConsent |
В приватном режиме необходимо true: аудио передаётся внешним ASR Yandex и ElevenLabs. |
Максимальная длительность записи — 24 часа. Сервер читает исходник с диска и последовательно вырезает окна до 120 секунд, перекрывая соседние окна на одну секунду. Все три ASR получают одинаковый звук. Перекрытие помогает обнаруживать спорные слова на границе окна; повторяющиеся находки удаляются.
Аутентификация, GET /api/operations/{id} и отмена
POST /api/operations/{id}:cancel совпадают с обычным STT v1.
Метаданные операции содержат kind=stt_v1_async и audio_debugger=true.
Флаг fragment=true относится к очистке временных файлов; проверяется вся запись.
Временные файлы удаляются при завершении, ошибке и отмене, включая отмену
в очереди. Приватный результат действует в пределах обычного TTL приватных STT-операций.
Готовый response содержит:
{
"audioDebugger": {
"status": "complete",
"language": "ru",
"llmUsed": false,
"durationMs": 25000,
"windowCount": 1,
"comparedWindows": 1,
"windowOverlapMs": 1000,
"models": [
{"model": "Yandex-SpeechKit", "status": "ready", "completedWindows": 1, "failedWindows": 0},
{"model": "ElevenLabs-Scribe-v2", "status": "ready", "completedWindows": 1, "failedWindows": 0},
{"model": "GigaAM-v3-RNNT", "status": "ready", "completedWindows": 1, "failedWindows": 0}
],
"findings": [{
"id": "window-1-dispute-1",
"start_ms": 1600,
"end_ms": 3400,
"kind": "number",
"message": "Найдено спорное число. Рекомендуется уточнение по аудио.",
"reference_text": "пятнадцать тысяч",
"variants": [
{"model": "Yandex-SpeechKit", "text": "пятнадцать тысяч"},
{"model": "ElevenLabs-Scribe-v2", "text": "пятьдесят тысяч"},
{"model": "GigaAM-v3-RNNT", "text": "пятнадцать тысяч"}
]
}],
"warnings": []
}
}
start_ms и end_ms — абсолютные миллисекунды исходной записи, полученные
из временных меток ASR. Их дублируют startMs/endMs и start/end.
Поле timing_estimated=true обозначает приблизительные границы: например,
если одна из моделей вернула только текст или доступны лишь границы фразы.
В интерфейсе такие интервалы отмечены знаком ≈.
kind принимает number, name или phrase. Числа сравниваются с учётом
словесной записи; регистр и пунктуация сами по себе не создают расхождение.
Метка name означает возможное имя или название по локальным правилам,
без полноценного семантического распознавания сущностей. Совпадение моделей
не доказывает правильность текста; найденное расхождение также не выбирает
победившую расшифровку.
complete означает, что все окна сравнили без ошибок провайдеров; partial —
часть ASR или интервалов недоступна, либо достигнут предел 2000 находок.
insufficient означает, что сравнить запись не удалось: нужны минимум два
успешных ответа и временные метки хотя бы одной непустой расшифровки.
Пустой успешный ответ учитывается как возможный пропуск речи при сравнении
с непустым. Три успешных пустых ответа считаются согласованным пустым окном.
findings=[] при partial или insufficient нельзя трактовать как отсутствие ошибок.
Статусы моделей: ready, empty, partial, error. Читайте также warnings.
Проверка оплачивается отдельно по обычным тарифам каждой ASR за каждое окно,
включая перекрытие и округление Yandex до начатых 15 секунд. Перед первым
вызовом проверяется суммарная стоимость, затем успешные запросы учитываются
обычным биллингом STT. Дополнительный запрос к LLM не оплачивается, поскольку
его нет. Если баланс изменился во время проверки и запрос вернул 402,
операция прерывается; уже выполненные ASR-запросы остаются оплаченными.