

Traditional FDAF is numerically more efficient than time-domain adaptive filtering for long impulse responses, but it imposes high latency, because the input frame size must be a multiple of the specified filter length. Without such detection schemes, the performance of the system with the larger step size is not as good as the former, as can be seen from the ERLE plots. To deal with this performance difficulty, acoustic echo cancelers include a detection scheme to tell when near-end speech is present and lower the step size value over these periods. With a larger step size, the ERLE performance is not as good due to the misadjustment introduced by the near-end speech. % Plot near-end, far-end, microphone, AEC output and ERLEĪECScope2(nearSpeech, micSignal, e, erledB) % Send the speech samples to the output audio deviceĮrle = diffAverager((e-nearSpeech).^2)./ farEchoAverager(farSpeechEcho.^2) % Stream processing loop - adaptive filter step size = 0.04 while(~isDone(nearSpeechSrc)) From the plot, observe that you achieved about a 35 dB ERLE at the end of the convergence period.ĪECScope2.Title = 'Output of Acoustic Echo Canceller mu=0.04' ĪECScope2.Title = 'Echo Return Loss Enhancement mu=0.04' Since you have access to both the near-end and far-end speech signals, you can compute the echo return loss enhancement (ERLE), which is a smoothed measure of the amount (in dB) that the echo has been attenuated. % Far-end speech signal echoed by the roomįarSpeechEchoSrc.SamplesPerFrame = frameSize

NearSpeechSrc.SamplesPerFrame = frameSize įarSpeechSrc.SamplesPerFrame = frameSize 'BufferLength', length(x)) ĪECScope1.Title = 'Near-End Speech Signal' ĪECScope1.Title = 'Output of Acoustic Echo Canceller mu=0.025' ĪECScope1.Title = 'Echo Return Loss Enhancement mu=0.025' 'TimeSpan', 35, 'TimeSpanOverrunAction', 'Scroll'. 'LayoutDimensions',, 'TimeSpanSource', 'Property'. 'Method', 'Unconstrained FDAF') ĪECScope1 = timescope(4, fs. % Construct the Frequency-Domain Adaptive FilterĮchoCanceller = dsp.FrequencyDomainAdaptiveFilter( 'Length', 2048.
