Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Анализ: измерение параметров фильтра

Рассмотрим несколько конкретных примеров измерения параметров фильтра в полосных и гомоморфных вокодерах, а также в вокодерах с линейным предсказанием (липредерах). При этом учтем, что интервал стационарности речевого сигнала близок величине 10-30 мс [10].

Полосной вокодер.Измерения АЧХ фильтра с переменными параметрами в полосном вокодере удобно производить, используя кратковременный спектральный анализ и алгоритм БПФ. В приведенном ниже примере речевой сигнал нарезается на неперекрывающиеся сегменты протяженностью 128 выборок (11.6 мс при частоте дискретизации Fs=11025 Гц), для каждого сегмента вычисляется непараметрическая оценка спектра мощности (периодограмма). Спектры смежных сегментов попарно усредняются, в результате чего получается спектрограмма с разрешением по времени 23.2 мс и разрешением по частоте примерно 100 Гц (рис.3).

Листинг соответствующей программы имеет следующий вид:

% ============= analys_bandvoc.m ===================

% Полосный вокодер - анализ АЧХ голосового тракта

% x - анализируемый (речевой) сигнал

% nfft - параметр БПФ

% fs - частота дискретизации

% window - окно

% numoverlap - величина перекрытиЯ окон

% Bamp - спектрограмма

% ==================================================

% === задание параметров обработки ===

nfft = 128; fs = 11025;

window = rectwin(nfft); numoverlap = 0;

% ==== вычислениеспектрограммы =====

[B,f,t] = specgram(x,nfft,fs,window,numoverlap);

Bamp = abs(B);

% ==== усреднение двух смежных спектров =====

it=1; It=size(Bamp,2);

while it < round(It/2)

Bamp2(:,it)=0.5*(Bamp(:,it*2-1)+Bamp(:,it*2));

it=it+1;

End

% ==== график АЧХ фильтра-резонатора =====

figure; imagesc(t,f,20*log10(Bamp2)), axis xy, colormap(jet);

xlabel('ВремЯ, с'); ylabel('Частота, Гц'); title('Спектрограмма-2');

а) б)

Рис.3. Исходный речевой сигнал и его спектрограмма

На рис.4 показан фрагмент исходного речевого сигнала – слово «измерение», а на рис.5 показаны оценки спектров мощности (разрешение по частоте близко 100 Гц) первого гласного звука «и» (рис.5.а) и согласного звука «з» (рис.5.б) этого слова.

Рис.5. Осциллограмма слова «измерение»

а) б)

Рис.5. Спектры звуков «и» (а) и «з» (б) слова «измерение»

Гомоморфный вокодер.В гомоморфных вокодерах АЧХ фильтра-резонатора измеряют с помощью кепстрального анализа. В приведенном ниже примере речевой сигнал нарезается на сегменты протяженностью 512 выборок, перекрывающиеся на половину своей длины. По этим сегментам вычисляется спектрограмма с разрешением по частоте около 25 Гц и разрешением по времени 23.2 мс (рис.6.а).

а) б)

Рис.6. Спектрограммы до (а) и после (б) вычисления кепстра

Столь высокое разрешение по частоте необходимо для сохранения информации о частоте основного тона. Далее для каждого из кратковременных спектров спектрограммы вычисляется кепстр:

, (1)

где - символ обратного преобразования Фурье.

Поскольку информация о формантном составе речевого сигнала содержится в области малых значений , оценку АЧХ фильтра получают в результате преобразования Фурье от кепстра, взвешенного окном :

.

На рис.6.б приведена оценка АЧХ фильтра для треугольного окна с шириной основания 128 точек (11.6 мс при частоте дискретизации Fs=11025 Гц).

Чтобы лучше рассмотреть отличие приведенных на рис.6 спектрограмм, приведем их спектральные сечения, соответствующие гласному звуку «и»: на рис.7.а приведен спектр с разрешением 25 Гц, а на рис.7.б – с разрешением 100 Гц.

а) б)

Рис.7. Спектры звука «и» с разрешением 25 Гц (а) и 100 Гц (б)

В оценке спектра с более высоким разрешением отчетливо просматривается «тонкая» структура спектра, содержащая информацию о частоте основного тона.

Листинг программного модуля имеет вид:

% ============ analys_hmrf.m ===========

% Гомоморфный вокодер - анализ АЧХ голосового тракта

% x - анализируемый (речевой) сигнал

% ====================================

% === задание параметров ====

nfft = 512; fs = 11025;

tau=nfft/4+1; % ширина окна wincpstr, умножаемого на кепстр

% ======= Вычисление кепстра =====

window = rectwin(nfft); numoverlap = 256; % сегменты из 512, перекрываются на 256

[Bt,ft,tt] = specgram(x,nfft,fs,window,numoverlap);

%

figure; imagesc(tt,ft,20*log10(abs(Bt))), axis xy, colormap(jet); % график спектрограммы

xlabel('ВремЯ, с'); ylabel('Частота, Гц'); title('Спектрограмма длЯ кепстра');

%

Btamp = abs(Bt);

Bts=Btamp(2:end-1,:);

Btsi=flipud(Bts);

Btsim=[Btamp; Btsi];

Btsim=Btsim+10^(-3);

Bcpstr = real(ifft(log(Btsim))); % кепстр

%

% ====== Вычисление АЧХ речевой системы =========

wincps=zeros(129,1);

wincp=bartlett(tau); % кепстральное окно

for iwin=1:tau

wincps(iwin)=wincp(iwin);

End

wincpstr=circshift(wincps,-(tau-1)/2); % сдвиг кепстрального окна

wincpstr(65)=[]; % убираем лишний отсчет

Bcut=Bcpstr;

Bcut(65:448,:)=[]; % вычеркивание ненужных строк кепстра

for icut2=1:length(Bcut(1,:))

for icut1=1:128

Bcutwin(icut1,icut2)=Bcut(icut1,icut2).*wincpstr(icut1); % умнож. кепстра на окно

End

End

Pcutlog=real(fft(Bcutwin));

Pcut=exp(Pcutlog);

Bamp2=Pcut;

Bamp2(66:end,:)=[]; % АЧХ голосового тракта

fh=0:4*(ft(2)-ft(1)):ft(end);

figure; imagesc(tt,fh,20*log10(Bamp2)), axis xy, colormap(jet);xlabel('ВремЯ, с');

ylabel('Частота, Гц'); title('Спектрограмма из кепстра');

Вокодер с линейным предсказанием (липредер).В анализаторе вокодера с линейным предсказанием измеряют коэффициенты нерекурсивного «выбеливающего» фильтра. В синтезаторе такого вокодера применяют рекурсивный фильтр, обратный «выбеливающему».

Задача определения коэффициентов фильтра, входящего в состав синтезатора вокодера, аналогична задаче параметрического оценивания спектра мощности случайного процесса. Ее решение сводится к составлению и решению уравнений Юла-Уолкера [3]:

, (2)

, (3)

где - отсчеты оценки корреляционной функции сегмента речевого сигнала, - оценка дисперсии белого шума, воздействующего на рассчитываемый фильтр.

Найденные в результате решения системы уравнений (2)-(3) коэффициенты и - это коэффициенты рекурсивного фильтра, описываемого уравнением

,

с передаточной характеристикой

,

где - воздействие на фильтр в виде дискретного белого шума единичной дисперсии; - отклик фильтра.

В приводимом ниже листинге программы вычисления АЧХ фильтра-резонатора речевой сигнал нарезается на неперекрывающиеся сегменты длиной 256 выборок (23.2 мс при частоте дискретизации Fs=11025 Гц).

% ============= analiz_lipreder.m ===================

%== вокодер с линейным предсказанием - анализаторнаЯ часть ===

% x - речевой (анализируемый) сигнал

% nseg - кол-во отсчетов в сегменте

% sdvig - величина сдвига сегментов

% b - коэффициенты полюсного фильтра

% sigma - СКО речевого сигнала

% ==================================================

fs=11025; % частота дискретизации

nseg=256; % кол-во отсчетов в сегменте

por_fil = 15; % порЯдок фильтра

sdvig=nseg; % сдвиг сегментов

b=[];

sigma=[];

for i= 1:sdvig:(length(x)-nseg) % начальные номера сегментов (перекрытие 0%)

for j=1:nseg

xseg(j)=x(i+j-1); % формирование i-того сегмента

end;

[Kxseg,lags] = xcov(xseg,por_fil,'biased'); % коррел.функц.сегмента

Kxseg_=Kxseg; Kxseg_(1:por_fil)=[]; % отбрас.отрицат.задержки корр.ф-ции

Kxseg_(por_fil+1)=[]; % отбрас.последнего отсчета корр.ф-ции

Kxtep=toeplitz(Kxseg_); % формирование матрицы Теплица

Kxseg(1:(por_fil+1))=[]; % отсчеты корр.ф-ции длЯ положит.задержек

%====== расчет коэффициентов фильтра =======

b_seg=-Kxtep\Kxseg'; % решение матричного уравнен. - (nseg/2+1) коэффициентов фильтра

%====== расчет СКО =======

sig_seg=sqrt(Kxseg_(1)+sum(b_seg.*Kxseg'));

%====== матрица b и массив sigma ===========

b=[b b_seg]; % объединение результир.сегментов

sigma=[sigma sig_seg];

end;

% конец вычислений

% ===== график СКО ======

figure;plot(sigma)

title('Сигма речевого сигнала (липредер)');

it= 1/fs:sdvig/fs:(length(x)-nseg)/fs;

jb=1:por_fil;

% ====== график коэф-в b =======

figure; imagesc(it,jb,b), axis xy, colormap(jet);

xlabel('ВремЯ, с'); ylabel('Номера коэфф-та bk'); title('Коэффициенты фильтра липредера');

% ===== график АЧХ =====

nfft = 128; fs = 11025;

window = rectwin(nfft); numoverlap = 0;

[B,f,t] = specgram(x,nfft,fs,window,numoverlap);

Bamp2=[];

for ib= 1:size(b,2) % начальные номера сегментов (перекрытие 50%)

bk1=b(:,ib);bks1=[1 bk1']; % полный вектор коэффициентов

sig=sigma(ib);

[Bamp2_seg,Bf]=freqz(sig,bks1,65);

Bamp2=[Bamp2 Bamp2_seg];

End

Bamp2=abs(Bamp2);

% график АЧХ голосового тракта

figure; imagesc(t,f,20*log10(Bamp2)), axis xy, colormap(jet);

xlabel('ВремЯ, с'); ylabel('Частота, Гц'); title('АЧХ липредера');

На рис.8 приведены примеры результатов вычислений значений и как функций времени, а на рис.9 – пример результат вычисления АЧХ фильтра-резонатора с переменными параметрами.

а) б)

Рис.8. СКО речевого сигнала (а) и коэффициенты фильтра липредера (б)

Рис.9. АЧХ фильтра липредера

На рис.10 показана форма АЧХ фильтра липредера для звуков «и» и «з» слова «измерение».

а) б)

Рис.10. АЧХ фильтра липредера для звуков «и» (а) и «з» (б)

Значительно более гладкая форма кривых на рис.10, по сравнению с рис.5 и рис.7, обусловлена невысоким порядком фильтра – в данном случае он равен 15.

Последнее изменение этой страницы: 2016-08-28

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...