Как измерить скорость Whisper, качество текста и стоимость
См. также — глоссарий
Измеряйте именно свой процесс. Короткий чистый английский фрагмент не определяет производительность архива русских звонков с тишиной, перебиваниями и тяжёлыми видеофайлами. Публичные таблицы — повод для проверки, а не гарантированная мощность арендованной машины.
Соберите небольшой набор
Выберите несколько записей и подготовьте проверенные эталонные тексты. Не меняйте исходные файлы; отметьте язык, длительность, шум, каналы и необычные термины. Добавьте длинную запись для проверки RAM и тишину для поиска выдуманных фраз.
За раз меняйте одну величину: модель, CPU/GPU, precision, beam или VAD. Для каждой конфигурации используйте отдельный выходной каталог. Сохраняйте версии пакетов и ревизии моделей. Повторите замеры, чтобы увидеть влияние соседней нагрузки и прогретого кеша.
Что именно измерено
processing_seconds охватывает декодирование файла, VAD и получение всех сегментов ASR. model_load_seconds измеряется один раз при инициализации модели в запуске и повторяется в метаданных; не складывайте его по одному разу на каждый файл. Проверка хешей, запись результатов, подготовка окружения, передача файлов и простой в processing-таймер не входят.
python - <<'PYCODE'
import json
from pathlib import Path
for path in sorted(Path('output').glob('*/transcript.json')):
result = json.loads(path.read_text())
print(path.parent.name, result['audio_seconds'], result['processing_seconds'], result['rtf'])
PYCODE
RTF = processing_seconds / audio_seconds. Чем меньше, тем быстрее. RTF 0,25 означает, что измеренный файл длиной 60 минут обработан за 15 минут в этой фазе; это арифметический пример, не результат бенчмарка. RTF пакета — сумма времени обработки, делённая на сумму длительностей аудио, а не простое среднее отношений. Последовательно используйте исходную длительность, а не длительность после VAD.
Вместе со скоростью проверяйте ошибки и память
Проверяйте пропуски, выдуманные слова, имена, числа и таймкоды. Для подходящих языков считайте WER по одинаково нормализованному эталону, а также время ручной правки. Вероятность определения языка не гарантирует точность каждого слова.
Во время длинного фрагмента записывайте пиковую RAM процесса/системы и память GPU. Ошибки нехватки памяти тоже относятся к результатам сравнения. Размер batch, число процессов и beam могут менять баланс скорости и памяти; наш обработчик папки намеренно последовательный.
Стоимость запуска
Для одной машины: стоимость вычислений = почасовая ставка × оплаченные часы. Делите стоимость полной сессии на минуты аудио после учёта подготовки, простоя и отдельно оплачиваемого хранения или трафика. Не делите ещё раз на предполагаемый коэффициент загрузки, если измеренное время уже включает простой.
Используйте текущие цены, калькулятор и методику стоимости сессии. Здесь дана методика измерения, а не бенчмарки провайдеров или фиксированный тариф транскрибации.
Готовы запустить?
Запустить GPU-сервер