Repository navigation
Anasayfa
Kağan edited this page Sep 15, 2026
·
2 revisions
TRWhisper, Windows 11 için geliştirilmiş, Superwhisper alternatifi, tamamen yerel (offline) çalışan, sıfır telemetrili ve düşük gecikmeli bir "bas-konuş" (push-to-talk) sesli dikte uygulamasıdır.
Bu wiki sayfasında TRWhisper'ın çalışma mimarisi, kurulum gereksinimleri, yapılandırma seçenekleri ve mevcut geliştirme durumu hakkında detaylı teknik bilgiler yer almaktadır.
- Temel Özellikler
- Sistem Mimarisi ve Akış Diyagramı
- Bileşenler ve Kod Yapısı
- Kurulum ve Başlangıç
- Yapılandırma (
config.json) - Bilinen Sorunlar ve Hata Ayıklama (Troubleshooting)
-
Donanım Seviyesinde Bas-Konuş:
WH_KEYBOARD_LLWin32 API ile sistem genelinde Sağ Ctrl (Right Ctrl) basılı tutulduğunda mikrofon kaydeder, bırakıldığı anda transkripsiyonu başlatır. -
Akıllı Pano Enjeksiyonu (Smart Clipboard Injection):
- O anki Windows pano içeriğini belleğe yedekler.
- Transkript metnini panoya kopyalar.
- Win32
SendInputileCtrl + Vtuşlayarak aktif pencereye anında yapıştırır. - 150 ms sonra panodaki eski içeriğinizi (metin, resim vb.) aynen geri yükler.
-
Gizlilik Odaklı & Yerel Motor: Ses verileri hiçbir buluta gönderilmez. Transkripsiyon doğrudan yerel
whisper.cppmotoru veggml-large-v3-turbo-q5_0.binmodeliyle CPU/GPU üzerinde işlenir. -
Opsiyonel LLM Temizleme: Sağ Ctrl + Sağ Shift kombinasyonuyla bas-konuş yapıldığında, Gemini veya OpenAI API'si üzerinden dolgu kelimeleri (
ııı,eee,şey) elenir ve imla düzeltilerek yapıştırılır. - WPF Hap Arayüzü (Pill Overlay): Ekranın ortasında veya imleç hizasında anlık durum bildiren şık animasyonlu overlay penceresi.
-
Markdown Günlüğü: Başarılı dikteler
%USERPROFILE%\Dictation\YYYY-MM.mddosyasına zaman damgasıyla arşivlenir.
Uygulamanın bas-konuş tetiklendiğindeki uçtan uca veri akışı şöyledir:
sequenceDiagram
autonumber
actor User as Kullanıcı
participant Hook as Win32 Keyboard Hook
participant Audio as WASAPI Recorder (NAudio)
participant Coord as DictationCoordinator
participant STT as Whisper.cpp (CLI)
participant LLM as LLM Cleaner (Opsiyonel)
participant Clip as Clipboard Paster
User->>Hook: Sağ Ctrl Tuşuna Basar
Hook->>Coord: HotkeyDown Event
Coord->>Audio: StartRecording(temp.wav)
Note over Audio: 16kHz 16-bit Mono WAV Kaydı Başlar
User->>Hook: Sağ Ctrl Tuşunu Bırakır
Hook->>Coord: HotkeyUp Event (IsLlmModifierActive?)
Coord->>Audio: StopRecordingAsync()
Audio-->>Coord: temp.wav dosyası hazır
Coord->>STT: TranscribeAsync(temp.wav)
STT-->>Coord: Ham Transkript Metni
opt Eğer Sağ Shift basılı tutulduysa (LLM Temizleme)
Coord->>LLM: CleanTranscriptAsync(Ham Metin)
LLM-->>Coord: Düzeltilmiş / Temiz Metin
end
Coord->>Clip: PasteTextAsync(Nihai Metin)
Note over Clip: 1. Panoyu Yedekle<br/>2. Metni Kopyala & Ctrl+V Yapıştır<br/>3. 150ms Sonra Panoyu Geri Yükle
Clip-->>User: Metin İmleç Alanına Yapıştırıldı