Преминете към основното съдържание

Преглед на клиента

Dictaro Client е десктоп приложение, написано на Rust, което превръща говор в текст и го инжектира директно в активното приложение на потребителя. Основната платформа е Windows, с частична поддръжка на macOS (в процес на разработка).

Основни технологии

ТехнологияРоля
Rust (edition 2024)Основен език
egui / eframe 0.31GUI framework (OpenGL на Windows, Metal/OpenGL на macOS)
tokioАсинхронен runtime за мрежови операции
tokio-tungsteniteWebSocket клиент за комуникация с ASR сървъра
wasapi 0.22Аудио захващане на Windows
windows-sys 0.59Win32 API извиквания (hotkeys, text injection, tray)
clap 4.5CLI парсер за headless режим
rust-i18n 3Интернационализация (25 езика)
keyring 3Credential Manager (Windows/macOS) за JWT и API ключове
hound 3.5WAV кодиране/декодиране

Архитектурна диаграма

Модел на нишките

Приложението работи с няколко нишки, координирани чрез crossbeam-channel и Arc<AtomicBool>:

  • Main thread -- egui event loop, UI рендериране, координация
  • hotkey-poll -- polling на GetAsyncKeyState на всеки 20ms
  • audio-capture -- WASAPI capture loop с event-based wake
  • transcription -- собствен tokio runtime за WebSocket комуникация

Жизнен цикъл на приложението

Single-Instance механизъм

На Windows се използва именуван mutex (Global\DictaroSingleInstance). На macOS/Linux -- файлов lock чрез fs2::FileExt::try_lock_exclusive. При опит за стартиране на втора инстанция, потребителят вижда MessageBox (Windows) или конзолно съобщение.

Вход в приложението

Файлът main.rs определя режима на работа:

  1. CLI режим -- ако има подкоманда (transcribe, login, status), изпълнява я и приключва
  2. GUI режим -- стартира egui overlay, tray icon, hotkey listener и transcription thread

Конзолният прозорец е скрит в release builds (windows_subsystem = "windows"), но се преоткрива чрез AttachConsole ако има CLI аргументи.