Windows kullanıcılarının en büyük sorunlarından biri, sistem seslerini kaydetmek ve tercüme etmek için karmaşık ayarlara ihtiyaç duymalarıydı. Sanal ses kabloları, sanal mikrofonlar ve üçüncü parti botlar, çoğu uygulamanın standart bir çözüm sunamamasının nedeniydi. Ancak Voxis adlı yeni bir açık kaynaklı uygulama, bu problemi tamamen ortadan kaldırıyor. Uygulama, sistemdeki tüm sesleri — oyunlardan çağrı seslerine kadar — anında kaydederek tercüme ediyor ve kullanıcıya birkaç saniye gecikmeyle geri çalıyor. Üstelik bunu yaparken hiçbir ek yazılım ya da sanal cihaz yüklemesi gerektirmiyor.
Sıfır Kurulum ve Sürücü Gereksinimi Olmadan Çalışma
En popüler ses kaydetme araçları genellikle VB-CABLE veya VoiceMeeter gibi sanal ses kabloları kurulumunu zorunlu kılıyordu. Bu da hem zaman kaybına hem de sistemde yer kaplamaya neden oluyordu. Voxis ise bu sorunu tamamen ortadan kaldırıyor. Geliştiricisi, uygulamanın sürücü yükleme gerektirmemesi ve sıfır kurulum ile çalışabilmesi için özel bir yaklaşıma başvurmuş.
Uygulama, Windows’un ApplicationLoopback API’sini kullanarak sistemdeki tüm sesleri kaydediyor. Bu API, özellikle Windows 10 sürüm 2004 ve üstünde destekleniyor ve kullanıcıya ait olan tüm sesleri, uygulamanın kendi sesini hariç tutarak kaydetme imkanı sunuyor. Bu sayede, kullanıcıların sesleri kesintisiz bir şekilde tercüme edilirken, orijinal ses akışı da devam ediyor.
Kendi Sesini Kaydetme Sorununu Çözmek
Birçok ses kaydetme uygulaması, kendi sesini de kaydederek bir kısır döngüye neden oluyordu. Örneğin, tercüme edilen sesi tekrar sistem sesine gönderirken, uygulama bu sesi de kaydediyor ve tekrar tercüme edilmesine yol açıyordu. Voxis, bu problemi kendi sesini hariç tutarak çözüyor.
Uygulama, ProcessLoopbackMode.EXCLUDE_TARGET_PROCESS_TREE parametresini kullanarak, yalnızca hedef uygulamanın sesini değil, aynı zamanda uygulamanın kendi sesini de kaydetme listesinden çıkarıyor. Bu sayede, tercüme edilen sesler sistemde yankılanmadan, temiz bir şekilde geri çalınıyor.
Gerçek Zamanlı Ses Yakalama için Optimize Edilmiş Mimarisi
Ses yakalama işlemi, gerçek zamanlı çalışması gereken bir süreçtir. Eğer yakalama işlemi gecikirse, kullanıcı deneyimi olumsuz etkilenir. Voxis’in geliştiricisi, bu sorunu iki ayrı iş parçacığı ve sınırlı bir kuyruk sistemi kullanarak çözmüş.
- Yakalama iş parçacığı: Sadece ses verilerini yakalar ve bunları bellekteki bir kuyruğa ekler. Bu iş parçacığı, ses verisini işlemek ya da tercüme etmekle uğraşmaz.
- İşlemci iş parçacığı: Yakalanan ses verilerini kuyruktan alır ve tercüme işlemine tabi tutar. Eğer işlemci yavaşlarsa, kuyruktaki en eski veriler otomatik olarak atılır ve yeni veriler işlenmeye devam eder.
Bu yaklaşım, yakalama iş parçacığının hiçbir zaman bloklanmamasını ve ses verisinin kaybolmamasını sağlıyor. Ayrıca, bellek yönetimi ve çöp toplama işlemlerinin neden olduğu gecikmeler de bu sayede minimize ediliyor.
import collections
# Sınırlı boyutlu kuyruk oluşturma
self._queue = collections.deque(maxlen=64) # Yaklaşık bir paket boyutuna denk geliyor
# Yakalama iş parçacığı: Veriyi kuyruğa ekler, bloklama yapmaz
self._queue.append(yakalanan_veri)Windows’un Ses Düzeyini Kontrol Etmek için Gizli API
Tercüme edilen sesin orijinal sesle çatışmasını önlemek için birçok uygulama, ses karıştırma yöntemine başvuruyordu. Ancak bu yaklaşım, hem karmaşık hem de sistem genelinde performans kayıplarına neden olabiliyordu. Voxis, bunun yerine Windows’un oturum ses düzeyi API’sini kullanarak sorunu çözüyor.
Uygulama, ISimpleAudioVolume arayüzünü kullanarak, sadece ilgili uygulamanın ses düzeyini geçici olarak düşürüyor. Tercüme bittiğinde ise ses düzeyi eski haline getiriliyor. Bu sayede, orijinal ses akışı kesintisiz devam ederken, tercüme edilen sesin net bir şekilde duyulması sağlanıyor.
Bu yöntem, hem ek ses karıştırma işlemlerine gerek bırakmıyor hem de sistem genelinde ek yük oluşturmamış oluyor.
Geliştirme Sürecindeki Zorluklar ve Çözümleri
Voxis’in geliştirilme sürecinde birçok teknik engelle karşılaşılmış. Bunların başında, Windows’un COM nesneleriyle çalışırken ortaya çıkan hatalardı. Özellikle ActivateAudioInterfaceAsync işlevi, doğru şekilde yapılandırılmadığı takdirde çalışmıyordu.
Geliştirici, bu sorunu IAgileObject arayüzünü kullanarak çözmüş. Bu arayüz, COM nesnelerinin farklı iş parçacıklarından çağrılabilmesini sağlıyor ve uygulamanın düzgün bir şekilde çalışmasını mümkün kılıyor.
from comtypes import COMObject
class _Handler(COMObject):
_com_interfaces_ = [IActivateAudioInterfaceCompletionHandler, IAgileObject]Başka bir zorluk da, ses formatının doğru şekilde ayarlanmasıydı. Voxis, sesi 16 kHz mono 16-bit PCM formatında yakalıyor ve bu formatın tercüme modeli tarafından doğrudan desteklenmesini sağlıyor. Bu sayede, ses verisinin yeniden örneklenmesine gerek kalmıyor ve işlem daha hızlı gerçekleşiyor.
Gelecekteki Gelişmeler ve Topluluk Katkıları
Voxis henüz geliştirme aşamasında olsa da, açık kaynaklı yapısı sayesinde geliştiricilerin ve kullanıcıların katkılarına açık. Gelecekte, uygulamanın farklı dillerdeki sesleri desteklemesi ve sistem performansını daha da optimize etmesi planlanıyor.
Bu proje, yalnızca ses tercüme teknolojisinde değil, aynı zamanda Windows ses yakalama ve işleme yöntemlerinde de yeni bir standart oluşturabilir. Geliştiricilerin bu yaklaşımdan ilham alarak daha yenilikçi çözümler üretmesi bekleniyor.
Yapay zeka özeti
Sanal kablo ya da sürücü yüklemesi gerektirmeyen Voxis uygulaması, Windows sistem seslerini anında tercüme ediyor. Geliştirme sürecindeki teknik detaylar ve çözümler burada.