Как я уделал Microsoft, но это никому не нужно (кайфую сам). chatgpt.. chatgpt. python.. chatgpt. python. windows.. chatgpt. python. windows. голосовой ввод.. chatgpt. python. windows. голосовой ввод. Голосовые интерфейсы.. chatgpt. python. windows. голосовой ввод. Голосовые интерфейсы. искусственный интеллект.. chatgpt. python. windows. голосовой ввод. Голосовые интерфейсы. искусственный интеллект. Ненормальное программирование.. chatgpt. python. windows. голосовой ввод. Голосовые интерфейсы. искусственный интеллект. Ненормальное программирование. разработка.. chatgpt. python. windows. голосовой ввод. Голосовые интерфейсы. искусственный интеллект. Ненормальное программирование. разработка. разработка приложений.. chatgpt. python. windows. голосовой ввод. Голосовые интерфейсы. искусственный интеллект. Ненормальное программирование. разработка. разработка приложений. разработчик.

Как я уделал Microsoft, но это никому не нужно (кайфую сам)

Однажды мне надоело много печатать, я включил voice typing от Microsoft, и он меня не устроил: медленный, тупой и ещё грузит процессор.

— ChatGPT, родной, сможем написать своё приложение для диктовки? — спросил я ИИ.

— Без проблем, — ответил он.

Так и началось.

Сразу предупрежу. Я не программист.

Я актёр и модель, писатель, финансист, предприниматель — и это не для упоминания Брюса Уэйна. Я просто человек, который последние годы постоянно что-то придумывает и пытается это реализовывать.

Алгоритмы я не изучал. Design patterns не знаю. Clean Architecture могу примерно представить, но если попросить меня объяснить её на собеседовании — лучше сразу вызвать другого человека.

Зато у меня есть ChatGPT.

И, как оказалось, этого иногда достаточно, чтобы очень надолго втянуть себя в разработку на месяцы.

Мне просто надоело печатать.

Я много пишу. Очень много: сообщения, заметки, тексты, документы, какие-то мысли. На это уходит куча времени, нервов, да ещё руки устают. Проще наговорить.

Поэтому я попробовал обычную голосовую диктовку Windows. Вызов — клавиша Win+H.

Ну что сказать? На мой вкус: медленная, тупит, слова с опозданием вводит, да ещё надо кнопку нажимать каждый раз. Потом я попробовал другие доступные в интернете программы, и итог для них один — всё то же самое, что и с Voice typing. Неудобные. Мягко сказать.

Да ещё большинство отправляют надиктованное в облако. А я параноик на тему конфиденциальности. И я решил сделать своё.

Критерии:

сказал слово → слово появилось на экране. И желательно в любом месте, куда сейчас можно печатать: Word. Telegram. Браузер. Блокнот. Форма на сайте. Неважно.

Я не хотел отдельное приложение, в которое надо сначала перейти. Не хотел каждый раз нажимать горячую клавишу. Не хотел отправлять свой голос куда-то в облако. И уж точно не хотел запускать огромную нейросеть ради того, чтобы написать:

«Сегодня вечером нужно купить молоко».

Как человек, который не умеет программировать, пишет программу

Первое время всё выглядело примерно так.

Я: Сделай, чтобы программа слушала микрофон и печатала текст.

ChatGPT: Конечно.

Потом:

А теперь пусть не печатает, когда я молчу.

Ок.

А теперь пусть понимает, что я продолжаю говорить после короткой паузы.

Хорошо.

И т.дальше вы поняли.

Я запускал программу. Она падала. Я отправлял ошибку ChatGPT. Он исправлял. Я вставлял исправленный код. Она падала уже по-другому. Мы снова разбирались. И так по кругу.

Я не писал эту систему как программист. Я скорее ставил эксперименты и разговаривал с нейросетью о результатах. Я говорил, что должно происходить. Она предлагала, как это сделать. Я запускал. Смотрел. Говорил, что получилось. Она переделывала. И постепенно из этого начали собираться отдельные детали.

А потом они почему-то начали работать вместе.

Так появился Jupiter

Почему я назвал его так — уже не помню. Просто первое, что в голову пришло.

По сути, это очень простая идея. Микрофон постоянно слушает, но не всё подряд: отдельный слой определяет, что человек действительно начал говорить. Программа распознаёт этот поток и отправляет слова в то место, где стоит курсор. Текст появляется сразу.

Потом система может уточнять уже распознанное. Пунктуация и исправления накладываются поверх результата.

И всё это происходит локально на компьютере. Без отправки голоса на сервер.

Мне было важно, чтобы Jupiter нормально работал даже на слабом Windows-компьютере.

Я специально не хотел превращать обычную диктовку в соревнование по размерам моделей.

Мне нужен был инструмент. Не AI-агент. Не цифровой секретарь. Не «поговори со своим компьютером о смысле жизни».

Просто: я говорю → компьютер печатает. Причём желательно быстро.

А вот здесь начинается самое интересное

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

Но я не разработчик. Поэтому некоторые решения у меня получились довольно… спорными. Например, Jupiter не пытается интегрироваться отдельно с каждым приложением.

Зачем? Если Windows уже умеет принимать нажатия клавиш, почему бы не использовать это?

Jupiter получает распознанный текст и фактически печатает его туда, где сейчас находится курсор.

Поэтому ему всё равно, что перед ним. Word или Telegram. Браузер или Блокнот. Он просто печатает. Наверняка сейчас кто-то уже пишет:

«Это костыль».

Возможно. Но он работает. Есть и другая интересная вещь.

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

Например, сначала модель услышала одно. Через мгновение получила больше контекста и поняла, что там было другое слово.

Поэтому пришлось делать слой согласования текста. Он сравнивает то, что уже напечатано, с тем, что система считает правильным сейчас, и при необходимости исправляет предыдущий результат. То есть вместо красивой схемы:

подождали → распознали → получили идеальное предложение → напечатали

получилась схема:

услышали → напечатали → услышали ещё → поняли лучше → поправили

Мне она нравится. Но я подозреваю, что у профессионального разработчика от неё может немного дёрнуться глаз.

Почему я не взял одну большую нейросеть?

Потому что мне не нужна была одна большая нейросеть. Я начал собирать систему из небольших специализированных компонентов. Один отвечает за определение речи. Другой — за распознавание. Отдельная часть занимается согласованием результата. Ещё одна — пунктуацией и исправлением текста.

Потом всё это нужно было заставить работать в реальном времени. И вот тут я впервые понял одну неприятную вещь.

Работающая программа — это вообще не то же самое, что набор работающих компонентов. Каждая отдельная часть может прекрасно работать.

А вместе они могут устроить полный пиз*ец.

Поток начинает запаздывать. Текст прыгает. Курсор оказывается не там. Короткая пауза внезапно заканчивает фразу. Следующая фраза начинается с мусора от предыдущей.

Исправление текста приходит тогда, когда пользователь уже успел напечатать ещё двадцать слов. И всё это приходится ловить руками. Ну, почти руками. В основном — руками через ChatGPT.

Самая странная часть

В какой-то момент Jupiter начал работать настолько нормально, что я перестал воспринимать его как эксперимент. Я просто начал им пользоваться. Пишу сообщение — говорю. Нужно записать мысль — говорю и т.д

Появилась команда:

«Юпитер, удали последнее слово».

И он удаляет.

Добавилась коррекция орфографии и пунктуации (пока в разработке). Речь становится больше похожа на нормальный письменный текст. При этом сама идея остаётся примитивной. Я не пытаюсь разговаривать с компьютером. Я просто заменил клавиатуру голосом. И вот здесь у меня возник вопрос.

Почему такой простой сценарий вообще нельзя было сделать нормально из коробки?

Microsoft, Google, Apple и куча других компаний годами делают голосовые технологии.

Они умеют гораздо больше меня. У них команды разработчиков, инфраструктура, огромные модели, деньги и всё остальное. А я — актёр, писатель, финансист… (ну вы помните) с ChatGPT.

И всё равно мне удалось собрать штуку, которая лично для меня удобнее того, чем я пользовался раньше. Не лучше вообще. Не технологически круче. Не «революция». Просто мне удобнее. И это, пожалуй, самое смешное во всей истории.

Я собрал Windows-сборку

Потом начался следующий уровень боли.

Мне захотелось Jupiter’ом поделиться с другими.

Попробуй объяснить обычному человеку:

«Сейчас установи Python 3.12, зависимости, ONNX Runtime, вот эту библиотеку, вот эту модель, а теперь открой PowerShell…»

Поэтому пришлось разбираться со сборкой. Jupiter превратился из папки с Python-файлами в нормальное Windows-приложение. Появился установщик. Запуск без Python-консоли. Модели лежат внутри нужной структуры. Программа запускается как обычный Windows-софт.

Можно дать человеку установщик и сказать:

«Установи»

И вот тут возникает проблема

Я сделал Jupiter для себя. Не стартап. Не бизнес. Не инвестиционный проект. Не «давайте сейчас найдём рынок на 10 миллиардов долларов». Мне просто надоело печатать. Это была вся бизнес-модель.

Задолбался → сделал

И пока я делал его для себя, мне было вообще всё равно, нужен он кому-нибудь или нет.

А потом я посмотрел на результат и подумал, что возможно, кому-то ещё, кроме меня, тоже надоело печатать: врачам, юристам, писателям, журналистам, тем, кто общается с нейросетью.

В общем, людям, которые работают с текстом целыми днями.

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

а ему-то зачем?

И вот на него я пока не знаю ответа. Поэтому, возможно, я действительно уделал Microsoft. Только есть нюанс. Microsoft от этого ничего не потерял. Я не сделал технологию, которая изменила рынок. Не построил новый OpenAI. Не придумал новый способ распознавания речи.

Я просто взял существующие технологии, склеил их в довольно странную конструкцию и получил инструмент, которым сам теперь пользуюсь каждый день.

Причём часть часть архитектурных решений я вообще не смог бы защитить на собеседовании.

Где-то наверняка есть костыли. Где-то решения, которые профессиональный разработчик сразу назовёт неправильными. Где-то я, возможно, вообще изобрёл велосипед.

Но велосипед ездит. И мне на нём удобно.

Самое смешное — я начинал Jupiter не для того, чтобы доказать, что человек без технического образования может заменить программиста.

Я просто хотел меньше печатать.

А в итоге обнаружил, что сегодня человек, который вообще не умеет программировать, может взять нейросеть за руку и дотащить довольно сложную идею до работающего Windows-приложения.

Не знаю, хорошо это или плохо. И не знаю, насколько долго такая схема вообще может работать.

Но Jupiter у меня работает. Я от него кайфую. А нужен ли он кому-нибудь ещё — это уже, пожалуй, самая интересная часть эксперимента.

Для тех, кто, прочитав статью, захочет его попробовать: Jupiter лежит на GitHub. Там можно скачать Windows-установщик.

https://github.com/iaroshenko-dev/jupiter-voice-dictation/releases/tag/v0.1

А я пойду пока устраиваться разработчиком ;)

Автор: Trop_12

Источник