Запись речи включает в себя эхо, вызванное отражением от стенки. Используйте автокорреляцию для фильтрации.
В записи человек произносит слово MATLAB ®. Загрузите данные и частоту дискретизации, 7418 Гц.
load mtlb % To hear, type soundsc(mtlb,Fs)
Моделируют эхо путем добавления к записи копии сигнала, задержанного и ослабленного известным фактором : αx (n-Δ). Укажите время запаздывания 0,23 с и коэффициент затухания 0,5.
timelag = 0.23; delta = round(Fs*timelag); alpha = 0.5; orig = [mtlb;zeros(delta,1)]; echo = [zeros(delta,1);mtlb]*alpha; mtEcho = orig + echo;
Постройте график оригинала, эха и результирующего сигнала.
t = (0:length(mtEcho)-1)/Fs; subplot(2,1,1) plot(t,[orig echo]) legend('Original','Echo') subplot(2,1,2) plot(t,mtEcho) legend('Total') xlabel('Time (s)')

% To hear, type soundsc(mtEcho,Fs)Вычислите несмещенную оценку автокорреляции сигнала. Выберите и постройте график сечения, которое соответствует задержкам больше нуля.
[Rmm,lags] = xcorr(mtEcho,'unbiased'); Rmm = Rmm(lags>0); lags = lags(lags>0); figure plot(lags/Fs,Rmm) xlabel('Lag (s)')

Автокорреляция имеет резкий пик при запаздывании, при котором поступает эхо. Подавьте эхо путем фильтрации сигнала через систему БИХ, выход которой w подчиняется = y (n).
[~,dl] = findpeaks(Rmm,lags,'MinPeakHeight',0.22);
mtNew = filter(1,[1 zeros(1,dl-1) alpha],mtEcho);Постройте график отфильтрованного сигнала и сравните его с исходным.
subplot(2,1,1) plot(t,orig) legend('Original') subplot(2,1,2) plot(t,mtNew) legend('Filtered') xlabel('Time (s)')

% To hear, type soundsc(mtNew,Fs)