/ / Echounterdrückung Android mit reinem Java - Java, Android, Android-ndk, AEC, Echounterdrückung

echo cancellation android mit reinem java - java, android, android-ndk, aec, echokompensation

ich nehme stimme auf und spiele synchron in 16bit pcmPuffer in API-Ebene 11 und verwende reines Java, um die Echounterdrückung wiederzugeben. Ich habe viele Möglichkeiten ausprobiert, wie zum Beispiel webrtc in jni mit android ndk, aber erfolglos, danke für jede Idee.

AudioRecord  recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO,  AudioFormat.ENCODING_PCM_16BIT, audioBufferSize);
AudioTrack player = new AudioTrack(AudioManager.STREAM_MUSIC, SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, audioBufferSize, AudioTrack.MODE_STREAM);

recorder.startRecording();
player.play();

short [] buffer = new short[1024];
short [] buffer_tmp = new short[1024];
MobileAec aec = new MobileAec();

while (at_isRun)
{
recorder.read(buffer, 0, buffer.length);
aec.doAEC(buffer, buffer_tmp)// set AEC to reference of buffer.
player.write(buffer, 0, buffer.length);

for(int i=0; i<buffer.length; i++)
buffer_tmp[i] = buffer[i];
}

Antworten:

-1 für die Antwort № 1

Es ist unklar, welchen Zweck Ihre Bewerbung hat. Das Aufnehmen von Audio und das sofortige Wiedergeben von Audio führen zu einem Heulen, das sich dramatisch auf AEC auswirkt. Sie können ein bisschen mehr darüber lesen Heulen und AEC. Bitte erläutern Sie den Zweck Ihres Projekts und was genau Sie erreichen möchten.