Hi. I am working on an hands-free communication application. I am looking at using an ADAU1781/61 or possibly stepping up to a BlackFin. The application will need:
- adaptive microphone beam forming
- noise cancellation (lots of wind noise possible)
- echo cancellation
- voice activity detection (VAD),
- some automatic levels/volume control,
- the ability to mix in another digital serial input (digital audio signal). (Is this possible? I've been looking for some reference on this)
My concern after looking over some of the instruction cycles for these code blocks as well as the total allowable in the SigmaDSP, is that all this won't fit in the 1781. I am looking at following the CN0207 reference design.
Will all of this be feasible following that reference design?
Thanks,
Dan





Wow, a lot of questions here! I will try to answer them.
Here's the list of capabilities you need, and my comments about the feasibility of implementing them on SigmaDSP.
A few notes:
- You need two microphones set up in a very specific way in order to use the wind noise reduction algorithm. Here is documentation on that algorithm:
http://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/adialgorithms/windnoise
Here is a thread about tuning that algorithm:
http://ez.analog.com/message/4454#4454
- I don't think it's easy to do beamforming and wind noise reduction at the same time. Both beamforming and wind noise reduction algorithms depend on using the raw microphone inputs. You can't do processing with one algorithm and then feed the result into the next algorithm. It won't work. Probably the best bet is to do something like this, where you run the algorithms in parallel and mix the results:
- There are some details on the beamformer here:
http://ez.analog.com/message/43552#43552
- Some documentation on the voice activity detector:
http://ez.analog.com/message/17014#17014
http://ez.analog.com/message/28551#28551
- Automatic volume control:
http://ez.analog.com/message/12899#12899
- How to mix signals:
Or, for individual level control:
-Definition of inputs and outputs:
http://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/io/input?s[]=input&s[]=output
http://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/io/output
I'm not sure if all of these algorithms will fit into the memory of an ADAU1761. You should probably give it a try to see if you are able to fit the functionality you want into the total memory. You can always check your memory usage by enabling the output window and then compiling the project: