Skip to content

teoplaydor/typecore-voice-input

Repository files navigation

TypeCore

Портативное 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

Сборка портативного exe

.\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). Проще менять из трея.

About

Offline Russian voice-to-text for Windows with hot-swappable ASR models (Whisper/CTranslate2 + GigaAM/onnxruntime), real-time pipeline, system-wide text insertion. Python.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors