exponenta event banner

Эхо-отмена

Запись речи включает в себя эхо, вызванное отражением от стенки. Используйте автокорреляцию для фильтрации.

В записи человек произносит слово MATLAB ®. Загрузите данные и частоту дискретизации, Fs = 7418 Гц.

load mtlb

% To hear, type soundsc(mtlb,Fs)

Моделируют эхо путем добавления к записи копии сигнала, задержанного Δ-образцами и ослабленного известным фактором α: y (n) = x (n) + α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)')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Original, Echo. Axes 2 contains an object of type line. This object represents Total.

% 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)')

Figure contains an axes. The axes contains an object of type line.

Автокорреляция имеет резкий пик при запаздывании, при котором поступает эхо. Подавьте эхо путем фильтрации сигнала через систему БИХ, выход которой w подчиняется w (n) + αw (n-Δ) = 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)')

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents Original. Axes 2 contains an object of type line. This object represents Filtered.

% To hear, type soundsc(mtNew,Fs)

См. также

Функции