2013-03-08 13 views
6

Zrobiłem oprogramowanie, które używa bibliotek WebRTC DSP (AEC, NS, AGC, VAD). Teraz muszę wiedzieć, jaki algorytm wykorzystuje każdą z nich do napisania pracy magisterskiej, ale nie znajduję na ten temat żadnych informacji.Webrtc AEC Algorytm

Ktoś zna algorytmy tych bibliotek, w szczególności anulowanie echa akustycznego (jak na przykład NLMS, o którym wiem, że jest powszechnie używany, ale nie wiem, czy używa go także WebRTC).

Próbowałem poznać algorytm dotyczący kodu źródłowego, ale nie rozumiem wystarczająco.

Z góry dziękuję!

Odpowiedz

1

Po prostu z powodzeniem używam samodzielnego modułu AECM WebRTC dla Androida. i istnieje kilka wskazówek:

1. Najważniejszą rzeczą jest nazywany „opóźnienie” można znaleźć definicję tego w katalogu:

.. \ src \ modules \ audio_processing \ include \ audio_processing.h

cytat:

Ustawia opóźnienie | | w międzyczasie między analizą AnalyzeReverseStream() odbierającą zewnętrzną ramkę i ProcessStream() odbierającą bliską koniec ramkę zawierającą odpowiednie echo. Na stronie klienckiej mogą być wyrażone jako opóźnienie = (t_render - t_analyze) + (t_process - t_capture)

gdzie

  • t_analyze jest czas ramki jest przekazywany do AnalyzeReverseStream() i t_render jest czasem, gdy pierwsza próbka tej samej ramki jest renderowana przez sprzęt audio.
  • t_capture to czas, w którym pierwsza próbka klatki jest przechwytywana przez sprzęt audio, a t_pull to czas, w którym ta sama ramka jest przekazywana do
    ProcessStream().

jeśli chcesz moduł użycie AECM w trybie autonomicznym, upewnij się przestrzegać tego doc ściśle.

2.AudioRecord i AudioTrack czasami blokują (ze względu na zminimalizowany rozmiar bufora), więc po obliczeniu opóźnienia nie zapomnij o dodaniu do niego czasu blokowania.

3.if nie wiesz jak skompilować AECM modułu, można dowiedzieć się Android NDK pierwszy, a ścieżka moduł src jest

.. \ src \ modules \ audio_processing \ AECM

BTW, ten blog może wiele pomóc w natywnym dev. i debugowanie.

http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/

nadzieja ta może pomóc.

+0

Sorry ... ale masz coś odpowiedział, że nie jest zgodna z moim pytaniem. Może przegapiłeś post, w którym chcesz to napisać! Nikt nie zna algorytmu używanego w module AEC WebRTC ?? Desperacko staram się o tym napisać, aby napisać pracę magisterską ... Będę bardzo wdzięczny za każdą odpowiedź !! – rafita82

+0

Przepraszam za niezrozumienie twojego pytania. Używam tylko modułu, ale mam mało informacji. o algorytmie, głosowałem na twoje pytanie i najlepsze życzenia! – BillHoo

+0

Bardzo dziękuję za głosy i za poświęcony czas, próbując odpowiedzieć na moje pytanie. Nie mam jeszcze odpowiedzi na moje pytanie ... ale mam inne pytanie, które możesz mi odpowiedzieć: Próbuję użyć funkcji "AnalyzeReverseStream() i" ProcessStream() ", ale parametr tych funkcje są typu "AudioFrame *" i nie wiem jak sobie z tym poradzić.W moim programie mam 10ms ramek audio w krótkim *. Czy możesz (lub ktoś) mi pomóc? Z góry dzięki! – rafita82