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

Аудиоотладчик

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-запросы остаются оплаченными.