2013-03-08 27 views
6

Ho realizzato un software che utilizza librerie DSP WebRTC (AEC, NS, AGC, VAD). Ora ho bisogno di sapere quale algoritmo usa ognuno per scrivere la mia tesi di laurea, ma non trovo alcuna informazione al riguardo.algoritmo AEC webrtc

Qualcuno conosce gli algoritmi di queste librerie, in particolare l'eliminazione dell'eco acustico (come ad esempio NLMS, che so che è comunemente utilizzato, ma non so se anche WebRTC lo utilizza).

Ho provato a conoscere l'algoritmo cercando nel codice sorgente, ma non capisco abbastanza.

Grazie in anticipo!

risposta

1

Ho appena usato con successo il modulo aecm WebRTC standalone per Android. e ci sono alcuni suggerimenti:

1.the più importante è la cosa chiamata "ritardo", è possibile trovare la definizione di esso in dir:

.. \ src \ moduli \ audio_processing \ include \ audio_processing.h

citazione:

Imposta il | ritardo | in ms tra AnalyzeReverseStream() ricevendo un frame end-end e ProcessStream() ricevendo un frame near-end contenente l'eco corrispondente. Sul lato client può essere espressa come delay = (t_render - t_analyze) + (t_process - t_capture)

dove,

  • t_analyze è il tempo di un frame viene passato a AnalyzeReverseStream() e t_render è il momento in cui il primo campione dello stesso frame è reso dall'hardware audio.
  • t_capture è il momento in cui il primo campione di un frame viene catturato dall'hardware audio e t_pull è l'ora in cui lo stesso frame viene passato a
    ProcessStream().

se vuoi modulo uso AECM in modalità standalone, essere sicuri di obbedire a questo documento rigorosamente.

2.AudioRecord e AudioTrack a volte bloccano (a causa della dimensione del buffer ridotta), quindi quando si calcola il ritardo, non dimenticare di aggiungere il tempo di blocco ad esso.

3.if non si sa come compilare AECM modulo, si può imparare Android NDK prima, e il percorso del modulo src è

.. \ src \ moduli \ audio_processing \ AECM

BTW, questo blog può aiutare molto nello sviluppo nativo. e debug.

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/

speranza questo può aiutare.

+0

dispiace ... ma hai risposto qualcosa che non è secondo la mia domanda. Forse ti sei perso il post in cui vuoi scriverlo! Nessuno conosce l'algoritmo utilizzato all'interno del modulo AEC di WebRTC ?? Sto cercando disperatamente di scoprirlo per scrivere la mia tesi di laurea ... Sarò molto grato per qualsiasi risposta !! – rafita82

+0

scusa per il mio fraintendimento della tua domanda. Sto solo usando il modulo ma ho poche informazioni. riguardo all'algoritmo, ho votato la tua domanda e i migliori auguri! – BillHoo

+0

Grazie mille per i tuoi voti e per il tuo tempo cercando di rispondere alla mia domanda. Non ho ancora la risposta alla mia domanda ... ma ho una domanda diversa che forse puoi rispondermi: sto cercando di utilizzare le funzioni "AnalyzeReverseStream() e" ProcessStream() ", ma il parametro di questi le funzioni sono di tipo "AudioFrame *" e non so come gestirle.Nel mio programma ho 10ms di frame audio in un corto *. Puoi (o qualcuno) aiutarmi? Grazie in anticipo! – rafita82