klava-nevinovata: бесплатный голосовой ввод на компьютере с нормальной пунктуацией

Мой форк Handy для локальной диктовки: модель крутится на вашей видеокарте, голос никуда не отправляется, а настройки распознавания вытюнены на бенчмарке в сто тысяч прогонов. Ставится за десять минут, стоит ноль рублей.

18.08.2026·Егор Соколов·14 мин чтения

Оттиск · к разборув две краски

Я диктую больше часа в день. Промпты в Claude Code, сообщения, заметки, наброски статей — почти всё, что я пишу, я сначала проговариваю. Голос никуда не улетает: модель распознавания крутится на моей видеокарте, интернет для неё не нужен вообще. Плачу за это ноль рублей в месяц.

Инструмент, которым я это делаю, называется klava-nevinovata. Это мой форк Handy — бесплатного опенсорсного приложения для диктовки. Windows, Mac, Linux, лицензия MIT, инсталлеры лежат в релизах.

Если коротко. Главное отличие от оригинала — качество распознавания: вместо заводских дефолтов здесь стоят настройки, подобранные под русскую речь с английскими терминами на бенчмарке в сто тысяч прогонов. Тем же самым бесплатным моделям они добавляют 6–7 пунктов качества — это лучшая локальная диктовка на русском, которую я смог собрать.

Дальше — что он умеет, чем отличается от оригинала и как за десять минут довести его до состояния, в котором он расставляет запятые, не съедает английские термины и не выдумывает «Продолжение следует…» на паузах. Разница между «ну, сойдёт» и «можно отправлять как есть» оказалась вообще не в модели. Пять суток инференса ушло на то, чтобы понять, в чём именно.

Почему бесплатный голосовой ввод на компьютере обычно не работает

Начнём с того, что уже стоит на вашей машине.

Win+H в Windows. Формально русский поддерживается в Windows 11. На практике — уровень «для коротких фраз сойдёт»: неудобный интерфейс, спотыкающееся распознавание, а мой любимый прикол в том, что при английской раскладке система упрямо пытается распознавать английскую речь, отказываясь понимать русскую. Офлайн-распознавание русского в Windows не поддерживается вообще — то есть без интернета встроенная диктовка на русском просто не работает. Если вы гуглили «не работает голосовой ввод» и попали сюда — скорее всего, вы наткнулись ровно на это.

Голосовой ввод в ChatGPT. Работает хорошо, на всех платформах, с русским справляется. Одна проблема: он работает внутри ChatGPT. А я общаюсь с Claude, пишу в Telegram, диктую в терминал и в редактор — мне нужен ввод, который работает во всех этих окнах сразу.

Платные облачные приложения. WisprFlow — $15 в месяц, или 750 ₽ через российский App Store. SpeakFlow — 690 ₽. Оба нормальные, я пользовался и тем, и другим и подробно описывал этот путь в статье про голосовой ввод. Не буду повторяться, скажу только про два момента, из-за которых я в итоге ушёл. Первый — деньги: около 9 тысяч рублей в год за функцию, которую можно получить бесплатно. Второй важнее: всё, что вы наговариваете, уезжает на чужой сервер. А в LLM мы сегодня диктуем всякое — рабочие детали, личные вещи, иногда довольно сокровенное. Чем меньше посредников в этой цепочке, тем спокойнее.

Хочется, чтобы всё оставалось на моей машине. И бесплатно.

Что такое klava-nevinovata

Handy — бесплатное приложение для диктовки, которое работает полностью локально. Нажали хоткей, наговорили, текст вставился в активное окно. Модели скачиваются внутрь приложения, дальше интернет не нужен вообще. Лицензия MIT. Почти 30 тысяч звёзд на GitHub, Windows, Mac и Linux, автор — cjpais, релизы выходят регулярно.

klava-nevinovata — мой форк этого приложения. Тот же Handy со всеми обновлениями автора плюс четыре вещи, нужные для диктовки на русском с английскими терминами.

Работает это так. Вы держите хоткей (или нажимаете один раз, если удобнее переключателем), говорите, отпускаете — через секунду текст оказывается там, где стоял курсор. В Telegram, в терминале, в редакторе кода, в поле поиска — приложению всё равно, оно вставляет текст в активное окно. Никакого отдельного окна, куда надо диктовать, а потом копировать руками, — этим грешат некоторые мобильные решения, и это ужасно неудобно.

Текущий релиз — v0.9.5-6 от 18 августа 2026, собирал его поверх апстрима 0.9.5. Лицензия осталась MIT: код Handy — авторства cjpais и контрибьюторов, мои изменения — мои.

Ну и дизайн. Пурпур с глубоким фиолетовым, светлая тема под крафтовую бумагу и тёмная под типографскую краску, лента записи выглядит как печатный лист — тот же фирменный стиль, в котором живёт «Нейросеть не виновата». Работать быстрее приложение от этого не стало. Зато такого больше нет ни у кого 🌝

Экран выбора моделей в klava-nevinovata: активна Whisper Large v3 Turbo, ниже Parakeet TDT 0.6B v3

Три ручки, до которых обычно не дотянуться

Модели у всех одинаковые. Whisper, Breeze, Parakeet лежат в открытом доступе, и качает их и Handy, и SuperWhisper, и любое другое приложение. А разница между «ну, сойдёт» и «можно отправлять как есть» живёт в трёх ручках: лимит контекста декодера, порог детектора петель и текст-затравка перед распознаванием.

Возьмём первую. У Whisper есть параметр n_max_text_ctx — сколько предыдущего текста модель подаёт себе на вход, когда расшифровывает следующий кусок. По умолчанию лимит фактически отключён: 16384 токена, больше, чем декодер вообще способен взять. Тёмная сторона у этого механизма такая. Модель один раз запнулась, начала повторять фразу по кругу — петля попадает в контекст, воспроизводит сама себя и едет дальше по всей записи. Знаменитое «Продолжение следует…» и «[музыка]» на паузах растут отсюда же.

Я режу лимит до 128 и заодно делаю строже встроенный детектор вырожденного текста: entropy_thold с 2.4 до 2.8. Первый флаг не даёт петле расползаться между сегментами, второй ловит её внутри сегмента.

Что это даёт: у моделей, склонных к срывам, — Whisper Large v3 и русских файн-тюнов на её основе — два этих флага по моим замерам вытягивают 6–7 пунктов качества почти в одиночку. Large v3 поднимается с 81.1 до 88.1 балла, и бо́льшая часть прироста — они.

Балл здесь не мой личный вкус: это композитная метрика из бенчмарка, шкала 0–100, в которой сложены точность распознавания слов, сохранение английских терминов латиницей и пунктуация. Семь пунктов на ней — это разница между «правлю каждое третье сообщение» и «правлю раз в день».

Ручка третья — текст-затравка. Поле для неё встречается: оно есть, например, в маковском MacWhisper. Но в бесплатных кроссплатформенных приложениях я его не видел, а готовых пресетов под русскую речь с английскими терминами не видел вообще нигде. Что делает эта затравка — в следующей секции.

Ни одну из трёх ручек нельзя было покрутить в Handy. А чтобы понять, куда их ставить, ушло сто тысяч прогонов, пять суток инференса на одной видеокарте и 60 с лишним конфигураций. Результат этой работы теперь стоит в форке по умолчанию.

Что делает каждая из четырёх доработок

У моделей-чемпионов есть болячки. Конкретные, воспроизводимые, у каждой своя. Каждая доработка лечит одну.

Пунктуационный промпт с пресетами. Whisper умеет принимать на вход короткий текст-затравку. Работает она как разогрев: модель видит образец того, каким должен быть результат, и подстраивается. Есть в затравке запятые, тире, кавычки и вопросительные знаки — она начинает их ставить.

Звучит как мелочь — подумаешь, запятые. Но если вы диктуете в нейросеть, запятые внезапно оказываются вещью функциональной: исследование на ICLR 2024 показало, что от одного только форматирования промпта точность ответа модели гуляет на десятки процентных пунктов, а отдельная работа LLM-Microscope на NAACL 2025 обнаружила, что знаки препинания внутри трансформера работают как опорные точки внимания. Проще говоря, текст без запятых нейросеть понимает хуже. Подробнее я разбирал это в первой статье.

Для Whisper Turbo это разница между «работает» и «выбросьте». Turbo без промпта почти не расставляет знаки препинания: 83.5 балла. С промптом — 89.6. Шесть пунктов. Это уже не про «чуть аккуратнее»: с одной стороны текст, который надо править, с другой — который можно отправлять как есть.

В ванильном Handy поля для такой затравки нет. Я его добавил, положил четыре готовых пресета (обычный русский, русский с английскими вставками и две инструкционные версии) и оставил возможность править текст руками. Хардкодить один вариант для всех — неправильный ответ: кому-то не нужны кавычки-ёлочки, кто-то диктует только по-русски.

Настройки klava-nevinovata: пресет пунктуационного промпта V2 — Ru-En (code-switch) и словарь Custom Words

Анти-галлюцинационные настройки. Те самые два флага декодера плюс постобработка: схлопывание одинаковых предложений подряд и вычистка известных фраз-паразитов, которые Whisper выдаёт на тишине. В ранних версиях форка это был тумблер в разделе Advanced, с линии 0.9.5 отдельной ручки больше нет — защита включается сама для всех Whisper-моделей.

Кому это критично: Whisper Large v3 и русские файн-тюны на её основе. Пунктуация у них и без тюнинга на месте, а вот петли — регулярная история.

capglue для Breeze. Breeze-ASR — файн-тюн Whisper Large v2, которому ставили навык переключения между языками на паре «мандарин + английский». Навык перенёсся на пару, которой в обучении не было: в моём бенчмарке эта модель оказалась лучшей на русско-английской речи. С одним побочным эффектом: в китайском письме пробелов между словами нет, и часть этой привычки переехала в модель. На стыке предложений она то забывает пробел после точки, то саму точку — и конец одного предложения врезается в начало следующего.

Выглядит это так: кулинариейПочему. На длинной диктовке — регулярно.

capglue — маленький regex-постпроцесс, который наводит порядок на стыках: возвращает потерянную точку с пробелом, восстанавливает заглавную в начале предложения. Никаких прогонов модели, чистая обработка готового текста. Я сравнил 59 конфигураций с ним и без: в 49 из 59 версия с capglue оказалась лучше. Прирост — доли пункта, зато стоит он ноль и включается сам, если выбрали Breeze.

Сохранение контекста на длинной диктовке. whisper.cpp режет аудио на окна по 30 секунд. Если между окнами не передавать контекст, на длинной записи начинает разъезжаться пунктуация: каждое окно решает заново, что оно вообще расшифровывает. Флаг condition_on_prev_tokens это лечит: окна снова видят друг друга. Звучит как противоречие с предыдущим пунктом — там я контекст режу, здесь включаю, — но противоречия нет. Хвост в 128 токенов даёт связность и при этом слишком короткий, чтобы петля успела в нём накопиться. Отдельно в бенчмарк эту ручку я не выносил, сужу по ежедневной диктовке.

Что даёт стек из трёх замеренных доработок — затравка, анти-галлюцинационные флаги и capglue:

МодельКак естьС настройками форкаРазница
Whisper Turbo83.589.6+6.2
Whisper Large v3 (Q5_0)81.188.1+7.0
Breeze-ASR88.790.7+2.1

Дельты посчитаны по неокруглённым значениям, поэтому местами расходятся с разностью округлённых колонок на 0.1.

Сколько даёт тюнинг

Балл Q модели в голом виде (vanilla) и в лучшем конфиге (с промптом / настройками). Δ — прирост. Шкала начинается с 64, а не 0 — честный зум на зону различий.

Δ = весь tuning-стек (промпт + анти-галлюцинации + capglue) поверх сырой модели; считается по неокруглённым значениям и может отличаться от разности подписей на 0.1. Шкала начинается с 64 для читаемости — не с нуля.

Это выжимка из бенчмарка 23 ASR-моделей — там 60+ конфигураций, больше 100 тысяч прогонов и полная таблица со всеми моделями. Здесь важно одно: настройка даёт той же модели прирост, сопоставимый с переходом на модель классом выше. Turbo с затравкой обгоняет ванильную Large v3 — при том что Large втрое тяжелее и заметно медленнее.

Так сильные модели превращаются в монстров локальной диктовки. Три флага и regex — вот только чтобы узнать, какие именно, ушло пять суток инференса.

Ставим и настраиваем за десять минут

Пять суток инференса — мои. Вам остаётся десять минут и одна команда в терминале, да и та только на Mac.

Шаг 1. Скачайте сборку из релизов. Это нужно один раз: дальше приложение проверяет обновления само и предлагает поставить новую версию в один клик.

Для Windows — файл .exe (обычный установщик) или .msi. При первом запуске Windows покажет синее окно SmartScreen: «Windows защитила ваш компьютер». Это не вирус: приложение не подписано сертификатом, который стоит денег и требует юрлица. Нажмите «Подробнее» → «Выполнить в любом случае». Не хотите верить на слово — ниже есть секция про сборку из исходников, она закрывает вопрос радикально.

Для Mac — два файла. aarch64.dmg для Apple Silicon (M1 и новее, то есть всё, что вышло с конца 2020 года) и x64.dmg для старых Intel-маков. Перетащите приложение в «Программы», а потом выполните в терминале одну команду:

xattr -d com.apple.quarantine /Applications/klava-nevinovata.app

Она снимает карантинный флаг, который macOS вешает на всё скачанное из интернета от неподписанных разработчиков. Без неё приложение просто не запустится — система скажет, что файл повреждён (он не повреждён).

Для Linux есть .deb, .AppImage и .rpm.

Шаг 2. Выдайте разрешения. Микрофон — очевидно. На Mac дополнительно нужен доступ в разделе «Универсальный доступ» (Accessibility): без него приложение сможет распознать речь, но не сможет вставить текст в чужое окно. Это самая частая причина «всё работает, но текст никуда не вставляется».

Шаг 3. Скачайте модель. Вкладка Models, кнопка загрузки рядом с нужной. Их там больше десятка, но реально выбирать стоит из двух: Breeze-ASR-25 (1.1 ГБ) или Whisper Large v3 Turbo (845 МБ). Breeze точнее, Turbo быстрее — развилка ниже.

Шаг 4. Выберите пресет промпта. Settings → Advanced, блок Transcription Prompt: выберите пресет пунктуационного промпта в выпадающем списке. Это единственное, что нужно сделать руками: анти-галлюцинационные настройки и capglue для Breeze включаются сами.

Всё. Дальше нажимаете хоткей и говорите.

Если что-то пошло не так. Три ситуации, в которые упираются чаще всего.

Текст появляется с задержкой в несколько секунд — модель считается на процессоре: видеокарту приложение не задействовало. Проверьте, что в настройках стоит GPU-ускорение и что оно скачалось. На Windows для NVIDIA и AMD это Vulkan, на Mac — Metal; драйверов ставить не надо. Кстати, про Vulkan: на моей RTX 5070 Ti он оказался примерно на 50% быстрее CUDA — так что не пугайтесь, что «фирменного» ускорения NVIDIA в списке нет.

Речь распознаётся, но текст никуда не вставляется — это разрешения. На Mac проверьте «Универсальный доступ», на Windows попробуйте запустить приложение от администратора, если диктуете в программу, запущенную с повышенными правами.

Хоткей не срабатывает — скорее всего, комбинацию перехватывает другое приложение. Поменяйте её в General на что-нибудь экзотическое — чем реже комбинация встречается в других программах, тем спокойнее.

Какую модель выбрать под ваше железо

Развилка простая.

Есть видеокарта с 6+ ГБ видеопамяти или Mac на Apple Silicon — берите Breeze-ASR-25. Это лучший результат на русской речи с английскими терминами из всех, что я мерил, и capglue к ней уже прикручен.

Железо слабее или хочется, чтобы текст появлялся мгновенно, — берите Whisper Large v3 Turbo. Она примерно вдвое с половиной быстрее Breeze, легче — 845 МБ против 1.1 ГБ — и с пунктуационным промптом отстаёт от неё всего на балл. Промпт для неё обязателен: без него она почти не ставит знаки препинания.

Диктуете на чистом русском без единого английского слова — попробуйте GigaAM v3 от Сбера: 151 МБ, летает даже на процессоре. Но английские слова она ломает стабильно, так что для айтишной речи не годится.

Список моделей для скачивания в klava-nevinovata: Breeze-ASR-25 (1.1 ГБ) и GigaAM v3 (151 МБ)

Совсем без видеокарты локальная диктовка тяжёлая: на моём i5-13600K Whisper Large обрабатывал 69 секунд аудио почти две минуты. Модели полегче на процессоре живут нормально, но качество другое.

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

Как проверить, что я не подсунул вам закладку

Не верьте мне на слово — проверьте.

Самый надёжный способ: собрать приложение самому. Исходники на GitHub, порядок и зависимости — в BUILD.md; на выходе bun install && bun run tauri build. Тогда вы не запускаете чужой бинарник — вы запускаете код, который прочитали.

Если это перебор, есть способ дешевле. Лицензия MIT, репозиторий открыт, мои изменения относительно апстрима видны диффом — он небольшой и читается за один заход. Попросите Claude Code или Codex склонировать репозиторий, сравнить с оригинальным Handy и рассказать, что там происходит: есть ли сетевые вызовы, куда что пишется. Это не аудит безопасности, но за пять минут вы увидите, ходит ли приложение в интернет — а оно не ходит.

Чего этот способ не закрывает, скажу прямо: сборки в релизах не воспроизводимые. Математически доказать, что скачанный exe вырос ровно из этих исходников, не выйдет. Нужна такая гарантия — собирайте сами, первый вариант ровно про это.

Что приложение не делает

Чтобы вы знали это до установки, а не после.

Нет мобильных версий. Ни iPhone, ни Android — это десктопное приложение. На телефоне у меня до сих пор Wispr Flow на бесплатном плане.

Постобработка нейросетью выключена по умолчанию. В разделе Advanced есть экспериментальный блок Post Processing, доставшийся от апстрима: он умеет прогонять готовую расшифровку через LLM, в том числе облачную. Я им не пользуюсь — затравка решает ту же задачу бесплатно, а вторая модель ест видеопамять и добавляет задержку. Пока вы его не включили, ничего никуда не уходит.

Нет диаризации и таймстемпов. Приложение для диктовки, не для расшифровки интервью. Если нужно разобрать запись созвона по спикерам — это WhisperX или Vibe, про них я писал в первой статье.

Breeze остаётся Breeze. Две её болячки живут внутри модели, и постобработкой их не вылечить. Первая: слова, давно живущие в русском как заимствования, она тянет обратно в латиницу — говоришь «текст», получаешь text. Вторая: она скупа на вопросительные знаки, а «ты идёшь» и «ты идёшь?» — это, вообще-то, разные сообщения. Оба случая правятся руками за секунду, но знать о них стоит.

Кое в чём платные облачные всё ещё удобнее. Wispr Flow умеет подстраивать форматирование под приложение, в которое вы диктуете, и живёт на телефоне той же подпиской. Если вам нужен один инструмент на всех устройствах и вы готовы платить за это 9 тысяч в год — это честный размен, я довольно долго так и жил. Здесь размен другой: ноль рублей, ноль отправленных наружу записей и полный контроль над настройками — в обмен на непокрытый телефон и форматирование, которое иногда придётся править самому. Словарь для имён и терминов, кстати, есть и тут — Custom Words в тех же настройках, туда стоит закинуть фамилии коллег и названия ваших проектов.

Баги апстрима живут своей жизнью. Свои я чиню быстро — это мой ежедневный инструмент, мне с ними жить. С багами оригинального Handy как повезёт: что-то починит автор, что-то залатаю сам, что-то придётся подождать. Форк я поддерживаю и обновляю, но саппорта с SLA за ним не стоит. И на всякий случай про худший сценарий: если я однажды перестану им заниматься, вы не останетесь без инструмента — лицензия MIT, апстрим живой, откатиться на ванильный Handy можно в любой момент. Потеряете настройки, не приложение.

Откуда это взялось

Ещё зимой я не собирался ничего форкать. Я просто хотел диктовать.

Сначала были чужие приложения, потом Handy, потом попытки объяснить Handy, что мне нужен кастомный промпт. Отправил pull request. Потом ещё несколько — и вот тут началось интересное: часть моих правок в апстрим взяли. В Handy вмержен PR #1231 — теперь при вставке текста приложение не затирает картинку, скопированную в буфер (в апстрим взяли минимальный вариант, только изображения; полную поддержку файлов и HTML я держу у себя). В OpenWhispr — #379 (на Windows не скачивались бинарники GPU-ускорения) и #381 (та же история с буфером обмена).

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

Так и получился форк: то, что не берут в апстрим, живёт у меня. Сначала как личная сборка под собственные эксперименты — на пике там было три уровня вложенных форков; самый нижний я растил ради гипотезы про языковые токены, она не подтвердилась, и этот слой я выкинул — два оставшихся держат анти-галлюцинационные параметры и хук под capglue. Потом штука дозрела до состояния, когда ей можно пользоваться не только мне, — и я выложил её в public.

Название по дороге поменялось. Сначала форк назывался handy-nevinovata, но в чейнджлоге версии 0.9 автор Handy написал: код открытый, а логотип и бренд — нет, и попросил форки их не использовать. Лично мне никто ничего не писал — я сам увидел это, когда читал список изменений перед мержем. Требование абсолютно нормальное, поэтому софт стал klava-nevinovata, а логотип я нарисовал свой.

Скачать: github.com/egsok/klava-nevinovata. Бесплатно, без регистрации, без телеметрии.

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

Частые вопросы

Голосовой ввод на компьютере работает без интернета?

Да. Модель распознавания скачивается один раз внутрь приложения, дальше всё считается на вашем железе. Интернет нужен только для скачивания самой модели и обновлений. Записи никуда не отправляются — ни в облако, ни разработчику. Единственное исключение: экспериментальный блок Post Processing, если вы сами включите его с облачной моделью.

Сколько это стоит?

Ноль. Приложение бесплатное, с открытым исходным кодом, лицензия MIT. Ни подписки, ни лимитов на количество слов, ни платных моделей. Для сравнения: облачные аналоги стоят 690–750 ₽ в месяц, то есть 8–9 тысяч рублей в год.

Какая модель лучше для русского с английскими терминами?

Breeze-ASR-25, если позволяет железо: лучший результат в моём бенчмарке на русско-английской речи. Нужна скорость — Whisper Large v3 Turbo, но обязательно с пунктуационным промптом. GigaAM берите только для чистого русского. Английские слова она ломает.

Нужна ли видеокарта?

Для комфортной скорости — желательно, от 6 ГБ видеопамяти. На Mac с Apple Silicon хватает встроенного ускорения. Без видеокарты тяжёлые модели работают медленно: 69 секунд аудио на десктопном i5 обрабатывались почти две минуты. Лёгкие модели на процессоре живут нормально.

Чем это отличается от обычного Handy?

Четырьмя вещами: поле для пунктуационного промпта с готовыми пресетами, анти-галлюцинационные настройки декодера, regex-постобработка для модели Breeze и сохранение контекста между 30-секундными окнами при длинной диктовке. Всё остальное — тот же Handy, включая обновления от автора.

Портрет автора · в две краски
Кто за станком

Егор Соколов

Продакт-менеджер: Рольф, Клаустрофобия, 5,5 лет в Сбере — от продакта до директора подразделения. С лета 2025 — соло.

Разбираю нейросети и AI-инструменты, которыми работаю сам: Claude Code, голосовой ввод, бенчмарки моделей. Что не дорастает до разбора — выходит в канале.

Свежие разборы

Ещё из мастерской

Все разборы →
№02 21.07.2026

press-1: разрешения Claude Code и Codex одной клавишей

Читать →
№03 09.06.2026

Я ошибался: бенчмарк 23 ASR-нейросетей для русской айтишной диктовки

Читать →
№04 14.05.2026

Plan-tango: как я перестал гонять план между Claude Code и Codex руками

Читать →

Обсуждение

вопросы и несогласия приветствуются · отвечаю сам