Mierzenie opóźnienia dźwięku

Na tej stronie opisujemy typowe metody pomiaru opóźnienia wejścia i wyjścia.

Pomiar opóźnienia wyjścia

Dostępnych jest kilka technik pomiaru opóźnienia wyjścia, które różnią się stopniem dokładności i łatwością uruchomienia. Opis znajdziesz poniżej. Przykładowe środowisko testowe znajdziesz też w schemacie testowania.

Test LED i oscyloskopu

Ten test mierzy opóźnienie w odniesieniu do wskaźnika LED na urządzeniu. Jeśli urządzenie produkcyjne nie ma diody LED, możesz ją zainstalować na prototypowym urządzeniu. Aby uzyskać jeszcze większą dokładność na prototypowych urządzeniach z odsłoniętymi obwodami, podłącz sondę oscyloskopu bezpośrednio do diody LED, aby pominąć opóźnienie czujnika światła.

Jeśli nie możesz zainstalować diody LED na urządzeniu produkcyjnym lub prototypowym, wypróbuj te obejścia:

  • Użyj pinu wejścia/wyjścia ogólnego przeznaczenia (GPIO) do tego samego celu.
  • Użyj JTAG lub innego portu debugowania.
  • Użyj podświetlenia ekranu. Może to być ryzykowne, ponieważ podświetlenie może mieć nieznaczną opóźnienie, co może przyczynić się do nieprawidłowego pomiaru opóźnienia.

Aby przeprowadzić ten test:

  1. Uruchom aplikację, która okresowo powoduje miganie diody LED w tym samym czasie, gdy odtwarza dźwięk.

    Uwaga: aby uzyskać przydatne wyniki, musisz użyć w aplikacji testowej odpowiednich interfejsów API, aby korzystać z szybkiej ścieżki wyjścia audio. Aby dowiedzieć się więcej o tym, jak ograniczyć opóźnienia, przeczytaj artykuł Projektowanie z myślą o ograniczeniu opóźnień.

  2. Umieść czujnik światła obok diody LED.
  3. Połącz sondy dwukanałowego oscyloskopu z gniazdem słuchawek przewodowych (wyjście liniowe) i czujnikiem światła.
  4. Użyj oscyloskopu, aby zmierzyć różnicę czasu między sygnałem wyjściowym linii a sygnałem czujnika światła.

Różnica w czasie to przybliżona wartość opóźnienia wyjścia audio, przy założeniu, że opóźnienie diody LED i czujnika światła są równe 0. Zazwyczaj opóźnienie diody LED i czujnika światła jest stosunkowo niskie (rzędu 1 ms lub mniej), co jest wystarczająco niskie, aby można je było zignorować.

Mierzenie opóźnienia w obie strony

Całkowity czas oczekiwania to suma czasu oczekiwania na wyjściu i na wejściu.

Test Larsena

Jednym z najprostszych testów opóźnienia jest test sprzężenia zwrotnego audio (efekt Larsena). Pozwala to uzyskać przybliżony pomiar łącznego opóźnienia wyjścia i wejścia przez pomiar czasu pętli odpowiedzi impulsowej. Z powodu specyfiki tego testu nie jest on zbyt przydatny do szczegółowej analizy, ale może być przydatny do kalibrowania innych testów i ustalenia górnej granicy.

Ta metoda nie rozkłada czasu komponentów, co jest ważne, gdy opóźnienie wyjścia i wejścia są niezależne. Ta metoda nie jest zalecana do pomiaru dokładnych wartości opóźnienia wyjściowego ani opóźnienia wejściowego, ale może być przydatna do uzyskania przybliżonych wartości.

Opóźnienie sygnału wyjściowego na głośniku urządzenia może być znacznie większe niż opóźnienie sygnału wyjściowego na złączu słuchawek. Wynika to z poprawy i ochrony mówców.

Aby przeprowadzić ten test:

  1. Uruchom aplikację, która przechwytuje dźwięk z mikrofonu i natychmiast odtwarza przechwycony dźwięk przez głośnik.
  2. Utwórz dźwięk zewnętrzny, na przykład stuknięcie ołówkiem mikrofonu. Ten szum powoduje pętlę sprzężenia zwrotnego. Można też wstrzyknąć impuls do pętli za pomocą oprogramowania.
  3. Zmierz czas między impulsami informacji zwrotnej, aby uzyskać sumę opóźnienia wyjściowego, opóźnienia wejściowego i nadmiarowych obciążeń aplikacji.

Oto kilka materiałów, które pomogą Ci pobrać aplikację do testu Larsena:

  • Aplikacja loopback Dr. Ricka O'Ranga to aplikacja na Androida do testowania informacji zwrotnej dotyczącej dźwięku. Aplikację możesz pobrać z Google Play lub pobrać kod źródłowy z GitHuba.
  • Przykładową implementację znajdziesz też w pliku slesTestFeedback.cpp. Jest to aplikacja wiersza poleceń, która została utworzona za pomocą środowiska kompilacji platformy. Jednak dostosowanie kodu do innych środowisk powinno być proste. Potrzebujesz też nieblokującego kodu FIFO, który znajdziesz w bibliotece audio_utils.

Klucz sprzętowy do pętli dźwiękowej

Płytka audio Dr. Rick O'Rang z pętlą zwierciadłową jest przydatna do pomiaru opóźnienia w obie strony przez złącze zestawu słuchawkowego. Ilustracja poniżej pokazuje wynik jednorazowego wstrzyknięcia impulsu do pętli i następnie jej oscylacji. Okres oscylacji to opóźnienie w obie strony. Nie określają one konkretnych urządzeń, wersji oprogramowania ani warunków testu. Wyników nie należy ekstrapolować.

pomiar czasu błądzenia

Rysunek 1. Pomiar czasu błądzenia

Aby zmniejszyć szum, może być konieczne odłączenie kabla USB i dostosowanie poziomu głośności, aby uzyskać stabilną oscylację.

Pomiar opóźnienia reakcji

Czas oczekiwania na dane wejściowe jest trudniejszy do zmierzenia niż czas oczekiwania na dane wyjściowe. Mogą Ci w tym pomóc te testy:

Jednym z podejść jest najpierw określenie opóźnienia wyjściowego za pomocą diody LED i oscyloskopu, a następnie przeprowadzenie testu sprzężenia zwrotnego dźwięku (Larsen), aby określić sumę opóźnień wyjściowego i wejściowego. Różnica między tymi dwoma pomiarami to opóźnienie wejścia.

Inną techniką jest użycie pinu GPIO na prototypowym urządzeniu. Zewnętrznie, pulsowanie wejścia GPIO w tym samym czasie, gdy przesyłasz sygnał audio do urządzenia. Uruchom aplikację, która porównuje różnicę w czasie dotarcia sygnału GPIO i danych audio.

Zmniejsz opóźnienie

Aby uzyskać niską latencję dźwięku, zwróć szczególną uwagę na harmonogramowanie, obsługę przerwań, zarządzanie energią i projektowanie sterowników w systemie. Twoim celem jest niedopuszczenie, aby jakakolwiek część platformy blokowała SCHED_FIFO ścieżkę audio przez więcej niż kilka milisekund. Dzięki takiemu systematycznemu podejściu możesz zmniejszyć opóźnienie dźwięku i zyskać dodatkową korzyść w postaci bardziej przewidywalnej wydajności.

Opóźnienia dźwięku, jeśli występują, są często wykrywalne tylko w pewnych warunkach lub tylko podczas przejść. Spróbuj obciążyć system, uruchamiając nowe aplikacje i szybko przewijając różne ekrany. Pamiętaj jednak, że niektóre warunki testowe są tak stresujące, że wykraczają poza założenia projektowe. Na przykład generowanie raportu o błędach powoduje tak ogromne obciążenie systemu, że w takim przypadku może być dopuszczalne niedoszacowanie czasu.

Podczas testowania pod kątem niedoborów:

  • Skonfiguruj dowolny system DSP po przetwarzaniu aplikacji, aby zapewnić minimalne opóźnienie.
  • Przeprowadź testy w różnych warunkach, takich jak włączony lub wyłączony ekran, podłączony lub odłączony kabel USB, włączony lub wyłączony Wi-Fi, włączony lub wyłączony Bluetooth oraz włączone lub wyłączone radiotelefony i radiomodemy.
  • Wybierz stosunkowo cichą muzykę, którą znasz bardzo dobrze i w której łatwo usłyszeć niedociągnięcia.
  • Aby zwiększyć czułość, użyj słuchawek przewodowych.
  • Rób przerwy, aby nie odczuwać „zmęczenia ucha”.

Gdy znajdziesz główne przyczyny niedoborów, zmniejsz liczbę i rozmiary buforów, aby wykorzystać tę sytuację. Pośpieszne zmniejszanie liczby i rozmiarów buforów przed przeanalizowaniem niedoborów i usunięciem ich przyczyn powoduje tylko frustrację.

Narzędzia

systrace to świetne uniwersalne narzędzie do diagnozowania problemów z wydajnością na poziomie systemu.

Dane wyjściowe funkcji dumpsys media.audio_flinger zawierają też przydatną sekcję „Proste statystyki przesuwające się”. Zawiera ono podsumowanie zmienności czasu trwania poszczególnych miksów audio i cykli wejść/wyjść. W idealnej sytuacji wszystkie pomiary czasu powinny być zbliżone do średniego lub nominalnego czasu cyklu. Jeśli widzisz bardzo niskie minimum lub wysokie maksimum, oznacza to problem, prawdopodobnie długi czas oczekiwania na zaplanowanie lub czas wyłączenia przerwy. Szczególnie przydatna jest część końcowa, która podkreśla zmienność poza zakresem ±3 odchyleń standardowych.