FP-AUD-AEC1 is an STM32Cube function pack which features an example fully focused on acoustic echo cancellation and provides an implementation of a USB smart speaker use case with microphone.
The package includes the AcousticEC library which provides an implementation for a real-time echo cancellation routine based on the MDF algorithm SPEEX implementation.
The function pack also includes an implementation example for NUCLEO-F446RE or NUCLEO-F746ZG development boards equipped with X-NUCLEO-CCA01M1 expansion board, based on the STA350BW Sound Terminal 2.1-channel high-efficiency digital audio output system, or X-NUCLEO-CCA02M2 expansion board, based on digital MEMS microphones and designed around MP34DT06J digital microphones.
After the initialization of all the required elements, the device is recognized by a host PC as a USB microphone and USB speaker at the same time.
You can record and save the real-time audio streaming and, in the meanwhile, send the preferred audio signal to the loudspeaker connected to the expansion board. The stereo track contains the processed signal in which the acoustic echo cancellation has removed the far-end signal from the audio acquired by a microphone and an omnidirectional microphone as a reference.
The software is available also on GitHub, where the users can signal bugs and propose new ideas through Issues and Pull Requests tabs.