What is the support available for Acoustic Echo Cancellation on omap4430 platform?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
What is the support available for Acoustic Echo Cancellation on omap4430 platform?
We will get back on this.
regards
Yashwat
The omap4430 has Cortex-A9 dual core as far as I remember. You could try using our Acoustic EC for Cortex-A8. I think it should work. There could be only some minor reduction in performance based on the optimization done for Cortex-A8 vs. Cortex-A9. If you search for TELECOMLIB and AEC-AER product you will get to the page where you can request the download of AER component for Cortex-A8. (AER is the Acoustic Echo Removal component that has Acoustic EC and a few other modules that go along with it).
Give it a try and let us know if you had any problems executing this on Cortex-A9.
Regards,
Bogdan
Hi Bogdan,
I am able to run and compile the AEC application on omap4. After executing the aertest_cortexA8.xv7A binary, rxOut.pcm and TxOut.pcm files are generated in test/lnkr/gcarmv7a path.
when I am playing these file only disturbance sound is coming. we are not able to perceive the echo cancellation effect.I have also checked with reference files given in test/vectors/refOut. both are looks same.
I am attaching both files.
Ashwani said:Hi Bogdan,
I am able to run and compile the AEC application on omap4. After executing the aertest_cortexA8.xv7A binary, rxOut.pcm and TxOut.pcm files are generated in test/lnkr/gcarmv7a path.
when I am playing these file only disturbance sound is coming. we are not able to perceive the echo cancellation effect.I have also checked with reference files given in test/vectors/refOut. both are looks same.
I am attaching both files.
...
Hello Ashwani,
I picked up the files and I checked them out. They are OK. So, it is most likely the problem in how you load/play the files. Before we get to that I have one question:
Now back to the files you got. They are in binary format:
You need to load these files into a program that can read binary audio. Adobe Audition (formerly Cool Edit Pro) is one such application that can be used. You may also load it in MATLAB by writing a small function that can read the binary file with 16-bit words in a Big Endian byte ordering. When you play out in MATLAB, just make sure you scale the values so that 32768 integer value corresponds to +1. Otherwise it would be completely distorted. Use 16000Hz sampling rate as well.
Once you successfully load the files in some audio software, you will find out that the Rx file has the female voice which is the reference signal and Tx file has the output of the Acoustic Echo canceller. You will hear the male voice and very high artificial background noise (it was intentionally mixed and made artificial and loud so you may hear better places where the EC would operate on the echo). You may hear a few places where echo leaked a bit and for short periods of time.
The test itself has very intensive double-talk period which starts at 0:34 time mark (34s into the file) and goes all the way to the end of the file. During the double talk you may hear initially a bit of distortion for a very brief instant. It would quickly go away and you would hear pretty good output quality without much of any disturbance from the echo. Please keep in mind that the example was intentionally made to be extremely hard. In real life you would not have this type of double talk and this type of noise.
About the test:
The test code was using the female reference speech to create echo using Acoustic Echo Path simulation function. The echo was mixed with the "near" end male speech and additional noise was added as explained above. That signal was passed to the AER component which removed the echo and provided the output in the Tx file you got. You may also go ahead and try to disable AER and see how the output would look like in that case...
Have fun, and let us know if you have any more questions.
Regards,
Bogdan
Thank you Bogdan,
yes both files are OK.
I executed the original executable that was provided with the release for Cortex-A8.
About the test: The test code was using the female reference speech to create echo
using Acoustic Echo Path simulation function. The echo was mixed with
the "near" end male speech and additional noise was added as explained
above. That signal was passed to the AER component which removed the
echo and provided the output in the Tx file you got. You may also go
ahead and try to disable AER and see how the output would look like in
that case...
I have one doubt:
fe_16k.pcm : file has female reference speech
ne_pink_16k.pcm : file has near end male speech+additional noise+female speech OR near end male speech+additional noise?
Ashwani said:...
About the test:
The test code was using the female reference speech to create echo using Acoustic Echo Path simulation function. The echo was mixed with the "near" end male speech and additional noise was added as explained above. That signal was passed to the AER component which removed the echo and provided the output in the Tx file you got. You may also go ahead and try to disable AER and see how the output would look like in that case...
I have one doubt:
fe_16k.pcm : file has female reference speech
ne_pink_16k.pcm : file has near end male speech+additional noise+female speech OR near end male speech+additional noise?
[/quote]
The ne_pink_16k.pcm has only the near end male speech and noise. It does not have any echo. The echo is generated during the execution of the code by taking the reference signal passing it through the acoustic echo path simulation function and mixing it with the near end signal.
If you are looking to hear how double-talk would really sound, you should load Tx/Rx output files into Adobe Audition mixer into separate tracks and play them together, panning one file to the left channel and the other to the right so you can listen to it in stereo.
The actual near end input to the acoustic EC could also be traced out into a file. Or, you could disable AEC and capture the TxOut again to hear how would it sound without the AEC.
Regards,
Bogdan
Hi Bogdan,
I have following queries:
1. I tried to
disable AEC module as follows:
a) AER Control bitfield 0 (0x9887) to 0x9886
in aersimcfg.txt
b) aer_CTL0_ENABLE_ECHO_CANCELLER 0x0000 in aer.h
but txOut.pcm file does not change.
2. Is it
possible to change AEC/AER input and output to
little-endian?
Ashwani said:2. Is it possible to change AEC/AER input and output to little-endian?
I believe we provided source code for the test code. You may go ahead and add the option to generate little-endian instead of big-endian.
I'll get someone to answer your question #1.
Regards,
Bogdan
Ashwani,
For question #1, you only need to do a), but not b). Macro aer_CTL0_ENABLE_ECHO_CANCELLER defined in aer.h is a bit mask that you may use in your integration code to enable or disable AER. It is not supposed to be changed by users.
For question #2, as Bogdan said, you can change the AER simulation source code to have little endian format. Please go to aer/test/aersim/aersim_fileIO.c, and change function aerSimFwrite() to the following:
void aerSimFwrite(tint *buf, tint buf_size, FILE *file)
{
tint i, j;
if(file == NULL){
return;
}
for (i = 0, j = 0; i < buf_size; i++, j+=2)
{
tempIoBuf[j] = (buf[i]) & 0x00ff;
tempIoBuf[j+1] = (buf[i] >> 8) & 0x00ff;
}
fwrite(tempIoBuf, buf_size, AERSIM_FIO_SIZEOF_WORD, file);
}
Thanks jianzhongxu and Bogdan.
AER sample application working fine on omap4 board for different scenarios as given in aersimcfg.txt file. Its drastically reduces noise level by half.
Is it possible to reduce more noise level or this is maximum reduce noise by AER?
Regards
Ashwani
Ashwani,
Yes, it is possible. The default configuration reduces noise by 6dB. You can configure it to reduce as much as you want. However, we don't recommend more than 12dB.
Here is how to configure the noise reduction. Go to aer/test/aersim/aersim_setup.c. Find function aer_sim_param_config() and the following code:
aerCtl.ctl_code = aer_CTL_NR_NOISE_THRESH;
aerCtl.u.nr_noise_thresh = -65;
aerControl (aerInst,(aerControl_t *)&aerCtl);
Hi Ashwani,
Support for AER through this forum is limited to the functionalities of AER module as well as the integration of AER, but does not include framework on a specific platform such as OMAP4430.
Regards,
Jianzhong