ClipGen — Windows-утилита, которая добавляет AI-обработку текста, изображений и голоса прямо в рабочие приложения через глобальные горячие клавиши. Пользователь выделяет текст или копирует изображение, нажимает хоткей, и результат вставляется обратно без переключения в браузер или чат-бот.
- Текущая версия: 2.3.0
- Платформа: Windows
- Интерфейс: PyQt5, русский и английский языки.
ClipGen работает поверх обычного буфера обмена Windows:
- Пользователь выделяет текст в любом приложении.
- Нажимает назначенную комбинацию клавиш.
- ClipGen копирует выделение, отправляет его в выбранную AI-модель и вставляет результат обратно.
Это работает в браузере, Word, Telegram, IDE, Figma, Photoshop, адресной строке браузера и любых других программах, где можно выделять и вставлять текст.
ClipGen поддерживает два типа провайдеров:
- Google Gemini через нативный Gemini API.
- OpenAI-compatible API: OpenAI, OpenRouter, DeepSeek, Claude через OpenRouter, локальные OpenAI-compatible серверы.
Для OpenAI-compatible режима можно задать собственный Base URL, список ключей и список моделей.
Во вкладке Prompts можно настроить:
- комбинацию клавиш;
- название действия;
- цвет логов;
- промпт;
- тип действия: обработка текста или голосовая транскрибация;
- индивидуального провайдера и модель для конкретного хоткея;
- режим обучения с объяснением исправлений.
По умолчанию создаются:
Ctrl+F1— коррекция текста;Ctrl+F2— перевод.
Глобальные настройки задают основной провайдер и модель, но каждый хоткей может использовать собственную модель. Например:
- коррекция — Gemini Flash;
- перевод — GPT-4o или DeepSeek;
- анализ кода — Claude через OpenRouter;
- быстрые повседневные задачи — локальный OpenAI-compatible endpoint.
Если в буфере обмена находится изображение, ClipGen может отправить его в мультимодальную модель:
- распознать текст на скриншоте;
- перевести текст с изображения;
- объяснить интерфейс, схему или диаграмму;
- проанализировать изображение с заданным промптом.
Поддержка зависит от выбранной модели и провайдера.
Для текстовых хоткеев можно включить Learning mode. В этом режиме ClipGen показывает всплывающее объяснение того, что исправила модель:
- орфография;
- пунктуация;
- грамматика;
- значимые изменения формулировки.
Объяснение также дублируется в логах.
В версии 2.3.0 добавлена голосовая транскрибация на базе faster-whisper / CTranslate2.
- Включите голосовую транскрибацию во вкладке Settings.
- Нажмите Install / Download, чтобы установить зависимости и скачать модель.
- Создайте хоткей во вкладке Prompts и выберите тип Voice transcription.
- Удерживайте хоткей как push-to-talk.
- После отпускания клавиши ClipGen распознаёт речь и вставляет текст в активное приложение.
Во вкладке Settings доступны:
- модель:
large-v3,medium,small,base,tiny; - устройство:
auto,cuda,cpu; - тип вычислений:
float16,int8_float16,float32,int8; - язык по умолчанию или автоопределение;
- выбор микрофона;
- beam size;
- VAD-фильтр тишины;
- фильтр типичных Whisper-галлюцинаций;
- звуковые сигналы записи;
- автозагрузка модели при старте;
- авто-выгрузка модели после простоя.
Для каждого голосового хоткея можно отдельно задать язык и initial prompt.
Whisper/CUDA stack весит больше гигабайта и нужен не всем пользователям. Поэтому основной ClipGen.exe остаётся компактным, а голосовые зависимости устанавливаются по требованию из интерфейса.
Опциональный стек:
faster-whisper;ctranslate2;sounddevice;numpy;huggingface_hub;tqdm;- NVIDIA CUDA/cuDNN wheels для Windows.
Для exe-сборки используется изоляция Whisper-инференса:
- модель может загружаться в отдельном worker-процессе;
- скачивание модели выполняется через внешний helper;
- отмена скачивания поддерживается через UI;
- при ошибках создаётся
transcription_diagnostics.txt; - PyInstaller bundle фильтрует конфликтующие VC runtime DLL из PyQt5 и добавляет актуальные DLL из
C:\Windows\System32.
Это сделано, чтобы избежать native crash при загрузке WhisperModel() в собранном exe.
- Logs — логи выполнения, ответы модели, ошибки, статус обновлений.
- Settings — провайдеры, ключи, модели, proxy, транскрибация, язык, масштаб.
- Prompts — хоткеи, промпты, типы действий, модели для конкретных хоткеев.
- Help — справка, контакты и поддержка проекта.
Иконка в системном трее показывает состояние:
- обработка запроса;
- успешное выполнение;
- ошибка;
- загрузка модели;
- запись голоса;
- транскрибация.
Выпадающие списки не меняют значение от случайного скролла мыши, пока список не раскрыт кликом. Это защищает настройки от случайного изменения при прокрутке вкладки Settings.
Файл settings.json создаётся автоматически при первом запуске рядом с приложением.
Ключевые секции:
{
"provider": "gemini",
"language": "en",
"ui_scale": 1.0,
"api_keys": [],
"openai_api_keys": [],
"gemini_models": [],
"openai_models": [],
"hotkeys": [],
"transcription": {
"enabled": false,
"model": "large-v3",
"device": "auto",
"compute_type": "float16",
"default_language": "auto",
"isolate_inference_process": true,
"auto_unload_minutes": 5,
"beam_size": 1,
"vad_filter": true,
"filter_hallucinations": true,
"audio": {
"input_device": null,
"max_record_seconds": 120
}
}
}При обновлении приложения конфиг мигрируется автоматически: новые ключи добавляются из DEFAULT_CONFIG, пользовательские значения сохраняются.
ClipGen работает как локальная Windows-утилита и выполняет действия только по пользовательскому хоткею.
Что может отправляться наружу:
- выделенный или скопированный текст отправляется выбранному AI-провайдеру только после нажатия hotkey;
- изображение из буфера обмена отправляется провайдеру только для hotkey/промпта, который работает с изображениями;
- OpenAI-compatible режим отправляет данные на указанный пользователем
Base URL; - voice transcription на Whisper/Parakeet выполняется локально после установки моделей, но зависимости и модели скачиваются из внешних источников.
Что хранится локально:
settings.jsonрядом сClipGen.exe;- API-ключи Gemini/OpenAI-compatible;
- proxy-настройки;
- пользовательские хоткеи, промпты, модели и настройки транскрибации.
API-ключи и proxy-строка хранятся в settings.json обычным текстом. Это сделано для прозрачности и переносимости настроек: пользователь сам контролирует файл, может скопировать папку программы на другой компьютер и вручную редактировать настройки. Не публикуйте свой settings.json и не отправляйте его в issue/чат поддержки.
Логи и диагностика:
- вкладка Logs может содержать текст результата, ошибки API и технические сообщения;
fault_log.txtиtranscription_diagnostics.txtмогут содержать пути, сведения об окружении, модели и аудиоустройства;- перед отправкой логов кому-либо проверьте, нет ли там приватного текста, ключей, путей или фрагментов переписки.
Gemini safety-фильтры не усиливаются приложением: запросы выполняются с пользовательским API-ключом, а ответственность за содержание запросов и соблюдение правил выбранного провайдера остается на пользователе.
Релизная целостность:
- официальные сборки публикуются через GitHub Releases;
- рядом с релизным архивом публикуется SHA256;
- чтобы проверить файл, сравните хэш скачанного архива с опубликованным значением.
Пример проверки SHA256 в PowerShell:
Get-FileHash .\ClipGen-2.3.0.zip -Algorithm SHA256Языковые файлы:
lang/en.json;lang/ru.json.
Правило проекта: весь пользовательский текст должен находиться в языковых файлах. Это касается labels, кнопок, tooltips, placeholder, диалогов, ошибок и логов.
Проверка словарей:
python tools/check_i18n.pyСкрипт проверяет:
- одинаковый набор ключей в
en.jsonиru.json; - отсутствие кириллицы в
en.json.
git clone https://github.com/Veta-one/ClipGen.git
cd ClipGen
pip install -r requirements.txt
python -m clipgen.mainДля голосовой транскрибации не нужно заранее ставить heavy ML-зависимости. В dev-режиме их можно поставить через кнопку Install / Download в Settings.
Актуальная сборка выполняется через ClipGen.spec.
Рекомендуемая команда:
py -m PyInstaller --clean ClipGen.specИли verbose-скрипт с логом:
build_verbose.batbuild_verbose.bat сохраняет полный вывод в build.log и не удаляет dist\Models, чтобы не скачивать Whisper-модели заново.
Важно: не пересоздавайте ClipGen.spec автоматически без необходимости. В нём зафиксированы:
- hidden imports для transcription worker/download/diagnostics;
- исключения heavy ML-пакетов из основного exe;
- фильтр конфликтующих PyQt5 VC runtime DLL;
- добавление актуальных VC runtime DLL из System32.
Готовый exe появляется здесь:
dist\ClipGen.exe
Минимальный набор:
python tools/check_i18n.py
python tools/test_config_migration.py
python -m compileall clipgen tools/check_i18n.py
py -m PyInstaller --clean ClipGen.spec
python tools/prepare_release.pyРучная проверка:
- запуск dev-режима;
- запуск собранного exe;
- переключение языка RU/EN;
- проверка Settings и блока транскрибации после переключения языка;
- проверка, что combo box не меняется от скролла;
- установка/скачивание Whisper через UI;
- загрузка модели;
- push-to-talk запись и вставка результата;
- unload модели;
- повторный запуск exe.
При проблемах с Whisper создаётся файл:
transcription_diagnostics.txt
В нём фиксируются:
- версия Python и окружение;
- режим frozen/dev;
- параметры модели;
- наличие faster-whisper, CTranslate2, sounddevice, numpy, huggingface_hub;
- CUDA/cuDNN сведения;
- доступные аудиоустройства;
- пути к моделям.
Если exe падает или модель не загружается, сначала смотрите fault_log.txt, build.log и transcription_diagnostics.txt.
clipgen/
api/ AI-провайдеры и TextProcessor
core/ конфиг, constants, миграции
hotkeys/ глобальные хоткеи и CRUD хоткеев
testing/ тест API-ключей и моделей
transcription/ Whisper/faster-whisper pipeline
ui/ PyQt5 интерфейс
utils/ i18n, proxy, autostart, clipboard, updates
tools/
check_i18n.py проверка языковых файлов
ClipGen.spec актуальная PyInstaller-сборка
build_verbose.bat сборка с логом
Автор проекта: VETA (Vitalii Kalistratov).
- Telegram: https://t.me/VETA14/14
- Habr: https://habr.com/ru/articles/974706/
- USDT TRC-20:
TYgsAvTkkrRqArgo3Q5BYMghbYn6DViVqQ