Обычное окно
Чат, документ, запрос к ChatGPT. Окно активируется, текст вставляется разом.
Готово
Собственный продукт · Windows
Голосовой ввод и ИИ-помощник для Windows. Нажали Ctrl + Space, сказали, и текст появился там, где стоит курсор. Продукт я придумал и сделал целиком: от перехвата клавиш до оплаты и сайта.
Александрарабочий чат
Когда обсудим новую идею?
Вы говорите, Untype слушает. Текст вставляется разом, после распознавания.
Ctrl + Space начать диктовку
Плашка внизу экрана повторяет настоящую. Нажмите Ctrl + Space или кликните по ней, и она «продиктует» пример в ближайшее поле. Микрофон не включается, буфер обмена страница не трогает.
Голосовые сообщения коллеги не любят слушать, вежливое письмо начальнику пишется полчаса, а запрос к нейросети проще рассказать, чем напечатать. Untype превращает речь в текст в том окне, где вы уже работаете.
Голосовые сообщения никто не любит слушать.
Вежливый ответ начальнику занимает полчаса.
Запрос к ИИ проще рассказать, чем набрать.
По умолчанию Ctrl + Space работает как переключатель: первое нажатие начинает запись, второе её останавливает. Если держать клавиши дольше 0,6 секунды, они становятся рацией: отпустили, и запись ушла на распознавание. В режиме удержания касание короче 0,2 секунды возвращается в приложение, поэтому подсказки редактора кода продолжают работать.
Нажмите Ctrl + Space на клавиатуре или подержите кнопку. Страница измерит нажатие так же, как Untype.
Нажмите и отпустите, чтобы увидеть, как поступит Untype.
Микрофон открывается только на время диктовки. Звук сводится в моно, приводится к 16 кГц и режется на кусочки по 100 мс. Они сразу уходят по WebSocket, поэтому к моменту, когда вы отпустили клавишу, запись уже на сервере.
Если связь подвела. Звук параллельно копится в памяти. Не открылся сокет или упал посреди речи: после записи то же аудио уходит одним запросом.

Пунктуацию даёт модель распознавания. Дальше на компьютере работает предсказуемая обработка: убирает служебные метки вроде [музыка], отбрасывает известные галлюцинации whisper вроде «Субтитры сделал DimaTorzok», ставит кавычки-ёлочки и заглавную букву. Смысл не меняется.
«Помоги составить план запуска сайта. У нас два человека и три недели. Сначала задай вопросы, чтобы уточнить задачу»
Нажмите Ctrl + Space или кликните по плашке внизу: текст появится в этом поле.
Окно запоминается в момент нажатия. Пока вы говорите, можно переключиться куда угодно: Untype вернёт фокус и вставит текст туда, откуда начали. Сначала текст надёжно кладётся в буфер обмена, потом нажимается Ctrl + V.
Чат, документ, запрос к ChatGPT. Окно активируется, текст вставляется разом.
Готово
Если при нажатии активна панель задач, текст уйдёт в последнее настоящее окно: его помнит системный хук.
Готово
Вставлять в случайно активное окно нельзя. Текст остаётся в буфере, и плашка честно об этом говорит.
В буфере обмена
Untype пробует открыть буфер 40 раз через 25 мс. Не вышло: вставка не начинается, текст сохраняется в истории.
Не удалось скопировать текст
Выделите фрагмент в любом приложении и нажмите Ctrl + Shift + Space или просто скажите «Джарвис, сократи до главного». Ответ появляется в отдельном окне и сразу лежит в буфере обмена: проверьте и вставьте сами.
Коллеги, добрый день!
Привет! По запуску сайта: макеты уже согласованы. Разработку заканчиваем в пятницу. Давайте встретимся в понедельник в 11:00, чтобы всё проверить и решить, когда запускаемся.
Спасибо!
Ctrl + Shift + Space или по имени, если включено в настройках
Помощник
Текст. По-вашему.
Переведите, сократите или найдите точные слова.
Что сделать с текстом?
«Джарвис, сократи до главного»
Готовый текст
Макеты согласованы, разработку закончим в пятницу. В понедельник в 11:00 проверим сайт и выберем дату запуска.
Готовые ответы с сайта untype.ru, текст никуда не отправляется.
Текст и инструкция отправляются ИИ для обработки. В историю Untype они не записываются.


В настройках включается обращение по имени. Небольшая модель Vosk слушает прямо на компьютере и реагирует только на фразу целиком. Пока имя не прозвучало, звук никуда не уходит.
ИмяVosk на компьютере ждёт фразу «имя + команда» целиком.
КомандаВыполняется сразу. Слово «стоп» внутри обычной речи ничего не остановит.
ДиктовкаТолько этот звук уходит на распознавание, а «Джарвис, стоп» вырезается из конца текста.
Untype живёт в трее и не просит внимания. Всё, что связано с текстами, остаётся на вашем компьютере.
Горячая клавиша, микрофон, последняя диктовка и сколько слов вы надиктовали за день и неделю. Для счётчика хранятся только числа по дням.

Последние 500 диктовок лежат в SQLite на этом компьютере, без аудио. Историю можно выключить или очистить.

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

Токены на компьютере зашифрованы через DPAPI, ключей распознавания в клиенте нет. Телеметрию можно выключить, и тексты она не содержит никогда.
voiceapp.db · settings · dictionary · history · usage_daily
Сигнал «готово» синтезируется в памяти: 880 и 1 318 Гц. В установщике нет ни одного звукового файла.
Запуск с флагом --toggle передаёт команду уже работающему Untype через именованные события Windows.
Плашка появляется на экране активного окна, в его масштабе, и запоминает место, куда вы её перетащили.

Сервер, аккаунты, оплата, обновления, сайт и аналитика. Всё это я сделал сам, чтобы Untype можно было найти, скачать, попробовать и купить без моего участия.


У каждого скачивания свой шестизначный код в имени установщика. Так путь от объявления до оплаты виден без сторонних SDK. Если файл переименовали, загрузка сопоставляется по хешу адреса в пределах 48 часов и помечается как вероятная.
Перед записью резервируется время, списание после успешного распознавания по длительности звука, с точностью до миллисекунды. Ошибка или отмена возвращают резерв.
Получив уведомление ЮKassa, сервер заново запрашивает платёж и сверяет магазин, сумму и заказ. Статус меняется только вперёд, двойной клик не создаёт второй платёж. Пока оплата работает в тестовом режиме.
Три дня. Защита от повторных проб: подтверждённая почта, лимит регистраций с одного адреса, одна проба на установку и не больше двух на сеть за месяц. Идентификаторы хранятся как HMAC.

Манифест подписан ECDSA, открытый ключ зашит в приложение: даже взлом сервера не позволит подсунуть чужую программу. Перед установкой сверяется SHA-256.
16 сценариев использования, 35 статей блога, микроразметка без ошибок на 38 страницах. Установщик пока не подписан: сертификат для ИП из России сейчас не выпустить, поэтому сайт заранее объясняет предупреждение SmartScreen.
Путь от посетителя до оплаты, когорты удержания, расходы на ИИ и ошибки, сгруппированные по отпечатку. Каждое действие администратора пишется в журнал.
Презентацию и видеоинструкцию я не монтировал руками. Ролик собирается из HTML-страницы с детерминированной временной шкалой: Chrome снимает её кадр за кадром, ffmpeg склеивает видео. Окна Untype в кадре повторяют настоящие и сверены с кодом.
WinUI 3 на .NET 10. Ядро без платформенного кода: оркестратор диктовки и обработка текста. Отдельно инфраструктура Windows:
ASP.NET Core: 59 маршрутов, WebSocket для звука, SQLite для аккаунтов и аналитики. Служба systemd с жёсткими ограничениями, nginx и Let’s Encrypt.
Установщик Inno Setup без прав администратора. Обрыв обновления не ломает старую версию. Сайт выкладывается узкими пакетами со сверкой хешей и автоматическим откатом.
≈ 22 000строк C# в клиенте
≈ 12 000строк C# на сервере
467тест-методов, около 790 проверок с параметрами
704/704тестов в последнем полном прогоне
Давайте знакомиться
Нужен технический партнёр, помощь команде или решение для рабочего процесса? Расскажите, что хотите изменить — обсудим, чем я могу помочь.
@work_ilyaЛично мне в Telegram