Ayak seslerini neden gördükten sonra duyuyorum

Windows sesi ses donanımına varsayılan olarak 10 milisaniyelik tamponlarla veriyor — bu Microsoft'un kendi rakamı — ve geri kalan her şey bunun üstüne biniyor. Her milisaniyenin nereden geldiği, hangilerini kaldırabileceğin ve mikrofonunu açan bir kulaklığın neden dramatik biçimde kötüleştiği.

Windows varsayılan olarak sesi uygulamalarla ses donanımın arasında 10 milisaniyelik tamponlarla taşıyor ve bu bir tahmin değil, Microsoft'un kendi rakamı: "by default all applications in Windows 10 and later will use 10-ms buffers to render and capture audio". Geri kalan her şey — efektler, uzamsal işleme, yeniden örnekleme, kablosuz bir bağlantı — bu tabanın üstüne biniyor. Ayak sesleri sana namlu alevinden sonra geliyorsa sebep bu eklentilerden biri olabilir; aşağıdaki bölümler de onları tek tek ele alıyor.

Bir sesin izlediği yol, Microsoft'un kendi rakamlarıyla

Microsoft'un Low Latency Audio belgesi render yolunu aşamalara ayırıyor ve kendi denetimindeki aşamalara sayı koyuyor. Kısa hâli:

AşamaMaliyetiKaynak
Oyun sesi bir tampona yazar——
Ses motoru okuyup işler, efektleri ses işleme nesnesi (APO) olarak yüklerWindows 10 ve sonrasında 1,3 ms; öncesinde float uygulamalar için ~12 ms, integer uygulamalar için ~6 msMicrosoft
Zincirdeki her efekt kendi payını ekler"The latency of the APOs varies based on the signal processing within the APOs" — sabit bir rakam yokMicrosoft
Motor, sürücünün okuduğu tampona yazarVarsayılan 10 ms; asgari değeri ses sürücüsü bildirirMicrosoft
Sürücü sesi donanıma taşır, donanım da onu yeniden işleyebilirCihaza özel, yayımlanmıyor—
Hoparlör ya da kulaklıkFizik—

O belgeden cepte taşınmaya değer iki gerçek var:

Bunun ilginç bir sonucu var. Microsoft, bir uygulama küçük tampon istediğinde "all applications that use the same endpoint and mode will automatically switch to that small buffer size" diyor; o uygulama kapandığında motor 10 ms'ye dönüyor. Yani aynı çıkışta zaten çalışan düşük gecikmeli bir uygulama, oyunun haberi olmadan oyunun kullandığı tamponu küçültebiliyor.

Sebep 1 — mikrofonunu açan bir Bluetooth kulaklık

Bluetooth kulaklık kullanıyorsan ve üstelik onunla konuşuyorsan bu sebep senin düzeninde var — ve bu folklor değil, belgelenmiş bir şey.

Windows stereo sesi A2DP üzerinden çalıyor, mikrofon için ise Hands-Free Profile kullanıyor — ve ikisini birden yapamıyor. Microsoft'un Bluetooth Classic Audio sayfası, Windows 11'de "an application opens the input (microphone) endpoint" ya da "an application creates an output (playback) stream with the category set to Communications" olduğunda Windows'un A2DP'den HFP'ye geçtiğini yazıyor. HFP 8 kHz (dar bant) ya da 16 kHz (geniş bant) hızında ve mono çalışıyor; ayrıca "Windows automatically resamples audio as needed for the currently selected profile" — yani sesli sohbetin mikrofonu açtığı anda 48 kHz ses çalan oyunun sesi, telefon görüşmesi kalitesindeki bir bağlantıya uyacak şekilde aşağı örnekleniyor.

Bir kulaklığın menülerde gayet iyi, maçta berbat gelmesinin sebebi bu: aynı ses yolu değil.

Ne yapmalı:

  1. Rekabetçi oyun için kablolu bir kulaklık kullan ya da kendi USB alıcısı olan, 2,4 GHz'de çalışan özel bir kablosuz kulaklık al. Bunlar tek bir yolda kalıyor ve profil değiştirmiyor.
  2. Bluetooth'ta kalmak zorundaysan ayrı bir mikrofon kullan; böylece kulaklığın giriş uç noktasını hiçbir şey açmaz ve cihaz A2DP'de kalır.
  3. Gerçekte hangi codec'i aldığına bak. Windows, iki tarafın da desteklediği ilk codec'i seçiyor; sırası aptX Adaptive, AAC, aptX Classic, SBC. Windows sürümüne göre kullanılabilirlik tablosu aynı Microsoft sayfasında.
  4. Cihaz düzgün eşleşmiyorsa ya da uç noktalar tamamen kayboluyorsa bu başka bir arızadır: onarım kartı Bluetooth.

Bluetooth bağlantısı iki yönde de kodlama, iletim ve kod çözme süresi ekliyor; hiçbir üretici de yonga setleri ve adaptörler arasında geçerli olacak tek bir rakam yayımlamıyor — o yüzden biz de bir tane basmayacağız. Üretici belgelerinin ortaya koyduğu şey mekanizma ve yukarıdaki profil değişimi. Karar vermene bu yeter.

Sebep 2 — dönüştürülmek zorunda kalan bir örnekleme hızı

Oyun 48 kHz veriyor ve cihazın 44,1 kHz'e ayarlıysa — ya da tersi — motor yeniden örnekleme yapıyor; bu bir iş ve bedava değil. Windows, uygulamaların "it is important to avoid resampling in the audio engine" durumunda kullanabileceği bir bayrak sunuyor; bu da dönüşümün, Microsoft'un geliştiricilere kaçış yolu verecek kadar gerçek olduğunu gösteriyor.

Ne yapmalı:

  1. Hoparlör simgesine sağ tıkla, Ses ayarları'nı aç, sonra çıkış cihazının özelliklerine gir.
  2. Varsayılan biçimi bul (genelde Gelişmiş altındadır) ve donanımının belgesi başka bir şey söylemiyorsa 24 bit, 48000 Hz yap. Oyunlar da Windows da 48 kHz'de çalışıyor.
  3. Kulaklığının kendi yapılandırma yazılımı varsa onu da aynı hıza ayarla.
  4. Bir şeyler çal ve hâlâ çalıştığını doğrula. Belirli bir uygulama bozulursa ayarı geri al — bu geri alınabilir bir şey ve bir uygulamayı kaybetmeye değmez.

Sebep 3 — açık olduğunu bilmediğin efekt yığını

Yoldaki her efekt bir ses işleme nesnesi ve Microsoft'un kendi ifadesi, gecikmelerinin içlerindeki işlemeye göre değiştiği yönünde. Uzamsal ses, sanal surround, "geliştirmeler", ses düzeyi eşitleme, kulaklık üreticisinin EQ'su ve sesi kapatılmamış ikinci bir çıkış — hepsi aşama ekliyor.

Uzamsal işleme oyuncular için ilginç olanı, çünkü bir hata değil gerçek bir takas: yön tayinini kolaylaştırmak için var ve zincirde bir aşama daha. Buna ilkeyle değil kulağınla karar ver.

Ne yapmalı:

  1. Çıkış cihazının özelliklerini aç ve bir geliştirmeler ya da efektler sekmesi ara. Hepsini kapat ve dinle.
  2. Uzamsal sesi geçici olarak kapat ve düz stereoyla bir tur oyna. Yön kötüleşip zamanlama düzeldiyse kendi takasını öğrenmiş oldun.
  3. Kulaklık yazılımının EQ'sunu ve sanallaştırmasını da aynı şekilde kapat. Teker teker.
  4. Yalnızca yokluğunu hissettiğini geri aç.

Burada doğru cevap yok; olduğunu söyleyen herkes testi senin kulağınla ve senin kulaklığınla çalıştırmamış demektir.

Sebep 4 — özel mod: ne kazandırıyor, neye mal oluyor

Bir uygulama cihazı özel modda (exclusive mode) açabiliyor ve Microsoft bunun tam olarak ne demek olduğunu tarif ediyor: "the data bypasses the audio engine and goes directly from the application to the buffer where the driver reads it from. However, if an application opens an endpoint in exclusive mode, then there's no other application that can use that endpoint to render or capture audio."

Microsoft'un özel mod sayfası daha da açık konuşuyor: "Exclusive-mode streams seize the audio endpoint—all system sounds, notifications, and audio from other applications are silenced."

Aynı sayfa önemli bir güncel şerh de taşıyor. Windows 10'dan beri IAudioClient3, paylaşımlı moddaki bir akışın çok küçük periyotlar kullanmasına izin veriyor; bu da "provides latency comparable to exclusive mode while preserving system sound mixing and interoperability" anlamına geliyor — yani özel mod artık 2010'daki gibi otomatik bir kazanç değil.

Windows'taki onay kutusu — Uygulamaların bu aygıtın öncelikli denetimini ele almasına izin ver — hiçbir şeyi özel moda sokmuyor. Yalnızca isteyen bir uygulamaya izin verilip verilmeyeceğine karar veriyor. Açık bırakmanın hiçbir bedeli yok; kapatmak, bunu isteyen uygulamaların alamamasına yol açıyor.

Sesli sohbete, tarayıcıya ve sistem seslerine de ihtiyaç duyduğun bir oyunda özel mod genellikle yanlış takas. Peşine düşmeden önce bunu yüksek sesle söyle.

w0a burada ne yapıyor, ne yapmıyor

Fix sayfası: değiştirilebilen her şey için bir onarım kartı, her biri Windows varsayılanını geri koyuyor.
Fix sayfası: değiştirilebilen her şey için bir onarım kartı, her biri Windows varsayılanını geri koyuyor.

Yaptığı. Regedit Tweakleri sayfasının SES grubunda tam olarak tek bir madde var: Ses iş parçacığı önceliği (MMCSS). Çoklu ortam zamanlayıcısının Audio görevinin Scheduling Category değerini High yapıyor; yer HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio. Maddenin kendi sayfası Ses tweakleri.

Mekanizma konusunda net olalım. Zamanlama önceliğini yükseltmek tamponu küçültmüyor — ses iş parçacığının, teslim anı geldiğinde çalışıyor olma ihtimalini artırıyor. Yüklü bir makinede bu, geç kalan tamponları ve onlarla gelen bozulmaları ortadan kaldırıyor; bunu duyuyorsun. Boştaki bir makinede kazanılacak bir şey zaten yok.

Yapmadığı. Tampon boyutunu değiştirmiyor — onu ancak uygulamanın kendisi isteyebilir. Örnekleme hızını değiştirmiyor. Ses sürücüsü kurmuyor. Uzamsal sese dokunmuyor. Ve internetteki her ses ayarı listesinde geçen SystemResponsiveness değerine yazmıyor: 10'un altında değer zaten varsayılan gibi davranıyor ve zaten 10'a ayarlı bir makinede 0 yazmanın işleri kötüleştirdiğini ölçtük. Daha eski bir araç bu değeri değiştirdiyse Fix sayfası onu yine de Windows varsayılanına onarabiliyor.

Optimizasyonlar sayfasında buna yakın bir anahtar daha var — Oyun zamanlayıcı profilini Yüksek kategoride tut (MMCSS Games) — ve o da aynı dürüstlüğü hak ediyor. Yalnızca gerçekten bir çoklu ortam zamanlayıcı görevi kaydeden oyunları ve ses yığınlarını etkiliyor. Hiç kayıt yapmayan oyunlar bundan etkilenmiyor ve ürün tam da bu sebeple o anahtar için hiçbir kare hızı iddiasında bulunmuyor.

Ses yığınının kendisi bozuksa — ses kesiliyorsa, bir cihaz ortadan kaybolduysa, eski bir araç zamanlama değerini tuhaf bir yerde bıraktıysa — Ses onarım kartı ses servislerini yeniden başlatıyor ve Windows varsayılanını geri yazıyor. Bu bir tweak değil, onarım; ve değişikliği w0a'nın yapmış olmasına bağlı değil.

Yazılımın burada yapamadıkları

Geriye gerçekten senin olan kısa ve dürüst bir liste kalıyor: taşıma (kabloya karşı kablosuz), örnekleme hızı, efekt yığını ve ses iş parçacığının zamanında zamanlanıp zamanlanmadığı. Bu dördünü elden geçirdiğinde çıkarılabilecek her şeyi çıkarmış olacaksın.

İlgili

Bir tıklamayla pikselin değişmesi arasındaki yaklaşık on iki aşamanın üçü yazılıma ait; kalanı firmware'in, ekranın ve oyunun: Input lag nasıl azaltılır: yazılım neyi kısaltabilir, neyi kısaltamaz

w0a sen istemeden hiçbir Windows ayarını değiştirmez; bir optimizasyon yeni bir değer yazmadan önce eskisini kaydeder. Haber al

Bu sayfa yardımcı oldu mu?

Eksik olan neydi, ya da ne işe yaramadı? Bunların hepsini okuyoruz.

Bu sayfa sorununu çözmediyse bize yaz — hangi makaleyi okuduğunu da ekle, o makaleyi düzeltelim.