voicman
Aplikacja dyktowania w pasku menu macOS, która nagrywa ze skrótu globalnego, transkrybuje przez Apple Speech i wkleja tekst do aktywnej aplikacji.
Po co istnieje
Dyktowanie nie powinno wymagać przełączania się do innego okna. voicman działa w pasku menu bez zwykłego okna głównego, rozpoczyna nagrywanie skrótem globalnym, pokazuje częściową transkrypcję w trakcie mówienia i potrafi wkleić gotowy tekst do aplikacji, która jest z przodu.
Co robi
- Aplikacja w pasku menu, bez zwykłego okna głównego w codziennym użyciu
- Skrót globalny, domyślnie Option + Space
- Krótkie naciśnięcie włącza i wyłącza nagrywanie; przytrzymanie działa jak push-to-talk
- Pływający panel z transkrypcją częściową na żywo
- Ręczna edycja tekstu przed zatwierdzeniem
- Automatyczne wklejenie do aktywnej aplikacji po przyznaniu uprawnienia dostępności
- Zachowanie chroniące schowek, gdy automatyczne wklejanie jest wyłączone
- Onboarding uprawnień mikrofonu, rozpoznawania mowy i dostępności
Stack
- Swift
- SwiftUI
- AppKit
- AVFoundation
- Speech
- Carbon HotKey
Użycie
xcodebuild -project voicman.xcodeproj -scheme voicman \
-configuration Debug -derivedDataPath build build
open build/Build/Products/Debug/voicman.app --args --reset-onboarding
Notatki inżynierskie
Przechwytywanie i transkrypcja są połączone bezpośrednio, a nie przez kolejkę: AVAudioEngine strumieniuje bufory audio do SFSpeechRecognizer, a wyniki częściowe są renderowane w pływającym panelu, gdy nagrywanie nadal trwa. Ustawienia i stan onboardingu żyją w UserDefaults, a przepływ onboardingu można powtórzyć argumentem --reset-onboarding — to także sposób testowania ścieżki uprawnień bez reinstalacji.
Ograniczenia
- Automatyczne wklejanie wymaga uprawnienia dostępności; bez niego aplikacja kopiuje tekst do schowka.
- Repozytorium nie ma jeszcze osobnego celu testowego, a projekt jest skonfigurowany z MACOSX_DEPLOYMENT_TARGET = 26.1.