2013-03-08 8 views
6

Ich habe eine Software erstellt, die WebRTC DSP-Bibliotheken (AEC, NS, AGC, VAD) verwendet. Jetzt muss ich wissen, welcher Algorithmus verwendet, um meine Masterarbeit zu schreiben, aber ich finde keine Informationen darüber.webrtc AEC-Algorithmus

Jemand kennt die Algorithmen dieser Bibliotheken, speziell die Acoustic Echo Cancellation (wie zum Beispiel NLMS, von denen ich weiß, dass sie häufig verwendet wird, aber ich weiß nicht, ob WebRTC sie auch verwendet).

Ich habe versucht, den Algorithmus in den Quellcode zu sehen, aber ich verstehe nicht genug.

Vielen Dank im Voraus!

Antwort

1

Ich habe gerade erfolgreich Standalone WebRTC AECM-Modul für Android. und es gibt einige Tipps:

1.Die wichtigste ist die Sache als "Verzögerung" können Sie die Definition der es in dir finden:

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

Zitat:

Stellt die | Verzögerung | in Millisekunden zwischen AnalyzeReverseStream() empfängt einen Far-End-Frame und ProcessStream() empfängt einen Near-End-Frame , der das entsprechende Echo enthält. Auf der Client-Seite kann das sein als Verzögerungs ausgedrückt = (t_render - t_analyze) + (t_process - t_capture)

wo

  • t_analyze ist die Zeit, um einen Rahmen zu AnalyzeReverseStream geben wird() und t_render ist die Zeit, in der das erste Sample desselben Frames von der Audio-Hardware wiedergegeben wird.
  • t_capture ist die Zeit, zu der das erste Beispiel eines Frames von der Audio-Hardware erfasst wird, und t_pull ist die Zeit, zu der das gleiche Frame an
    ProcessStream() übergeben wird.

wenn Sie wollen, verwenden AECM Modul im Standalone-Modus sicher, dass Sie dieses Dokument streng gehorchen.

2.AudioRecord und AudioTrack blockieren manchmal (aufgrund der minimierten Puffergröße), wenn Sie also die Verzögerung berechnen, vergessen Sie nicht, die Sperrzeit hinzuzufügen.

3.if Sie wissen nicht, wie AECM Modul zu kompilieren, Sie Android NDK zuerst lernen kann, und das Modul src Pfad ist

.. \ src \ Module \ audio_processing \ AECM

BTW, Dieser Blog kann viel in nativen Entwicklern helfen. und debuggen.

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/

hoffen, dass diese Ihnen helfen können.

+0

Sorry ... aber Sie haben etwas geantwortet, dass es nicht nach meiner Frage. Vielleicht hast du den Post verpasst, wo du das schreiben willst! Niemand kennt den Algorithmus innerhalb des AEC-Moduls von WebRTC ?? Ich versuche verzweifelt, es zu wissen, um meine Master-Thesis zu schreiben ... Ich werde sehr dankbar für jede Antwort sein !! – rafita82

+0

Entschuldigung für mein Missverständnis Ihrer Frage. Ich benutze nur das Modul, habe aber wenig Informationen. über den Algorithmus, ich habe Ihre Frage und die besten Wünsche gewählt! – BillHoo

+0

Vielen Dank für Ihre Stimmen und für Ihre Zeit versuchen, meine Frage zu beantworten. Ich habe noch keine Antwort auf meine Frage ... aber ich habe eine andere Frage, die Sie vielleicht beantworten können: Ich versuche, die Funktionen "AnalyzeReverseStream()" und "ProcessStream()" zu verwenden, aber deren Parameter Funktionen sind vom Typ "AudioFrame *" und ich weiß nicht, wie ich damit umgehen soll. In meinem Programm habe ich 10ms von Audio-Frames in eine kurze *. Können Sie mir helfen? Vielen Dank im Voraus! – rafita82