Lazy to Text: голос вместо клавиатуры, без облака
Я много печатаю. Иногда — слишком много. И в какой-то момент поймал себя на том, что проще было бы просто сказать, чем набирать. Особенно когда мысль длинная, а формулировать её в голове уже скучно.
Готовые решения для диктовки на Windows есть. Встроенная в Windows Speech Recognition существует сто лет, но работает заметно хуже, чем хочется. Облачные сервисы работают хорошо, но они — облачные. Всё, что ты диктуешь, уходит куда-то на сервер. Мне это не нравилось.
Whisper от OpenAI — другое дело. Это локальная модель, которая работает на твоей машине, без интернета и без того, чтобы кто-то слышал твои разговоры. Качество хорошее. Но запускать её руками каждый раз — неудобно.
Так появился Lazy to Text.
Схема работы простая. В Docker запущен faster-whisper. Python-приложение висит в трее и слушает горячие клавиши. Нажимаешь Ctrl+F2 — запись началась. Ctrl+F3 — запись остановилась, текст транскрибировался и вставился в то окно, где ты был. Не в буфер обмена — именно вставился, как будто ты его напечатал.
Ctrl+F2 → начать запись
Ctrl+F3 → остановить и вставить текст
Никаких переключений, никакого копирования. Говоришь — текст появляется там, где нужен.
Приложение само управляет Docker-контейнером: запускает при старте, останавливает при закрытии. В трее видно статус. Есть история транскрипций с поиском, если нужно вернуться к тому, что говорил.
Модели можно выбирать — base, small, medium, turbo, large-v3. Base работает быстро, но иногда ошибается. Large-v3 точнее, но медленнее и требует больше памяти. Я пользуюсь turbo — нормальный баланс.
Есть небольшая постобработка: первая буква заглавная, лишние пробелы убраны. Не идеально, но хватает.
Главное, что здесь для меня важно — всё локально. Никаких API-ключей, никаких подписок, никакой телеметрии. Говоришь на свой компьютер, текст появляется на твоём компьютере.
Инструмент нишевый: Windows, Docker, Python. Но если это твой стек — работает.
Ещё один момент, который я обнаружил уже в процессе использования. Когда диктуешь текст, а потом вставляешь его в промт языковой модели — стоит добавить одну строчку в конце:
P.S. Текст надиктован, возможны ошибки распознавания — спроси, если что-то непонятно.
Это меняет поведение модели. Вместо того чтобы пытаться натянуть смысл на явно кривое слово — она спрашивает, что ты имел в виду. Маленькая приписка снимает целый класс проблем, когда Whisper расслышал не то, а модель добросовестно выстроила вокруг этого логику.