Pomiar opóźnienia dźwięku

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Na tej stronie opisano 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, o różnym stopniu dokładności i łatwości działania, opisanych poniżej. Zobacz także Obwód testowy, aby zapoznać się z przykładowym środowiskiem testowym.

Test diody LED i oscyloskopu

Ten test mierzy opóźnienie w stosunku do wskaźnika LED urządzenia. Jeśli twoje urządzenie produkcyjne nie ma diody LED, możesz zainstalować diodę LED na urządzeniu prototypowym. Aby uzyskać jeszcze lepszą dokładność prototypowych urządzeń z odsłoniętymi obwodami, podłącz jedną sondę oscyloskopową bezpośrednio do diody LED, aby ominąć opóźnienie czujnika światła.

Jeśli nie możesz zainstalować diody LED na urządzeniu produkcyjnym lub prototypowym, wypróbuj następujące rozwiązania:

  • W tym samym celu użyj styku wejścia/wyjścia ogólnego przeznaczenia (GPIO).
  • Użyj JTAG lub innego portu debugowania.
  • Użyj podświetlenia ekranu. Może to być ryzykowne, ponieważ podświetlenie może mieć nieistotne opóźnienie i może przyczynić się do niedokładnego odczytu opóźnienia.

Aby przeprowadzić ten test:

  1. Uruchom aplikację, która okresowo pulsuje diodą LED w tym samym czasie, gdy emituje dźwięk.

    Uwaga: aby uzyskać przydatne wyniki, ważne jest, aby używać odpowiednich interfejsów API w aplikacji testowej, aby ćwiczyć szybką ścieżkę wyjścia audio. Zobacz Projektowanie w celu zmniejszenia opóźnień dla tła.

  2. Umieść czujnik światła obok diody LED.
  3. Podłącz sondy dwukanałowego oscyloskopu zarówno do przewodowego gniazda słuchawkowego (wyjście liniowe), jak i do czujnika światła.
  4. Za pomocą oscyloskopu zmierzyć różnicę czasu między obserwacją sygnału wyjścia liniowego a sygnałem czujnika światła.

Różnica w czasie to przybliżone opóźnienie wyjścia audio, przy założeniu, że zarówno opóźnienie LED, jak i opóźnienie czujnika światła są zerowe. Zazwyczaj dioda LED i czujnik światła mają stosunkowo małe opóźnienie rzędu jednej milisekundy lub mniej, co jest wystarczająco niskie, aby je zignorować.

Pomiar opóźnienia w obie strony

Opóźnienie w obie strony to suma opóźnienia wyjściowego i wejściowego.

Próba Larsena

Jednym z najłatwiejszych testów opóźnienia jest test sprzężenia zwrotnego dźwięku (efekt Larsena). Zapewnia to przybliżony pomiar łącznego opóźnienia wyjściowego i wejściowego poprzez synchronizację pętli odpowiedzi impulsowej. Ten test sam w sobie nie jest zbyt przydatny do szczegółowej analizy ze względu na charakter testu, ale może być przydatny do kalibracji innych testów i ustalenia górnej granicy.

Ta metoda nie rozkłada czasów składowych, co jest ważne, gdy opóźnienie wyjściowe i wejściowe są niezależne. Dlatego ta metoda nie jest zalecana do pomiaru dokładnych wartości latencji wyjściowej lub wejściowej w izolacji, ale może być przydatna do ustalenia przybliżonych szacunków.

Opóźnienie wyjścia do głośnika w urządzeniu może być znacznie większe niż opóźnienie wyjścia do złącza zestawu słuchawkowego. Wynika to z korekcji i ochrony głośników.

Aby przeprowadzić ten test:

  1. Uruchom aplikację, która przechwytuje dźwięk z mikrofonu i natychmiast odtwarza przechwycone dane przez głośnik.
  2. Stwórz dźwięk na zewnątrz, na przykład stukając ołówkiem w mikrofon. Ten hałas generuje pętlę sprzężenia zwrotnego. Alternatywnie można wprowadzić impuls do pętli za pomocą oprogramowania.
  3. Zmierz czas między impulsami sprzężenia zwrotnego, aby uzyskać sumę opóźnienia wyjściowego, opóźnienia wejściowego i obciążenia aplikacji.

Oto kilka zasobów umożliwiających uzyskanie aplikacji do testu Larsena:

  • Aplikacja sprzężenia zwrotnego Dr. Rick O'Rang to aplikacja na Androida do testowania sprzężenia zwrotnego dźwięku. Możesz pobrać aplikację z Google Play lub uzyskać kod źródłowy z GitHub .
  • Opublikowaliśmy również przykładową implementację w slesTestFeedback.cpp . Jest to aplikacja wiersza poleceń, zbudowana przy użyciu środowiska budowania platformy; jednak przyjęcie kodu dla innych środowisk powinno być proste. Będziesz także potrzebował nieblokującego kodu FIFO znajdującego się w bibliotece audio_utils .

Klucz sprzętowy z pętlą zwrotną audio

Klucz zwrotny audio Dr. Rick O'Rang jest przydatny do pomiaru opóźnienia w obie strony przez złącze zestawu słuchawkowego. Poniższy obraz pokazuje wynik jednorazowego wstrzyknięcia impulsu do pętli, a następnie umożliwienia oscylacji pętli sprzężenia zwrotnego. Okres oscylacji to opóźnienie w obie strony. Konkretne urządzenie, wersja oprogramowania i warunki testowe nie są tutaj określone. Przedstawionych wyników nie należy ekstrapolować.

pomiar w obie strony

Rysunek 1. Pomiar w obie strony

Może być konieczne odłączenie kabla USB w celu zmniejszenia szumów i wyregulowanie poziomu głośności w celu uzyskania stabilnych oscylacji.

Pomiar opóźnienia wejściowego

Opóźnienie wejściowe jest trudniejsze do zmierzenia niż opóźnienie wyjściowe. Poniższe testy mogą pomóc.

Jednym ze sposobów jest najpierw określenie opóźnienia wyjściowego za pomocą metody LED i oscyloskopu, a następnie użycie testu sprzężenia zwrotnego audio (Larsena) w celu określenia sumy opóźnienia wyjściowego i wejściowego. Różnica między tymi dwoma pomiarami polega na opóźnieniu wejścia.

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

Zmniejszenie opóźnienia

Aby osiągnąć niskie opóźnienie dźwięku, należy zwrócić szczególną uwagę w całym systemie na planowanie, obsługę przerwań, zarządzanie energią i projektowanie sterowników urządzeń. Twoim celem jest uniemożliwienie dowolnej części platformy blokowania wątku audio SCHED_FIFO na dłużej niż kilka milisekund. Przyjmując takie systematyczne podejście, można zmniejszyć opóźnienie dźwięku i uzyskać dodatkową korzyść w postaci bardziej przewidywalnej ogólnej wydajności.

Podsłuchy audio, jeśli występują, są często wykrywane tylko w określonych warunkach lub tylko na przejściach. Spróbuj obciążyć system, uruchamiając nowe aplikacje i szybko przewijając różne ekrany. Należy jednak pamiętać, że niektóre warunki testowe są tak stresujące, że wykraczają poza cele projektowe. Na przykład zgłoszenie błędu powoduje tak ogromne obciążenie systemu, że w takim przypadku niedopełnienie może być dopuszczalne.

Podczas testowania podjazdów:

  • Skonfiguruj dowolny DSP za procesorem aplikacji, aby dodać minimalne opóźnienie.
  • Przeprowadzaj testy w różnych warunkach, takich jak włączony lub wyłączony ekran, podłączony lub odłączony port USB, włączony lub wyłączony Wi-Fi, włączony lub wyłączony Bluetooth oraz włączona lub wyłączona telefonia i transmisje danych.
  • Wybierz stosunkowo cichą muzykę, którą dobrze znasz i która jest łatwa do usłyszenia.
  • Użyj przewodowych słuchawek, aby uzyskać dodatkową czułość.
  • Rób sobie przerwy, aby nie odczuwać „zmęczenia uszu”.

Gdy znajdziesz podstawowe przyczyny niedopełnienia, zmniejsz liczbę i rozmiary buforów, aby to wykorzystać. Chętne podejście polegające na zmniejszaniu liczby i rozmiarów buforów przed analizą niedopełnień i ustalaniem przyczyn niedopełnień skutkuje jedynie frustracją.

Narzędzia

systrace to doskonałe narzędzie ogólnego przeznaczenia do diagnozowania usterek wydajności na poziomie systemu.

Dane wyjściowe dumpsys media.audio_flinger zawierają również użyteczną sekcję o nazwie „proste statystyki ruchu”. Zawiera podsumowanie zmienności czasów, które upłynęły dla każdego miksu audio i cyklu we/wy. Idealnie, wszystkie pomiary czasu powinny być mniej więcej równe średniemu lub nominalnemu czasowi cyklu. Jeśli zobaczysz bardzo niskie minimum lub wysokie maksimum, oznacza to problem, prawdopodobnie duże opóźnienie planowania lub czas wyłączenia przerwania. Szczególnie pomocna jest końcowa część danych wyjściowych, ponieważ podkreśla zmienność wykraczającą poza +/- 3 odchylenia standardowe.