﻿# Длинное аудио в Whisper: сегменты, очередь и хранение результата

Как организовать обработку длинного аудио Whisper на GPU: сегменты, временные метки, очередь, повтор после ошибки и проверка границ результата.

Автор: Команда Retrivium
Обновлено: 2026-11-01
Канонический URL: https://retrivium.ai/ru/journal/whisper-long-audio/
Language: ru

Длинное аудио в Whisper обрабатывают с учётом всей записи: чтения файла, внутренних окон модели, очереди, временных меток и сохранения результата. Нарезка на произвольные куски сама по себе не гарантирует правильную склейку текста или возможность продолжить после ошибки.

Для сервера с ограниченным окном доступности особенно важно заранее понять, успеет ли очередь завершиться и что останется сохранено при штатной остановке. Это организационная часть нагрузки наряду с вместимостью GPU.

## Различайте внутреннее окно и внешнюю задачу

В [официальном описании Whisper](https://github.com/openai/whisper) метод transcribe читает файл целиком и использует скользящее тридцатисекундное окно. Из этого не следует, что для длинной записи исчезают требования к RAM, диску и длительности задания.

Внешнее разбиение — отдельное решение приложения. Оно меняет границы контекста и систему временных меток. Сначала проверьте стандартную обработку целого файла, затем сравните её с выбранной схемой сегментов на одинаковой записи.

## Введите устойчивые идентификаторы

Задание должно иметь идентификатор исходной записи, параметры модели и версию процедуры. Если есть сегменты, для каждого сохраняют начало и конец относительно оригинала. Повторный запуск не должен незаметно создавать второй окончательный текст под тем же именем.

| Объект | Что хранить | Для чего |
| --- | --- | --- |
| Исходная запись | Идентификатор и длительность | Проверка полноты |
| Сегмент | Смещение и границы | Возврат к оригиналу |
| Попытка | Модель и настройки | Объяснение различий |
| Результат | Текст и временные метки | Проверка объединения |
| Состояние | Ожидает, выполняется, завершено, ошибка | Управление очередью |

Такая структура не требует специальной коммерческой платформы. Она нужна, чтобы результат можно было проверить независимо от процесса, который его создал.

## Проверьте границы сегментов

Возьмите фрагмент, где слово или фраза попадает на границу. Проверьте пропуски, дублирование и перевод локального времени сегмента в время исходного файла. Если используются перекрывающиеся участки, заранее определите правило удаления повторов.

[Исходный код обработки Whisper](https://github.com/openai/whisper/blob/main/whisper/transcribe.py) позволяет уточнить поведение выбранной версии, включая настройки сегментов и декодирования. Не переносите параметры из другой библиотеки только из-за одинакового имени модели.

## Спланируйте остановку и повтор

Сохранение очереди и возобновление работы должны быть частью приложения, а не предположением о возможностях модели. Проверьте штатную остановку между заданиями и повтор одного неуспешного элемента. Отдельно укажите, какие промежуточные результаты считаются окончательными.

Условный план: перед окончанием исследовательского окна перестать принимать новые длинные записи, завершить текущую по согласованному правилу и сохранить остаток очереди. Конкретный запас времени определяют измерениями, без универсального обещания обработки любой длительности.

Для каждой неуспешной записи сохраните причину повтора и номер попытки. Это поможет отличить технический сбой от повторяющейся проблемы конкретного аудиофайла.

## Оформите результат пилота

В отчёт включите полную длительность, число обработанных фрагментов, ошибки объединения и время готовности итогового текста. Показатели отдельных окон без проверки всего файла могут скрыть незавершённую работу.

Используйте [чеклист пилота](/ru/journal/pilot-checklist/) и [планирование мощности инференса](/ru/journal/inference-capacity-planning/) для ограничения эксперимента.
