Портативное Windows-приложение для голосового ввода текста с поддержкой GPU (CUDA) и качественной русской транскрипцией. Несколько моделей на выбор прямо из трея — от самой быстрой (Whisper turbo) до самой точной для русского (Sber GigaAM v3).
Живёт в системном трее. По двойному клику ЛКМ с зажатыми Ctrl+Alt начинает запись; после паузы в речи (или повторного хоткея) транскрибирует и вставляет текст в активное окно.
Активная модель переключается из трея: Модель ▸. У каждой показаны условные метрики (точность RU / скорость). Выбор сохраняется в конфиг и применяется на лету.
| Модель | Бэкенд | Точность RU | Скорость | Лицензия |
|---|---|---|---|---|
| GigaAM v3 (по умолчанию) | onnxruntime (CPU) | ●●●●● | ●●●●○ | MIT |
| GigaAM v2 | onnxruntime (CPU) | ●●●●● | ●●●●● | MIT |
| Whisper Podlodka turbo | faster-whisper (GPU/CPU) | ●●●●○ | ●●●●○ | Apache-2.0 |
| Whisper large-v3 RU (antony66) | faster-whisper (GPU/CPU) | ●●●●○ | ●●○○○ | — |
| Whisper turbo RU (dvislobokov) | faster-whisper (GPU/CPU) | ●●●○○ | ●●●●● | MIT |
| Whisper large-v3 (база) | faster-whisper (GPU/CPU) | ●●●○○ | ●●○○○ | MIT |
GigaAM (Conformer) запускается через onnx-asr / onnxruntime на CPU — лёгкий и точный для русского. Whisper-семейство идёт через faster-whisper/CTranslate2 на CUDA (с авто-fallback на CPU). Реестр моделей — src/core/models.py; файлы готовит scripts/prepare_models.py.
Сборка юридически чистая для коммерческой продажи (закрытый код, без роялти):
- Все модели — MIT / Apache-2.0 (GigaAM, dvislobokov, podlodka, Whisper). Модель без лицензии (antony66) исключена.
- Аудио-файлы декодируются через LGPL
ffmpeg.exe(BtbN, без GPL-кодеков x264/x265); PyAV заменён заглушкой (scripts/av_stub). pynput/pystray(LGPL-3.0) поставляются россыпью (заменяемы) согласно §4 LGPL.THIRD-PARTY-NOTICES.txt(генеритscripts/gen_notices.py) иEULA.txtкладутся в бандл; трей → «О программе ▸» открывает их.- Замечание: GigaAM = MIT, но Sber под санкциями OFAC — для РФ/СНГ без проблем, для США/ЕС нужна консультация юриста.
Приложение модульное — функционал добавляется через папку src/modules/<имя_модуля>/. Стартовое ядро лишь грузит трей, конфиг и список модулей.
src/
├── main.py # entry point
├── core/
│ ├── app.py # App orchestrator
│ ├── config.py # JSON config рядом с exe
│ ├── module_loader.py # дискаверит modules/*
│ ├── tray.py # системный трей (подменю, radio)
│ ├── transcriber.py # менеджер моделей: рантайм-переключение
│ ├── models.py # реестр моделей + метрики
│ ├── asr/ # движки распознавания
│ │ ├── faster_whisper_engine.py # Whisper / CTranslate2 (CUDA)
│ │ └── gigaam_engine.py # GigaAM / onnxruntime (CPU)
│ └── overlay.py, ipc.py, ...
└── modules/
├── voice_input/ # голосовой ввод: Ctrl+Alt+2×ЛКМ
├── file_transcribe/ # ПКМ по аудио/видео → .txt
└── model_manager/ # подменю «Модель ▸» в трее
# 1. Создать venv (Python 3.12)
C:\Python312\python.exe -m venv .venv
.venv\Scripts\Activate.ps1
# 2. Установить зависимости
pip install -r requirements.txt
# 3. Подготовить модели (один раз; качается ~9 ГБ, на диске остаётся ~5.6 ГБ)
python scripts/prepare_model.py # базовая large-v3
python scripts/prepare_models.py # GigaAM v3/v2 + русские Whisper-finetune
# 4. Запустить
python src/main.py.\build.batРезультат: папка release\TypeCore\ (onedir) с TypeCore.exe и всеми моделями — запускается на любой Windows-машине без установки, полностью офлайн. При наличии NVIDIA GPU Whisper-модели используют CUDA; GigaAM работает на CPU. Без GPU всё переключается на CPU автоматически.
Ctrl+Alt+двойной клик ЛКМ — старт/стоп записи.
Запись останавливается после ~3.5 секунд тишины (Silero VAD) или повторным хоткеем. Лимита по времени нет (max_recording_sec: 0); при долгой диктовке готовые куски распознаются фоном прямо во время записи, поэтому ожидание после «замолчал» почти не растёт с длиной.
Файл typecore.json создаётся рядом с exe при первом запуске. Можно править вручную:
{
"transcriber": {
"active_model": "gigaam-v3",
"language": "ru",
"device": "auto",
"compute_type": "auto",
"beam_size": 5
},
"voice_input": {
"silence_duration_sec": 3.5,
"max_recording_sec": 0,
"incremental_finalize": true,
"auto_enter": true
}
}active_model — id из src/core/models.py (gigaam-v3, gigaam-v2, podlodka-turbo, whisper-large-v3-ru, whisper-turbo-ru, whisper-large-v3). Проще менять из трея.