BorisovAI
Все публикации
Новая функцияspeech-to-textClaude Code

Whisper медленнее речи: как мы выиграли 200 миллисекунд

Whisper медленнее речи: как мы выиграли 200 миллисекунд

Ловушка Whisper: как мы разогнали транскрипцию до 0,8 секунды

Проект speech-to-text нашёл себе больное место: даже на самых “быстрых” моделях Whisper первая фраза обрабатывалась дольше, чем её произносили. Целевой показатель стоял железобетонный — менее одной секунды на стандартном CPU. К началу оптимизации мы знали, что проблема не в коде, а в том, как мы неправильно используем сам Whisper.

Первым делом выяснилось нечто контринтуитивное: Whisper всегда кодирует ровно 30 секунд аудио, даже если вы скормили ему полтора. Это архитектурная особенность энкодера, которая в streaming-режиме оборачивается катастрофой. Мы записывали аудио на лету и попытались сделать per-chunk транскрипцию — буквально каждые 1,5 секунды гоняли Whisper через полный проход. Математика ужасна: четыре полных прохода энкодера вместо одного.

Решение оказалось хирургическим: перешли в режим record-only, где во время записи ничего не обрабатывается. Только когда пользователь наконец закрыл микрофон — бах! — один единственный вызов Whisper на полную акустическую ленту. Это потребовало переписать логику в streaming_pipeline.py и финализатор в main.py, но скорость выросла разительно.

Дальше начались микрооптимизации. beam search с beam=2 — классический параметр для качества — оказался избыточным на CPU. Бенчмарк показал: beam=1 финишировал в 1,004 секунды, beam=2 влачился в 1,071. Разница в качестве была незаметна человеческому уху, зато T5 TextCorrector в постобработке компенсировал любые огрехи.

Параллельно зафиксировали, что 32 потока CPU создают контенцию вместо ускорения — откатились на 16. Отключили expensive re-decoding для low-confidence сегментов. Добавили model warm-up при старте приложения: сразу после загрузки Whisper и T5 прогреваем фиктивным проходом, чтобы CPU-кэши прогрелись. Первая реальная транскрипция ускоряется на 30% благодаря горячему старту.

И вот вишня на торт: добавили поддержку модели “base”. Почему раньше никто не пробовал? Наверное, потому что в 2020-е годы принято считать, что нужна максимальная точность. Но бенчмарк открыл истину: base + T5 = 0,845 секунды. Это ниже целевого порога! tiny + T5 едва за ним — 0,969. Даже small без постобработки не дотягивал до целевой отметки.

В результате история Whisper стала историей о том, как понимание архитектуры важнее перебора параметров. Мы не добавляли сложность — мы убирали неправильную сложность, которая была встроена в неправильное понимание того, как вообще работает эта модель.

И помните: если ваша микросервисная архитектура в каждом запросе пересчитывает кэши — это не масштабирование, это программирование 😄

Метаданные

Session ID:
grouped_speech-to-text_20260211_1424
Branch:
master
Wiki Fact
This article presents a detailed timeline of events in the history of computing from 2020 to the present. For narratives explaining the overall developments, see the history of computing. Significant events in computing include events relating directly or indirectly to software, hardware and wetware. Excluded (except in instances of significant functional overlap) are: events in general robotics events about uses of computational tools in biotechnology and similar fields (except for improvements to the underlying computational tools) as well as events in media-psychology except when those are directly linked to computational tools Currently excluded are: events in computer insecurity/hacking incidents/breaches/Internet conflicts/malware if they are not also about milestones towards computer security events about quantum computing and communication economic events and events of new technology policy beyond standardization.
Dev Joke
Что сказал TypeScript при деплое? «Не трогайте меня, я нестабилен»

Оцените материал

0/1000