Ne Dediysem Onu Yaz: AI Yeniden Yazması Olmadan Dikte

AI dikteyi yeniden yazar: nitelemeler kaybolur, anlam tersine döner. LLM cilası neden sözlerini değiştirir, Keebye neden birebir kalır?

Teodor Deleanu10 Temmuz 20266 dk okuma

AI destekli dikteye dair, yaşamadan önce çelişkili gelen bir şikâyet var: transkripsiyon gayet iyiydi — asıl işi bozan, transkripsiyondan sonra olan şeydi. Sen bir şey söyledin, araç cilalı, kendinden emin ve biraz farklı bir şey teslim etti. Sessizce düşen bir niteleme. Kaldırılan bir çekince. Asla kurmayacağın bir şeye yeniden yapılandırılmış bir cümle. Ve örüntünün en kötü hâlinde — insanların bir aracı oracıkta bırakmasına yol açan hâlinde — anlam tersine dönüyor. "Testler geçene kadar deploy etme", öteki uçtan etme olmadan, deploy etmeyle ilgili bir talimat olarak çıkıyor.

Sıradan dikte için bu can sıkıcı. Dikteyi gerçekte kullandığım biçim için — Claude Code'a prompt beslemek, Claude Code'u sesinle yönetmek yazısındaki iş akışı — zehir. Bir kodlama agent'ı senin kelimelerini bir şartname olarak alıyor. Dikte aracının seni başka sözcüklerle anlattığını bilmiyor. Talimatı güvenli kılan niteleme ağzınla terminal arasında yumuşatılıp yok edildiyse agent, yumuşatılmış sürümü keyifle yürütecek. Bir prompt'un bütün mesele kesinlik; bir AI yeniden yazma katmanı ise kesinliği kaldırırken sonucu daha kasıtlı gösteren bir makine.

AI dikte araçları söylediğini neden yeniden yazıyor?

Kategori düzeyindeki yanıt, kimsenin konuşmayı çarpıtmak için yola çıktığı değil. "Bu transkripsiyonu temizle" gerçekten cazip bir özellik ve onu inşa etmenin bariz yolu ham transkripti bir dil modelinden geçirmek.

Ham konuşma dağınık — dolgular, yanlış başlangıçlar, tekrar eden kelimeler, eksik noktalama. Bunu toparlaması istenen bir LLM güzel çıktı üretiyor. Sorun şu ki bir dil modeli, "um"u kaldıran bir insan editörün düzenlediği anlamda düzenlemiyor. Yeniden üretiyor. Çıktı, modelin senin girdinin iyi bir sürümü saydığı yeni bir metin ve niyetinin sızdığı yer tam da "iyi". Yardımseverliğe ve akıcılığa göre eğitilmiş modellerin fikirleri var: çekinceler gürültü gibi görünüyor, nitelemeler dağınıklık gibi görünüyor, tuhaf ama kesin bir ifade iyileştirilecek bir şey gibi görünüyor. Çoğu zaman yeniden yazma zararsız. Ama olasılıksal ve çıktıya bakarak hangi cümlelerin transkribe edildiğini, hangilerinin kurgulandığını ayırt edemiyorsun. Cila tekdüze; sadakat değil.

LLM cila hatlarının derin sorunu bu: sessizce ve kendinden emin biçimde başarısız oluyorlar. Seni yanlış duyan bir konuşma tanıyıcı genellikle gözle görülür biçimde yanlış bir şey üretiyor. Sana ihanet eden bir yeniden yazma katmanı ise gözle görülür biçimde doğru bir şey üretiyor — dilbilgisel, akla yatkın, senin sesini giymiş — ki tersine dönmüş "deploy etme"nin yakalanmak yerine gönderilmesinin nedeni tam olarak bu.

Varsayılan olarak birebir

Keebye'ın tutumu basit: konuşma-metin modeli ne duyduysa imlecine düşen o. Varsayılan olarak, transkripsiyon ile terminalin arasında senin daha iyi bir sürümünü kuran hiçbir dil modeli oturmuyor — varsayılan cila aşaması kısa bir belirlenimci kurallar listesi ve o kadar.

Bu bilinçli bir bahis ve vibecoding kullanım durumundan geliyor. Dikten kodlama agent'larının kontrol kanalıysa aracın işi taşımak, yazarlık etmek değil. Yazar sensin; izleyici agent; dikte katmanının hiçbir fikri olmamalı. Prompt'ları yazmak yerine söylemekten ibaret o iş akışı AI prompt'ları için sesli dikte sayfasında anlatılıyor.

Keebye'da bir LLM cilası var — ona geleceğim — ama isteğe bağlı, tamamen makinende çalışıyor ve yaygın kayma, kontrolsüz genişleme ve tekrar biçimlerini reddetmek üzere tasarlanmış bir koruma altında çalışıyor. Çıktı o denetimden geçemezse Keebye kurallara geri düşüyor. Varsayılan kurallar olarak kalıyor.

Peki temizlik gerçekte ne yapıyor?

Birebir olmak ham olmak zorunda değil. Keebye isteğe bağlı bir temizlik geçişiyle geliyor — iyileştirme, varsayılan olarak açık ve uygulama bazında geçersiz kılınabilir — ama bir model değil kural tabanlı ve ne yaptığının tam listesi tek bir paragrafa sığıyor:

Tek başına duran dolgu kelimelerini ayıklıyor (um, uh, erm, you know). Hemen ardışık kelime tekrarlarını birleştiriyor — "the the", "the" oluyor. Boşlukları sıkıştırıyor. İlk harfi büyütüyor ve sen bitirmediysen sona bir nokta ekliyor. Bütün liste bu. Kurallar belirlenimci ve dar kapsamlı; bilerek cümlecik sıralamasını değiştirmiyor, olumsuzlamaları kaldırmıyor ya da eşanlamlı yerine koymuyor.

Temizlik çalışmadan önce sözlük değiştirmelerin uygulanıyor — konuşma modellerinin bozduğu jargon ve özel isimler için kullanıcı tanımlı yerine koymalar; böylece "pnpm" ve modül adların kod tabanının yazdığı gibi geliyor.

Ve kural tabanlı geçiş bile istediğinden fazla müdahaleyse iyileştirmeyi kapat; Keebye ham konuşma modeli transkriptini girer: dolgular, tekrarlar, hepsi. Bazı bağlamlarda — birinden alıntı yaparken, sondaki noktanın işleri bozduğu bir alana dikte ederken — ham transkript daha iyi tercih ve uygulama bazında geçersiz kılma onu seçmene izin veriyor.

İsteğe bağlı cila ve etrafındaki sadakat koruması

Şimdi geleceğime söz verdiğim LLM. Daha akıllı bir temizlik isteyenler için Keebye isteğe bağlı bir cila modu sunuyor (polish_mode, local_llm olarak ayarlanmış): llama.cpp üzerinden cihaz üzerinde çalışan, Metal ile hızlandırılmış küçük bir Qwen3 modeli, hiçbir yere hiçbir şey gönderilmiyor. Talimatları cilanın dar sürümü — noktalama ve büyük harfi düzelt, dolguları kaldır, kullanıcının tam kelimelerini, dilini ve anlamını koru, kodu ve dosya adlarını birebir sakla. Üretim belirlenimci (açgözlü örnekleme, aynı girdi → aynı çıktı) ve üst sınırlı; model iki saniyelik süreyi aşarak takılırsa çıktısı terk ediliyor.

Ama talimatlar birer umut ve bu yazının var olma sebebi, umutların garanti olmaması. Bu yüzden LLM ile cilalanmış her sonuç, imlecine dokunabilmeden önce bir sadakat korumasından geçiyor. Çıktı, özgün transkripsiyonun token'larının en az %50'sini korumak zorunda. Şişmemeli — özgün uzunluğun kabaca iki katını (artı dört token) aşan her şey eleniyor. Kontrolsüz tekrar tespit ediliyor. Cilalanmış sonuç bu denetimlerden birinde kalırsa Keebye onu atıyor ve bunun yerine kural tabanlı temizliğe geri düşüyor.

Bu koruma; ağır token kaybını, kontrolsüz genişlemeyi ve tekrarı, modelin çıktısı kuralla temizlenmiş transkriptin yerini alamadan yakalıyor. Bu bir sezgisel yöntem, anlamsal bir kanıt değil: kısa bir yeniden yazma ya da değişmiş bir olumsuzlama yine de eşiklerinden geçebilir. Bir niteleme kaymayı göze alamıyorsa AI cilasını kapalı tut ve girilen metni göndermeden önce gözden geçir.

Dürüst sınırlar

Birebir birebir demek. Gevezelik edersen gevezeliğin düşer — isteğe bağlı cila bile kompozisyona değil temizliğe yönlendirilmiş ve korumalıdır, yani Keebye başıboş bir düşünceyi net bir talimata dönüştürmez. Ne demek istediğini söyleme disiplini sende kalır.

Kural tabanlı temizlik bilerek aptal. "um"u kaldırır; dilbilgisini düzeltmez, devrik ve uzayıp giden bir cümleyi yeniden kurmaz ya da kendinle çeliştiğini fark etmez. Daha akıllı olan her şey, bu tasarımın kaçınmak için var olduğu yargı kararlarını geri getirirdi.

Ve sadakat, yeniden yazmaya karşı koruyor, yanlış tanımaya karşı değil. Konuşma modeli "cache"i "cash" diye duyarsa o hata sadakatle korunur — korumanın ne demek istediğine dair hiçbir fikri yok, yalnızca ne transkribe edildiğini biliyor. Birebir dikte, güven sınırını STT modeline taşır; onu ortadan kaldırmaz. (İlgili: sorunun model tamamen yanlış dilde transkribe ediyorsa bu, farklı bir çözümü olan farklı bir hata — dikte dilini sabitle.)

Son olarak kategori çerçevesi: AI cilası bir dolandırıcılık değil ve pek çok kullanıcı gerçekten konuştuğundan daha akıcı okunan çıktıyı tercih ediyor. Sen oysan başka araçlar buna güzelce yaslanıyor ve karşılaştırmalarımız bunu dürüstçe söylüyor — Keebye vs Wispr Flow ve Keebye vs Superwhisper sayfalarının ikisinde de gerçek bir "öteki araç ne zaman daha iyi uyar" bölümü var.

Taşımak, yazarlık etmek değil

Keebye'ın sunduğu anlaşma bilerek dar: sen konuşuyorsun ve hafifçe temizlenmiş bir transkript imlecinin olduğu yere düşüyor. O kelimeler, onları birebir uygulayacak bir agent'a prompt olduğunda darlık bir özellik. Bir dikte aracının bir geliştiriciye yapabileceği en pahalı şey bir yazım hatası değil. Hiç söylemediğin, akıcı bir cümle.

Keebye macOS için erken erişimde. Ücretsiz denemeni aşağıdan başlat, "Testler geçene kadar deploy etme" diye dikte et ve o kısıtın tam olarak temizlikten sağ çıkıp çıkmadığına bak. Bütün ürün o testte.

Kaymayı göze alamayacağın talimatı test et

Ücretsiz denemeni başlat ve kritik bir niteleme içeren bir prompt dikte et — özellikle bir 'yapma' — sonra ne geldiğini incele.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Okumaya devam et