Can you help us debug and fix this code entirely?

조회 수: 4 (최근 30일)
Barnabas
Barnabas 2025년 5월 18일
댓글: Walter Roberson 2025년 5월 18일
%on line sound importing or recourding
recObj = audiorecorder;
recordblocking(recObj, 15);
play(recObj);
y = getaudiodata(recObj);
plot(y);
play(recObj);
y = getaudiodata(recObj);
plot(y);
%code of AEC
M=4001;
fs=8000;
[B,A]=cheby2(4,20,[0.1, 0.7]);
Hd=dfilt.df2t([zeros(1,6) B]);
hFVT=fvtool(Hd);
set(hFVT, 'color' ,[1 1 1])
v=340;
H = filter(Hd,log(0.99*rand(1,M)+0.01).* ...
sign (randn(1,M)).*exp(-0.002*(1:M)));
H = H/norm(H)*4; % Room Impulse Response
plot(0:1/fs:0.5,H);
xlabel('Time [sec]' );
ylabel('Amplitude' );
title( 'Room Impulse Response' );
set(gcf, 'color' , [1 1 1])
figure(1)
hold on
load nearspeech
n = 1: length (v);
t=n/fs;
plot(t,v);
axis([0 33.5 -1 1]);
xlabel('Time [sec]' );
ylabel('Amplitude' );
25
title('Near-end speech signal' );
set(gcf, 'color' , [1 1 1])
figure(2)
hold on
load farspeech
x =x( 1: length (x));
dhat = filter(H,1,x);
plot(t,dhat);
axis([0 33.5 -1 1]);xlabel('Time [sec]' );
ylabel('Amplitude' );
title('Far-End speech Signal' );
set(gcf, 'color' , [1 1 1])
figure(3)
hold on
d=dhat + v+0.001*randn(length(v),1);
plot(t,d);
axis([0 33.5 -1 1]);
xlabel('Time [sec]' );
ylabel('Amplitude' );
title('Microphon Signal' );
set(gcf, 'color' , [1 1 1])
figure(4)
hold on
mu=0.025;
W0 = zeros(1,2048);
del = 0.01;
lam = 0.98;
x = x(1:length(W0)*floor(length(x)/length(W0)));
d = d(1:length(W0)*floor(length(d)/length(W0)));
% Construct the Frequency-Domain Adaptive Filter
fdafilt = dsp.FrequencyDomainAdaptiveFilter('Length',32,'StepSize',mu);
[y,e] = fdafilt(x,d);
n = 1:length(e);
t = n/fs;
pos = get(gcf,'Position');
set(gcf,'Position',[pos(1), pos(2)-100,pos(3),(pos(4)+111)])
subplot(3,1,1);
26
plot(t,v(n),'g');
([0 33.5 -1 1]);
xlabel('Time [sec]');
ylabel('Amplitude');
title('Near-End Speech Signal of MR.ABERA');
subplot(3,1,2);
plot(t,d(n),'b');
axis([0 33.5 -1 1]);
ylabel('Amplitude');
title('Microphone Signal Mr. Amex + Mr.Abera');
subplot(3,1,3);
plot(t,v(n),'r');
axis([0 33.5 -1 1]);
ylabel('Amplitude');axis
title('Output of Acoustic Echo Canceller');
set(gcf, 'color' , [1 1 1])
#%Normalized LMS method
FrameSize = 102; NIter = 14;
lmsfilt2 = dsp.LMSFilter('Length',11,'Method','Normalized LMS', ...
'StepSize',0.005);
firfilt2 = dsp.FIRFilter('Numerator', fir1(10,[.05, .075]));
sinewave = dsp.SineWave('Frequency',0.001, ...
'SampleRate',1,'SamplesPerFrame',FrameSize);
TS = dsp.TimeScope('TimeSpan',FrameSize*NIter,'TimeUnits','Seconds',...
'YLimits',[-3 3],'BufferLength',2*FrameSize*NIter, ...
'ShowLegend',true,'ChannelNames', ...
{'echo signal', 'Filtered signal'});
%%
% Pass the echo input signal into the LMS filter and view the filtered
% output in the time scope.
for k = 1:NIter
x = randn(FrameSize,1);
% Input signal
d = firfilt2(x) + sinewave(); % echo + Signal
[y,e,w] = lmsfilt2(x,d);
TS([d,e]);
% echo = channel 1; Filtered = channel 2
end
27
#% convergence performance of regular NLMS
x = 0.1*randn(500,1);
[b,err,res] = fircband(12,[0 0.4 0.5 1], [1 1 0 0], [1 0.2],...
{'w' 'c'});
d = filter(b,1,x);
lms_normalized = dsp.LMSFilter(13,'StepSize',mu,...
'Method','Normalized LMS','WeightsOutputPort',true);
[~,e1,~] = lms_normalized(x,d);
plot([e1]);
title('NLMS Conversion Performance');
legend('NLMS Derived Filter Weights');
#% convergence performance of regular LMS
x = 0.1*randn(500,1);
[b,err,res] = fircband(12,[0 0.4 0.5 1], [1 1 0 0], [1 0.2],...
{'w' 'c'});
d = filter(b,1,x);
lms_normalized = dsp.LMSFilter(13,'StepSize',mu,...
'Method','LMS','WeightsOutputPort',true);
[~,e2,~] = lms_normalized(x,d);
plot([e2]);
title('LMS Conversion Performance');
legend('LMS Derived Filter Weights');
#% comparing the LMS and NLMS convergence performance
x = 0.1*randn(500,1);
[b,err,res] = fircband(12,[0 0.4 0.5 1], [1 1 0 0], [1 0.2],...
{'w' 'c'});
d = filter(b,1,x);
lms = dsp.LMSFilter(13,'StepSize',mu,'Method',...
'Normalized LMS','WeightsOutputPort',true);
lms_normalized = dsp.LMSFilter(13,'StepSize',mu,...
28
'Method','Normalized LMS','WeightsOutputPort',true);
lms_nonnormalized = dsp.LMSFilter(13,'StepSize',mu,...
'Method','LMS','WeightsOutputPort',true);
[~,e1,~] = lms_normalized(x,d);
[~,e2,~] = lms_nonnormalized(x,d);
plot([e1,e2]);
title('Comparing the LMS and NLMS Conversion Performance');
legend('NLMS Derived Filter Weights', ...
'LMS Derived Filter Weights','Location', 'NorthEast');
main issue we keep facing is
Error using load
Unable to find file or directory 'nearspeech'.
Error in OG (line 30)
load nearspeech

답변 (1개)

Walter Roberson
Walter Roberson 2025년 5월 18일
You can get nearspeech.mat and farspeech.mat as part of the example
openExample('audio/AcousticEchoCancellationAecExample')
  댓글 수: 5
Barnabas
Barnabas 2025년 5월 18일
i can provide. @Bernabas is my handle on telegram. if youre willing and got spare time.
Walter Roberson
Walter Roberson 2025년 5월 18일
I have no reason to doubt the correctness of the code from https://www.scribd.com/document/563550610/project-paper

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Audio Processing Algorithm Design에 대해 자세히 알아보기

제품


릴리스

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by