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

Восстановление текста плохой записи

Режим audioRecovery=true сравнивает несколько вариантов распознавания одной записи и объединяет их с помощью LLM через VseGPT. Он предназначен для записей с шумом, искажениями и неясной речью. Исходный аудиофайл не изменяется; результат режима — восстановленный транскрипт.

Сейчас доступны русский и узбекский языки:

Язык Распознаватели
ru-RU Whisper Large v3 Turbo, FastConformer RU, ElevenLabs Scribe v2
uz-UZ ElevenLabs Scribe v2, FastConformer UZ, GigaAM UZ 0.6B

Режим использует этот фиксированный набор независимо от обычного поля model. Все распознаватели получают одинаковые фрагменты длительностью не более 24 секунд. Их варианты передаются LLM как свидетельства: задача модели — сохранить речь, а не дописать неизвестные факты или пересказать запись.

Использование

В Playground выберите файл и русский или узбекский язык, затем включите восстановление плохой записи. Для API передайте audioRecovery=true в query или multipart-форме STT v1; значение формы имеет приоритет. Параметр также поддерживает асинхронный вариант STT v1.

curl -X POST "$BASE_URL/api/stt/v1" \
  -H "Authorization: Api-Key $API_KEY" \
  -F "audio=@recording.wav" \
  -F "lang=ru-RU" \
  -F "channelMode=mono" \
  -F "audioRecovery=true"

Используйте channelMode=mono и diarization=false. Режим пока не поддерживает поканальное распознавание, разделение говорящих, живой микрофон и потоковую загрузку файла. Неподдерживаемый язык, stereo или диаризация возвращают 400. Многоканальную запись можно передать как mono: сервер сведёт её в одну дорожку. Пословные таймкоды для восстановленного текста не возвращаются, поскольку LLM может изменить последовательность слов. Обычная llmCorrection этому режиму не нужна: согласование вариантов уже выполняется внутри восстановления.

Аудио передаётся ElevenLabs, а варианты распознавания — VseGPT. В приватном режиме (privacyMode=true) требуется externalAiConsent=true; без него запрос отклоняется до отправки данных провайдерам. Приватный результат не сохраняется в архив записей.

Результат и частичная доступность

Поле result содержит окончательный текст. Дополнительное поле audioRecovery сохраняет варианты распознавания и состояние восстановления:

Поле Значение
status ready — обработка завершена; partial — часть распознаваний недоступна или для фрагмента остался только один вариант
language ru или uz
sources Варианты ASR с полями model, status, text и, при ошибке, error
sources[].status ready, partial, empty или error
warnings Предупреждения о неполных результатах
llmModel Модель VseGPT, выбранная на сервере
chunkCount Число обработанных фрагментов

Для каждого фрагмента два или три непустых варианта сопоставляются через VseGPT. Если текст вернул только один распознаватель, его вариант сохраняется без дописывания, а результат помечается partial. Если все три успешно вернули пустой текст, фрагмент считается тишиной. Если текста нет и хотя бы один ASR завершился ошибкой, запрос завершается ошибкой 502.

Ошибка, тайм-аут, некорректный или обрезанный ответ LLM завершают запрос ошибкой 502/504. Такой запрос не выдаётся за успешно восстановленный. Отсутствующий или отклонённый ключ VseGPT возвращает 503 с сообщением о настройке доступа; наличие ключа в окружении ещё не подтверждает его действие. При проверке результата учитывайте warnings и варианты sources: согласие распознавателей само по себе не гарантирует точность неразборчивой речи.

Стоимость

Тариф равен сумме трёх ASR выбранного языка. Он применяется к длительности исходной записи с округлением вверх до целой секунды один раз на запись. Согласование LLM включено в этот тариф. При частичной доступности ASR действует тот же тариф режима.

Язык Идентификатор тарифа Кредитов за минуту Кредитов за час
Русский Audio-Recovery-RU 54,3667 3262
Узбекский Audio-Recovery-UZ 46,6667 2800

Актуальные ставки доступны вместе с остальными тарифами API. Обычная выбранная модель не заменяет тариф восстановления.

Настройка сервера

VseGPT имеет отдельные настройки AUDIO_RECOVERY_LLM_*:

Переменная По умолчанию
AUDIO_RECOVERY_LLM_API_KEY VSEGPT_API_KEY, затем LLM_CORRECTION_API_KEY, если коррекция настроена на VseGPT
AUDIO_RECOVERY_LLM_BASE_URL Адрес существующей коррекции при использовании её ключа; иначе https://api.vsegpt.ru/v1
AUDIO_RECOVERY_LLM_MODEL LLM_CORRECTION_MODEL
AUDIO_RECOVERY_LLM_TIMEOUT 240 секунд на запрос LLM
AUDIO_RECOVERY_LLM_MAX_TOKENS 8192
AUDIO_RECOVERY_ASR_TIMEOUT 240 секунд на ASR-фрагмент
STT_AUDIO_RECOVERY_MAX_CONCURRENCY 1 задача на процесс API

При использовании LLM_CORRECTION_API_KEY наследуется и её адрес VseGPT, включая порт 6070, если он настроен. Явное значение AUDIO_RECOVERY_LLM_BASE_URL переопределяет этот выбор.

Для ElevenLabs требуются обычные настроенные ключи Scribe. Узбекский GigaAM использует VOICE_DEMO_GIGAAM_UZ_URL и VOICE_DEMO_GIGAAM_UZ_TIMEOUT и проверяет полную исходную модель 600M в CUDA/FP32. Это отдельный локальный worker, который нужно запустить вручную из обычного терминала Windows в E:\five-api:

powershell -File .\run_gigaam_uz.ps1

API не запускает остановленные модели или другие сервисы автоматически.