Ses gecikmesini ölçün

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

Çıkış gecikmesini ölçün

Çıkış gecikmesini ölçmek için aşağıda açıklanan, değişen doğruluk derecelerine ve çalışma 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 cihazınızda bir LED yoksa LED'i prototip form faktörlü bir cihaza takabilirsiniz. Açık devreli prototip cihazlarda daha da iyi doğruluk elde etmek için, ışık sensörü gecikmesini atlamak üzere bir osiloskop probunu doğrudan LED'e bağlayın.

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

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

Bu testi gerçekleştirmek için:

  1. Ses çıkışı verirken aynı zamanda LED'i periyodik olarak titreten bir uygulamayı ç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 planda azaltılmış gecikme süresi için Tasarım'a bakın.

  2. LED'in yanına bir ışık sensörü yerleştirin.
  3. Çift kanallı bir osiloskopun 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 düzeyinde nispeten düşük bir gecikme süresine sahiptir; bu, göz ardı edilecek kadar yeterince düşüktür.

Gidiş dönüş gecikmesini ölçün

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

Larsen testi

En kolay gecikme testlerinden biri sesli geri bildirim (Larsen etkisi) testidir. Bu, bir dürtü yanıt döngüsünü zamanlayarak birleşik çıktı ve giriş gecikmesinin kaba bir ölçümünü sağlar. Bu test, testin doğası gereği tek başına detaylı analiz için pek kullanışlı değildir ancak diğer testlerin kalibre edilmesinde ve üst sınırın oluşturulmasında yararlı olabilir.

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

Cihaz hoparlörüne verilen çıkış gecikmesi, kulaklık konektörüne verilen çıkış gecikmesinden önemli ölçüde daha uzun olabilir. Bunun nedeni hoparlör düzeltmesi ve korumasıdır.

Bu testi gerçekleştirmek için:

  1. Mikrofondan ses yakalayan ve yakalanan verileri anında hoparlörden çalan bir uygulamayı çalıştırın.
  2. Mikrofonla kaleme dokunmak gibi harici bir ses yaratın. Bu gürültü bir geri bildirim döngüsü oluşturur. Alternatif olarak yazılım kullanılarak döngüye bir darbe enjekte edilebilir.
  3. Çıkış gecikmesi, giriş gecikmesi ve uygulama yükünün toplamını elde etmek için geri bildirim darbeleri arasındaki süreyi ölçün.

Larsen testi için bir uygulama edinmeye yönelik bazı kaynaklar:

Ses geri döngü dongle'ı

Dr. Rick O'Rang ses geridöngü donanım kilidi, kulaklık konektörü üzerinden gidiş-dönüş gecikmesini ölçmek için kullanışlıdır. Aşağıdaki resim, döngüye bir kez bir darbe 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. Belirli 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çün

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

Yaklaşımlardan biri, ilk olarak LED ve osiloskop yöntemini kullanarak çıkış gecikmesini belirlemek ve ardından çıkış gecikmesi ile giriş gecikmesinin toplamını belirlemek için ses geri bildirimi (Larsen) testini kullanmaktır. Bu iki ölçüm arasındaki fark giriş gecikmesidir.

Diğer bir teknik ise prototip cihazda GPIO pini kullanmaktır. Harici olarak, cihaza bir ses sinyali sunarken aynı zamanda bir GPIO girişine darbe verin. GPIO sinyalinin ve ses verilerinin varış zamanlarındaki farkı karşılaştıran bir uygulama çalıştırın.

Gecikmeyi azaltın

Düşük ses gecikmesi elde etmek için sistem genelinde zamanlamaya, kesinti yönetimine, güç yönetimine ve aygıt sürücüsü tasarımına özellikle dikkat edin. Amacınız platformun herhangi bir bölümünün SCHED_FIFO ses akışını birkaç milisaniyeden fazla engellemesini önlemektir. Böyle sistematik bir yaklaşımı benimseyerek ses gecikmesini azaltabilir ve genel olarak daha öngörülebilir performansın yan avantajlarından yararlanabilirsiniz.

Sesin yetersiz çalışması, meydana geldiğinde genellikle yalnızca belirli koşullar altında veya yalnızca geçişlerde tespit edilebilir. Yeni uygulamaları başlatarak ve çeşitli ekranlar arasında hızlıca gezinerek sistemi zorlamayı deneyin. Ancak bazı test koşullarının tasarım hedeflerini aşacak kadar stresli olduğunu unutmayın. Örneğin, bir hata raporu almak sisteme o kadar büyük bir yük getirir ki, bu durumda bir yetersiz çalışmanın olması kabul edilebilir.

Alt koşu testi yaparken:

  • Uygulama işlemcisinden sonra herhangi bir DSP'yi minimum gecikme sağlayacak şekilde yapılandırın.
  • Testleri ekranın açık veya kapalı olması, USB'nin takılı olması veya çıkarılması, WiFi'nin açık veya kapalı olması, Bluetooth'un açık veya kapalı olması ve telefon ve veri radyolarının açık veya kapalı olması gibi farklı koşullar altında çalıştırın.
  • Çok aşina olduğunuz ve alt 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.

Yetersiz çalışmanın altında yatan nedenleri bulduktan sonra, bundan yararlanmak için arabellek sayılarını ve boyutlarını azaltın. Yetersiz çalışmayı analiz etmeden ve yetersiz çalışmanın nedenlerini düzeltmeden önce tampon sayılarını ve boyutlarını azaltmaya yönelik hevesli yaklaşım yalnızca hayal kırıklığıyla 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 çıktısı ayrıca "basit taşıma istatistikleri" adı verilen yararlı bir bölüm içerir. Bu, her 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 çevrim süresine yaklaşık olarak eşit olmalıdır. Çok düşük bir minimum veya yüksek bir maksimum görürseniz bu, muhtemelen yüksek planlama gecikmesi veya kesinti devre dışı bırakma süresi gibi bir sorunun göstergesidir. Çıktının kuyruk kısmı, +/- 3 standart sapmanın ötesindeki değişkenliği vurguladığı için özellikle faydalıdır.