Восстановление текста плохой записи¶
Режим 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:
API не запускает остановленные модели или другие сервисы автоматически.