Говори — текст в любом окне
Push-to-talk для Windows
Spotti Voice — десктопный голосовой ввод для Windows. Зажми горячую клавишу, говори — распознанный текст вставляется в активное поле (Discord, браузер, IDE, блокнот).
| Overlay | Капсула над треем — статус записи |
| Tray | Быстрый доступ к настройкам и выходу |
| Onboarding | Один раз при первом старте — RPG-чат с пиксельным Спотти |
| Установщик | Один файл SpottiVoice-Setup.exe (~0.5 MB), остальное с сервера |
const SpottiVoice = {
platform: "Windows 10+",
hotkey: { default: "Ctrl + Shift + Пробел", mode: "toggle PTT" },
modes: {
local: { network: "offline", language: "русский", engine: "whisper.cpp" },
cloud: { network: "TLS", auth: "Discord OAuth", stt: "Spotti Servers" },
},
stack: {
shell: ["Electron", "React", "anime.js"],
engine: ["Python", "FastAPI", "sounddevice"],
installer: ["NSIS thin bootstrap", "Electron setup wizard"],
},
security: {
engineBind: "127.0.0.1:9777",
electron: "contextIsolation + narrow preload",
tokens: "Windows DPAPI",
},
};| Режим | Сеть | Языки | Вход |
|---|---|---|---|
| Локально | Офлайн после модели (~142 MB) | Русский | Не нужен |
| Облако | TLS на Spotti Servers | Много (auto) | Discord |
flowchart LR
subgraph pc [Ваш ПК]
Pill[Pill overlay]
Engine[Python engine :9777]
Tray[Tray + Settings]
end
subgraph cloud [Spotti Servers]
OAuth[Discord OAuth]
STT[STT proxy]
end
Pill --> Engine
Tray --> Engine
Engine -->|Облако| OAuth
Engine -->|audio| STT
Engine -->|inject| Focus[Focused app]
- Скачайте
SpottiVoice-Setup.exeиз Releases. - Запустите установщик — мастер скачает приложение с сервера.
- При первом запуске откроются настройки и обучение со Спотти (один раз).
- Облако: переключатель вверху → Аккаунт → Войти через Discord.
- Локально: при первом PTT скачается модель whisper.
| Шаг | Действие |
|---|---|
| Запись | Ctrl+Shift+Пробел (по умолчанию) — toggle PTT |
| Настройки | Иконка в трее → Setup |
| Горячая клавиша | Настройки → Горячая клавиша |
Требования: Windows 10+, Python 3.11+, Node 20+, NSIS 3.x.
cd voice-pill
build-exe.bat
build-setup.bat| Скрипт | Результат |
|---|---|
build-exe.bat |
Portable payload в dist/ |
build-setup.bat |
dist-setup/SpottiVoice-Setup.exe |
Разработка без установщика:
cd voice-pill
run.batПодробнее: voice-pill/README.md · voice-pill/RELEASE.md
- Движок слушает только
127.0.0.1:9777 - Electron:
contextIsolation: true, узкий preload-мост - OAuth:
spotti-voice://auth/callback(регистрирует установщик)
[!CAUTION] Не коммитьте
.env. См. SECURITY.md
На каждый push/PR в main:
- Secret scan
pytest tests/voice_pill/- Сборка web UI
pytest tests/voice_pill/ -qsequenceDiagram
participant User
participant Electron
participant Engine as voice_pill engine
participant Server as Spotti API
User->>Electron: PTT hotkey
Electron->>Engine: HTTP localhost:9777
alt Cloud mode
Engine->>Server: STT + Bearer token
else Local mode
Engine->>Engine: whisper.cpp
end
Engine->>User: inject text
| Репозиторий | Роль |
|---|---|
| Spotti-Voice (этот) | Публичный клиент + установщик |
| Spotti (приватный) | Сервер OAuth/STT, монорепо |
Экспорт из монорепо:
.\scripts\migrate\export-voice-public.ps1 -OutDir ..\Spotti-Voice