Комментарии 13
Handy - с моделью GigaAM на ~250 мб работает идеально. Есть пост ии обработка, но опционально и со своим ключом, поэтому если не нужно - можно не включать и программа будет работать полностью офлайн
Здравствуйте! Наткнулся на ваш проект практически случайно — искал на Хабре свой и увидел, что вы решаете очень похожую задачу. Посмотрел репозиторий, поставил звезду. Было очень интересно посмотреть на другой подход.
Причём статья заставила меня задуматься над несколькими вещами, которые у себя я пока вообще не учитывал. В частности, над настройкой CPU-режима и историей с UIPI при вставке текста в приложения, запущенные от администратора. С последним я даже не успел столкнуться, а проблема действительно неприятная: со стороны пользователя всё просто выглядит как «ничего не произошло». Так что за этот момент отдельное спасибо.
Насчёт сужения окна энкодера и monkey patch внутренностей faster-whisper у меня пока есть сомнения. Я понимаю, зачем это сделано и почему для CPU это даёт такой выигрыш, но связка получается достаточно хрупкой: само сужение окна, отключение таймкодов, обработка повторов и зависимость от внутренней реализации faster-whisper. Возможно, для проекта, ориентированного именно на CPU, это вполне оправданный компромисс. У себя я бы сначала попробовал ограничиться более простыми вещами вроде beam_size и количества потоков.
Если интересно, можете посмотреть и мой вариант:
https://habr.com/ru/articles/1068152/
Задача похожая, но немного другой акцент. Там это не только голосовой ввод: после Whisper можно подключить языковую модель, которая уже приводит распознанную речь в нормальный вид — убирает слова-паразиты и оговорки, исправляет часть ошибок распознавания, расставляет пунктуацию, умеет сохранять технический жаргон и при необходимости переписывать устную речь в более аккуратный или деловой текст. Есть ещё свой словарь терминов, чтобы и Whisper, и нейронка лучше понимали специфические названия.
Сама логика работы тоже немного отличается: модель может выгружаться из памяти при простое и начинает загружаться обратно уже в момент начала диктовки, пока человек говорит первую фразу. Есть проверка тишины, контроль аудиопотока и аварийное дораспознавание.
И ещё, если вам когда-нибудь понадобится API для языковой модели, а поднимать или оплачивать отдельный сервис не хочется, у меня есть ещё проект FreeAI — он собирает бесплатные AI API за OpenAI-совместимым интерфейсом. Если захотите что-то протестировать, могу помочь с подключением. Возможно, пригодится либо в вашем проекте, либо просто для каких-то других экспериментов.
В любом случае спасибо за статью. Особенно понравилось, что вы подробно описали не только то, что получилось, но и те места, где Windows и Whisper начинают вести себя совсем не так, как ожидаешь. Несколько вещей после прочтения я точно пошёл проверять у себя.
Спасибо за столь подробный комментарий. Я ознакомился с вашим решением, у вас оно отлично проработанно и красиво оформлено. Но мне лично хотелось как раз такое вот специализированное и незаметное решение. Поэтому все простенько. Вы очень постарались над оформление репозитория, это очень привлекательное решение, желаю успеха в реализации дополнительного функционала и оптимизации приложения!
Спасибо за статью. А что мешает onnx оптимизацию сделать? Я благодаря ей нейронки в мобильные приложения запихиваю.....
ONNX здесь не даёт свободного ускорения, потому что: (1) проект уже стоит на специализированном под Whisper движке (CTranslate2/faster-whisper), а не на generic-рантайме, который ONNX обычно ускоряет; (2) главный источник скорости — не формат модели, а адаптивное сужение окна энкодера, завязанное конкретно на API faster-whisper, и его пришлось бы переносить заново; (3) на CPU (а GPU здесь сознательно не используется) выигрыш ONNX над CTranslate2 int8 для Whisper обычно не гарантирован, а стоимость миграции — весь stt.py и часть архитектуры.
О спасибо что поделились обязательно посмотрю ваше решение. Сам тоже пилю по фану подобное. Tauri+rust. Я не стал пытаться оптимизировать под проц, и сделал вариативность чтобы обработка была на Vulcan или Cuda. Точные замеры не припомню, но работает мгновенно. Еще прикрутил постобработку через локальную модель ну или можно через облачную. У меня это больше эксперимент, ещё прикрутил wake word для этого используется отдельная библиотека , и команды для включения приложений и смены громкости и т.т.д.ктгда допилю оже зотел выложить в открытый доступ и может тоже пост запилю.
Для распознавания голоса обычно ставят и настраивают VAD и только после этого записанный голос переводят в текст через gigaam . Wisper для русской речи - плохое решение.
здравствуйте, а как устанавливать ПО на ПК без инета? скачал экзешник WhisperTypeSetup.exe 68 901 Кб перенёс на флеш-накопителе на ПК без инета - он установит ПО без инета? вроде должен
а потом как этому ПК вскормить модель также с флеш-накопителя, просто я на ПК, который имеет инет установил ПО в папку: C:\Users\start\AppData\Local\Programs\WhisperType 251 МБ и понятно, что здесь нет модели на 1,6 ТБ
ок, нашёл, C:\Users\start\AppData\Local\WhisperType\models - 1,5 ГБ она?, а то что писал ранее """"1,6 ТБ"""" ошибся, сорри
ну и следом, может кому надо:
Как изменить хоткей (Ctrl+Space) в WhisperType
В программе WhisperType все настройки, включая комбинацию клавиш, хранятся в файле конфигурации config.json.
По умолчанию после установки он находится здесь:
text
%APPDATA%\WhisperType\config.json (обычно это C:\Users\<ваше_имя>\AppData\Roaming\WhisperType\config.json)
Пошаговая инструкция
Закройте WhisperType (правый клик по иконке в трее → «Выход»).
Откройте проводник и вставьте в адресную строку:
%APPDATA%\WhisperType\config.json=C:\Users\start\AppData\Roaming\WhisperType\config.jsonФайл откроется в текстовом редакторе (Блокноте).
Найдите секцию
"hotkey". Сразу после установки она выглядит примерно так:json
"hotkey": { "mode": "toggle", "combo": "ctrl + space", "cancel": "esc" }Измените значение
"combo"на нужную комбинацию.
Примеры:"combo": "f9"— просто клавиша F9."combo": "ctrl+alt+space"— Ctrl + Alt + Space."combo": "right ctrl"— правый Ctrl."combo": "ctrl+shift+d"— Ctrl + Shift + D.
Доступные клавиши:
ctrl/lctrl/rctrl,alt/lalt/ralt,shift/lshift/rshift,win,space,esc,enter,tab,f1–f24, буквыa–z, цифры,numpad0–9,home/end/pageup/pagedown/insert/delete, стрелки.Если хотите режим «зажать и говорить», добавьте:
json
"hotkey": { "mode": "push_to_talk", "combo": "f9" }
ТС, доработки планируются? может сделать настройки в ПО, в том числе и эту?

Голосовой ввод в любое окно Windows за секунду. Офлайн, на CPU, без единого гигабайта torch