📄 dtalk.m
字号:
clc;
clear;
%Filter 1 NEW
%iterations=77390; %DTALK123
%iterations=89500; %DTALKBACK
%iterations=80000; %DTALKPINK
%iterations=80100; %DTALKMUSIC
%iterations=96940; %DTALKMUSICF45
iterations=75350; %DTALKPINKF45
%Filter 2 OLD
%iterations=74320; %DTALK123F2
%iterations=77300; %DTALKBACKF2
%iterations=70000; %DTALKPINKF2
%iterations=76780; %DTALKMUSICF2
%whitencoeff=0.95;
whitencoeff=0;
ALPHA=0.005;
oref=0;
omic=0;
hangover=200;
%Read in the input file
%Filter1
%input_signal_sim = wavread('dtalk123.wav');
%input_signal_sim = wavread('dtalkback.wav');
%input_signal_sim = wavread('dtalkpink.wav');
%input_signal_sim = wavread('dtalkmusic.wav');
%input_signal_sim = wavread('dtalkmusicf45.wav');
input_signal_sim = wavread('dtalkpinkf45.wav');
%Filter2
%input_signal_sim = wavread('dtalk123f2.wav');
%input_signal_sim = wavread('dtalkbackf2.wav');
%input_signal_sim = wavread('dtalkpinkf2.wav');
%input_signal_sim = wavread('dtalkmusicf2.wav');
amic_signal = input_signal_sim(:,1)';
aref_signal = input_signal_sim(:,2)';
%aref = zeros(iterations+1);
%amic = zeros(iterations+1);
%aratio = zeros(iterations+1);
%lthreo = zeros(iterations+1);
aref(1)=1;
amic(1)=1;
lthreo(1)=0;
fhangover=0;
cntover=0;
% Loop for number of iterations specified in command line.
for i=1:iterations
i
absref=abs(aref_signal(i)-whitencoeff*oref);
oref=aref_signal(i);
aref(i+1)=aref(i)+ALPHA*(absref-aref(i));
absmic=abs(amic_signal(i)-whitencoeff*omic);
omic=amic_signal(i);
amic(i+1)=amic(i)+ALPHA*(absmic-amic(i));
aratio(i+1)=amic(i+1)/aref(i+1);
lthreo(i+1)=lthreo(i)+(1/22050)*(aratio(i+1)-lthreo(i));
if (aratio(i+1)>(lthreo(i+1)*1.1))
fdoubletalk(i+1)=1;
fhangover=1;
cntover=0;
else
fdoubletalk(i+1)=0;
end
if (fhangover==1)
cntover=cntover+1;
fdoubletalk(i+1)=1;
end
if (cntover>=hangover)
fdoubletalk(i+1)=0;
fhangover=0;
cntover=0;
end
end
%Display the Result
figure(1);
hold on;
title('aref');
xlabel('Iterations');
timex=[1:iterations];
%plot(timex,aref([2:iterations+1]),'b');
%plot(timex,amic([2:iterations+1]),'r');
plot(timex,20*log10(aref([2:iterations+1])),'b');
plot(timex,20*log10(amic([2:iterations+1])),'r');
%axis([1 inf 0 0.1]);
axis([1 inf -70 -10]);
grid;
%figure(2);
%hold on;
%title('amic');
%xlabel('Iterations');
%timex=[1:iterations];
%plot(timex,amic([2:iterations+1]),'b');
figure(3);
hold on;
title('aratio vs lthreo');
xlabel('Iterations');
timex=[1:iterations];
%plot(timex,aratio([2:iterations+1]),'b');
%plot(timex,lthreo([2:iterations+1])*1.1,'r');
plot(timex,20*log10(aratio([2:iterations+1])),'b');
plot(timex,20*log10(lthreo([2:iterations+1])*1.1),'r');
plot(timex,fdoubletalk([2:iterations+1]),'g');
%axis([1 inf -0.01 4.0]);
axis([1 inf -30 30]);
grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -