Ses gecikmesini ölçme

Bu sayfada, giriş ve çıkış gecikmesini ölçmek için yaygın yöntemler açıklanmaktadır.

Çıkış Gecikmesini Ölçme

Çıkış gecikmesini ölçmek için, aşağıda açıklanan, farklı derecelerde doğruluk ve çalıştırma kolaylığına sahip çeşitli teknikler mevcuttur. Ayrıca örnek bir test ortamı için Test devresine bakın.

LED ve osiloskop testi

Bu test, cihazın LED göstergesine göre gecikmeyi ölçer. Üretim aygıtınızda LED yoksa, LED'i bir prototip form faktörü aygıtına kurabilirsiniz. Açık devreli prototip cihazlarda daha da iyi doğruluk için, ışık sensörü gecikmesini atlamak için bir osiloskop probunu doğrudan LED'e bağlayın.

Üretim veya prototip cihazınıza bir LED takamıyorsanız, aşağıdaki geçici çözümleri deneyin:

  • Aynı amaç için bir Genel Amaçlı Giriş/Çıkış (GPIO) pimi kullanın.
  • JTAG veya başka bir hata ayıklama bağlantı noktası kullanın.
  • Ekran arka ışığını kullanın. Arka ışık ihmal edilemez bir gecikmeye sahip olabileceğinden ve hatalı bir gecikme okumasına katkıda bulunabileceğinden bu riskli olabilir.

Bu testi yapmak için:

  1. Ses çıkışıyla aynı anda LED'i periyodik olarak titreşen bir uygulama çalıştırın.

    Not: Yararlı sonuçlar elde etmek için test uygulamasında doğru API'leri kullanmanız çok önemlidir, böylece hızlı ses çıkış yolunu kullanabilirsiniz. Arka plan için azaltılmış gecikme için Tasarım bölümüne bakın.

  2. LED'in yanına bir ışık sensörü yerleştirin.
  3. Çift kanallı bir osiloskobun problarını hem kablolu kulaklık jakına (hat çıkışı) hem de ışık sensörüne bağlayın.
  4. Hat çıkış sinyali ile ışık sensörü sinyalinin gözlemlenmesi arasındaki zaman farkını ölçmek için osiloskopu kullanın.

Zaman farkı, LED gecikmesinin ve ışık sensörü gecikmesinin sıfır olduğu varsayılarak yaklaşık ses çıkışı gecikmesidir. Tipik olarak, LED ve ışık sensörünün her biri, bir milisaniye veya daha az mertebesinde nispeten düşük bir gecikme süresine sahiptir ve bu, göz ardı edilebilecek kadar düşüktür.

Gidiş Dönüş Gecikmesini Ölçme

Gidiş-dönüş gecikmesi , çıkış gecikmesi ile giriş gecikmesinin toplamıdır.

Larsen testi

En kolay gecikme testlerinden biri sesli geri bildirim (Larsen etkisi) testidir. Bu, bir darbe yanıt döngüsünü zamanlayarak birleşik çıkış ve giriş gecikmesinin kaba bir ölçüsünü sağlar. Bu test, testin doğası gereği tek başına ayrıntılı analizler için çok kullanışlı değildir, ancak diğer testleri kalibre etmek ve bir üst sınır oluşturmak için yararlı olabilir.

Bu yöntem, çıkış gecikmesi ve giriş gecikmesi bağımsız olduğunda önemli olan bileşen sürelerini parçalamaz. Dolayısıyla bu yöntem, tek başına kesin çıkış gecikmesi veya giriş gecikmesi değerlerini ölçmek için önerilmez, ancak kaba tahminler oluşturmak için yararlı olabilir.

Cihazdaki hoparlöre giden çıkış gecikmesi, kulaklık konektörüne giden çıkış gecikmesinden önemli ölçüde daha büyük olabilir. Bunun nedeni hoparlör düzeltmesi ve korumasıdır.

Bu testi yapmak için:

  1. Mikrofondan ses yakalayan ve yakalanan verileri hemen hoparlör üzerinden çalan bir uygulama çalıştırın.
  2. Mikrofona kalemle dokunmak gibi harici bir ses oluşturun. Bu gürültü bir geri besleme döngüsü oluşturur. Alternatif olarak, yazılım kullanılarak döngüye bir dürtü enjekte edilebilir.
  3. Çıkış gecikmesi, giriş gecikmesi ve uygulama yükünün toplamını elde etmek için geri besleme darbeleri arasındaki süreyi ölçün.

Larsen testi için bir uygulama edinmek için bazı kaynaklar:

Ses Geri Döngü Donanım Kilidi

Dr. Rick O'Rang ses geri döngü dongle'ı , kulaklık konektörü üzerinden gidiş-dönüş gecikmesini ölçmek için kullanışlıdır. Aşağıdaki görüntü, döngüye bir kez bir dürtü enjekte etmenin ve ardından geri besleme döngüsünün salınmasına izin vermenin sonucunu göstermektedir. Salınımların periyodu, gidiş-dönüş gecikmesidir. Spesifik cihaz, yazılım sürümü ve test koşulları burada belirtilmemiştir. Gösterilen sonuçlar tahmin edilmemelidir.

gidiş-dönüş ölçümü

Şekil 1. Gidiş dönüş ölçümü

Gürültüyü azaltmak için USB kablosunu çıkarmanız ve sabit bir salınım elde etmek için ses seviyesini ayarlamanız gerekebilir.

Giriş Gecikmesini Ölçme

Girdi gecikmesini ölçmek, çıktı gecikmesini ölçmekten daha zordur. Aşağıdaki testler yardımcı olabilir.

Bir yaklaşım, önce LED ve osiloskop yöntemini kullanarak çıkış gecikmesini belirlemek ve ardından çıkış gecikmesi ile giriş gecikmesinin toplamını belirlemek için sesli geri bildirim (Larsen) testini kullanmaktır. Bu iki ölçüm arasındaki fark giriş gecikmesidir.

Başka bir teknik, bir prototip cihazda bir GPIO pini kullanmaktır. Harici olarak, cihaza bir ses sinyali sunarken aynı zamanda bir GPIO girişine darbe gönderin. GPIO sinyalinin ve ses verilerinin varış zamanlarındaki farkı karşılaştıran bir uygulama çalıştırın.

Gecikmeyi Azaltma

Düşük ses gecikmesi elde etmek için sistem genelinde planlamaya, kesinti işlemeye, güç yönetimine ve aygıt sürücüsü tasarımına özel dikkat gösterin. Amacınız, platformun herhangi bir bölümünün bir SCHED_FIFO ses dizisini birkaç milisaniyeden fazla engellemesini engellemektir. Böyle sistematik bir yaklaşımı benimseyerek, ses gecikmesini azaltabilir ve genel olarak daha öngörülebilir performansın yan faydasını elde edebilirsiniz.

Ses yetersizlikleri meydana geldiğinde, genellikle yalnızca belirli koşullar altında veya yalnızca geçişlerde algılanabilir. Yeni uygulamalar başlatarak ve çeşitli ekranlar arasında hızla gezinerek sistemi zorlamayı deneyin. Ancak bazı test koşullarının tasarım hedeflerini aşacak kadar stresli olduğunun farkında olun. Örneğin, bir hata raporu almak sisteme o kadar büyük bir yük bindirir ki, bu durumda bir alt çalıştırma kabul edilebilir.

Düşükleri test ederken:

  • Uygulama işlemcisinden sonra herhangi bir DSP'yi minimum gecikme ekleyecek şekilde yapılandırın.
  • Ekran açık veya kapalı, USB takılı veya takılı değil, WiFi açık veya kapalı, Bluetooth açık veya kapalı ve telefon ve veri radyoları açık veya kapalı gibi farklı koşullar altında testler yapın.
  • Çok aşina olduğunuz ve arkadan gelen sesleri kolayca duyabileceğiniz nispeten sessiz bir müzik seçin.
  • Ekstra hassasiyet için kablolu kulaklık kullanın.
  • "Kulak yorgunluğu" yaşamamak için kendinize mola verin.

Eksik çalıştırmaların altında yatan nedenleri bulduğunuzda, bundan yararlanmak için arabellek sayılarını ve boyutlarını azaltın. Eksik çalıştırmaları analiz etmeden ve yetersiz çalıştırmaların nedenlerini düzeltmeden önce arabellek sayılarını ve boyutlarını azaltmaya yönelik hevesli yaklaşım, yalnızca hüsranla sonuçlanır.

Aletler

systrace , sistem düzeyindeki performans aksaklıklarını teşhis etmek için mükemmel bir genel amaçlı araçtır.

dumpsys media.audio_flinger ayrıca "basit hareketli istatistikler" adı verilen faydalı bir bölüm içerir. Bu, her bir ses karışımı ve G/Ç döngüsü için geçen sürelerin değişkenliğinin bir özetini içerir. İdeal olarak, tüm zaman ölçümleri, ortalama veya nominal döngü süresine yaklaşık olarak eşit olmalıdır. Çok düşük bir minimum veya yüksek bir maksimum görürseniz, bu bir sorunun göstergesidir, muhtemelen yüksek bir programlama gecikmesi veya kesme devre dışı bırakma süresidir. Çıktının kuyruk kısmı, +/- 3 standart sapmanın ötesindeki değişkenliği vurguladığı için özellikle yararlıdır.