Ukur latensi audio

Halaman ini menjelaskan metode umum untuk mengukur latensi input dan output.

Ukur latensi keluaran

Ada beberapa teknik yang tersedia untuk mengukur latensi keluaran, dengan berbagai tingkat akurasi dan kemudahan pengoperasian, dijelaskan di bawah. Lihat juga rangkaian Pengujian untuk contoh lingkungan pengujian.

Tes LED dan osiloskop

Tes ini mengukur latensi sehubungan dengan indikator LED perangkat. Jika perangkat produksi Anda tidak memiliki LED, Anda dapat memasang LED pada perangkat faktor bentuk prototipe. Untuk akurasi yang lebih baik lagi pada perangkat prototipe dengan sirkuit terbuka, sambungkan satu probe osiloskop ke LED secara langsung untuk melewati latensi sensor cahaya.

Jika Anda tidak dapat memasang LED pada perangkat produksi atau prototipe Anda, coba solusi berikut:

  • Gunakan pin General Purpose Input/Output (GPIO) untuk tujuan yang sama.
  • Gunakan JTAG atau port debugging lainnya.
  • Gunakan lampu latar layar. Hal ini mungkin berisiko karena lampu latar mungkin memiliki latensi yang tidak dapat diabaikan, dan dapat menyebabkan pembacaan latensi yang tidak akurat.

Untuk melakukan tes ini:

  1. Jalankan aplikasi yang secara berkala menyalakan LED pada saat yang sama mengeluarkan audio.

    Catatan: Untuk mendapatkan hasil yang bermanfaat, penting untuk menggunakan API yang benar di aplikasi pengujian sehingga Anda menggunakan jalur output audio yang cepat. Lihat Desain untuk mengurangi latensi untuk latar belakang.

  2. Tempatkan sensor cahaya di sebelah LED.
  3. Hubungkan probe osiloskop saluran ganda ke jack headphone berkabel (output saluran) dan sensor cahaya.
  4. Gunakan osiloskop untuk mengukur perbedaan waktu antara pengamatan sinyal keluaran saluran versus sinyal sensor cahaya.

Perbedaan waktu merupakan perkiraan latensi keluaran audio, dengan asumsi latensi LED dan latensi sensor cahaya sama-sama nol. Biasanya, LED dan sensor cahaya masing-masing memiliki latensi yang relatif rendah sekitar satu milidetik atau kurang, yang cukup rendah untuk diabaikan.

Ukur latensi bolak-balik

Latensi bolak-balik adalah jumlah latensi keluaran dan latensi masukan.

Tes Larsen

Salah satu tes latensi yang paling mudah adalah tes umpan balik audio (efek Larsen). Ini memberikan ukuran kasar dari gabungan latensi keluaran dan masukan dengan menentukan waktu loop respons impuls. Pengujian ini tidak terlalu berguna untuk analisis terperinci karena sifat pengujiannya, namun dapat berguna untuk mengkalibrasi pengujian lainnya, dan untuk menetapkan batas atas.

Metode ini tidak membagi waktu komponen, yang penting ketika latensi keluaran dan latensi masukan bersifat independen. Jadi metode ini tidak disarankan untuk mengukur latensi keluaran atau nilai latensi masukan secara tepat secara terpisah, namun mungkin berguna untuk menetapkan perkiraan kasar.

Latensi keluaran ke speaker pada perangkat bisa jauh lebih besar dibandingkan latensi keluaran ke konektor headset. Hal ini disebabkan oleh koreksi dan perlindungan speaker.

Untuk melakukan tes ini:

  1. Jalankan aplikasi yang menangkap audio dari mikrofon dan segera memutar kembali data yang diambil melalui speaker.
  2. Ciptakan suara secara eksternal, seperti mengetukkan pensil pada mikrofon. Kebisingan ini menghasilkan putaran umpan balik. Alternatifnya, seseorang dapat memasukkan impuls ke dalam loop menggunakan perangkat lunak.
  3. Ukur waktu antara pulsa umpan balik untuk mendapatkan jumlah latensi keluaran, latensi masukan, dan overhead aplikasi.

Berikut adalah beberapa sumber untuk mendapatkan aplikasi untuk tes Larsen:

Dongle putaran balik audio

Dongle loopback audio Dr. Rick O'Rang berguna untuk mengukur latensi bolak-balik melalui konektor headset. Gambar di bawah menunjukkan hasil menyuntikkan impuls ke dalam loop satu kali, dan kemudian membiarkan loop umpan balik berosilasi. Periode osilasi adalah latensi bolak-balik. Perangkat spesifik, rilis perangkat lunak, dan kondisi pengujian tidak ditentukan di sini. Hasil yang ditampilkan tidak boleh diekstrapolasi.

pengukuran bolak-balik

Gambar 1. Pengukuran pulang pergi

Anda mungkin perlu melepas kabel USB untuk mengurangi kebisingan, dan menyesuaikan level volume untuk mendapatkan osilasi yang stabil.

Ukur latensi masukan

Latensi masukan lebih sulit diukur dibandingkan latensi keluaran. Tes berikut mungkin bisa membantu.

Salah satu pendekatannya adalah dengan terlebih dahulu menentukan latensi keluaran menggunakan metode LED dan osiloskop, lalu menggunakan uji umpan balik audio (Larsen) untuk menentukan jumlah latensi keluaran dan latensi masukan. Perbedaan antara kedua pengukuran ini adalah latensi masukan.

Teknik lainnya adalah dengan menggunakan pin GPIO pada perangkat prototipe. Secara eksternal, berikan input GPIO pada saat yang sama saat Anda menyajikan sinyal audio ke perangkat. Jalankan aplikasi yang membandingkan perbedaan waktu kedatangan sinyal GPIO dan data audio.

Kurangi latensi

Untuk mencapai latensi audio yang rendah, berikan perhatian khusus pada seluruh sistem pada penjadwalan, penanganan interupsi, manajemen daya, dan desain driver perangkat. Tujuan Anda adalah mencegah bagian mana pun dari platform memblokir rangkaian audio SCHED_FIFO selama lebih dari beberapa milidetik. Dengan mengadopsi pendekatan sistematis seperti itu, Anda dapat mengurangi latensi audio dan mendapatkan manfaat sampingan berupa performa yang lebih dapat diprediksi secara keseluruhan.

Audio underruns, jika terjadi, sering kali hanya dapat dideteksi dalam kondisi tertentu atau hanya pada transisi. Coba tekankan sistem dengan meluncurkan aplikasi baru dan menggulir cepat berbagai tampilan. Namun perlu diketahui bahwa beberapa kondisi pengujian sangat menegangkan sehingga melampaui tujuan desain. Sebagai contoh, mengambil laporan bug memberikan beban yang sangat besar pada sistem sehingga mungkin saja terjadi underrun dalam kasus tersebut.

Saat menguji underrun:

  • Konfigurasikan DSP apa pun setelah prosesor aplikasi sehingga menambahkan latensi minimal.
  • Jalankan pengujian dalam berbagai kondisi seperti layar hidup atau mati, USB terpasang atau dicabut, WiFi hidup atau mati, Bluetooth hidup atau mati, dan radio telepon dan data hidup atau mati.
  • Pilihlah musik yang relatif tenang dan sangat Anda kenal, dan nada-nadanya mudah terdengar.
  • Gunakan headphone berkabel untuk sensitivitas ekstra.
  • Istirahatkanlah diri Anda agar tidak mengalami "kelelahan telinga".

Setelah Anda menemukan penyebab utama underruns, kurangi jumlah dan ukuran buffer untuk memanfaatkan hal ini. Pendekatan yang bersemangat untuk mengurangi jumlah dan ukuran buffer sebelum menganalisis underruns dan memperbaiki penyebab underruns hanya akan menghasilkan frustrasi.

Peralatan

systrace adalah alat serba guna yang sangat baik untuk mendiagnosis gangguan kinerja tingkat sistem.

Output dari dumpsys media.audio_flinger juga berisi bagian berguna yang disebut "statistik pergerakan sederhana". Ini memiliki ringkasan variabilitas waktu yang berlalu untuk setiap campuran audio dan siklus I/O. Idealnya, semua pengukuran waktu harus sama dengan waktu siklus rata-rata atau nominal. Jika Anda melihat nilai minimum atau maksimum yang sangat rendah, ini merupakan indikasi adanya masalah, kemungkinan besar latensi penjadwalan yang tinggi atau waktu penonaktifan interupsi. Bagian akhir dari output sangat membantu, karena menyoroti variabilitas di luar +/- 3 standar deviasi.