ΣSigmaStudio Ask AI Русский Log in

Is it possible to create an adaptive filter from discrete blocks in Sigma Studio?

SigmaDSP & SigmaStudio GatsbyDSP Oct 18, 2012 00:00 5 replies Original on forum ↗
Subscribe
GatsbyDSP Question
Oct 18, 2012 00:00

I'm using the EVAL-ADAU170XEBZ evaluation board to try and produce an acoustic echo canceller for a project I am working on. I've read on the forums the existence of a Normalized Least Mean Squares(NLMS) algorithm block in Sigma Studio but it doesn't appear to be available using my particular evaluation board and Sigma Studio v3.6.

I've been trying to build one from discrete blocks but have had little success. I've attached my project file if anyone would like to have a look. I wonder if there are any others out there tackling the same issue.

I have two channels of audio:

Channel 0: Direct Speech + Sinewave echo

Channel 1: Direct Sinewave

I wish to remove the sinewave from the output. My filter is currently a 40-tap FIR and its coefficients are calculated by taking the output of my filter and subtracting it from Channel 0. This is based on: New Coeff = Current Coeff + mu*e(n)*x(n)

Any assistance would be gratefully appreciated.

canceller

adau170xebz

filter

sigma

nlms

studio

echo

fir

adaptive

lms

acoustic

Show More

LukasSE Reply
Oct 19, 2012 00:00

Hello GatsbyDSP

There is a ready to use block in sigma studio. I dit some experiments with it. But the control of the learning mechanism was a bit a challenging… then I cot an other project with higher priority. So I stopped. As far as I can tell it is not necessary to build the complete NLMS algorithm with discrete parts.

See topic: https://ez.analog.com/thread/10096

Succes!

GatsbyDSP Reply
Oct 19, 2012 00:00

Hi LsH. Thanks for the response. Unfortunately the NLMS block is not available for the EVAL-ADAU170XEBZ evaluation board I am using. Which means I'm forced to try and build one myself from discrete parts.

KJBob Reply
Oct 19, 2012 00:00

Hi GatsbyDSP,

Wow I'm impressed with your effort to make an otherwise-unavailable algorithm for the -170x. Not knowing much about LMS, I can only offer an observation: With a 16KHz sample rate, the lowest frequency that completely fits within your 40-step FIR filter is 400 Hz. Assuming that your application is strictly voice, perhaps you could try using a two-sample delay for each step in the filter, along with a 80-sample overall delay. Finally, add a 3KHz or so anti-aliasing filter in front. This gives your LMS a working range from 200 Hz -- 3 KHz.

Oops! I just noticed something else -- the coefficients for every tap in the FIR filter are presently the same. That would appear to produce a moving-average low-pass filter, not a LMS filter. The math I see in Wikipedia for LMS goes over my head, but I'm wondering if in the relevant equations the FIR's filter kernel (coefficients or impulse response) is not a single number but a vector or matrix quantity, with a separate number for each tap.

Bob

Message was edited by: Robert Blowsky

GatsbyDSP Reply
Oct 30, 2012 00:00

Thanks to Bob and LsH for their replies.

You were totally right Bob, my coefficients were all the same and it couldn't have worked. My new revision should take care of that.

I've tried taking a slightly different approach implementing the adaptive algorithm but it is still refusing to work. I'm using a slightly simpler algorithm this time too: New Coeff = Old Coeff - (Sample * error) This is carried out for each individual tap.

Any thoughts would be gratefully appreciated.

EZAdministrator Reply
Aug 2, 2018 00:00

This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

Thank you,
EZ Admin