Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Анализ: измерение параметров фильтраРассмотрим несколько конкретных примеров измерения параметров фильтра в полосных и гомоморфных вокодерах, а также в вокодерах с линейным предсказанием (липредерах). При этом учтем, что интервал стационарности речевого сигнала близок величине 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. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |