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


Категории:

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






Синтез: восстановление речевого сигнала

Восстановление сегментов речевого сигнала в синтезаторе вокодера может быть произведено в соответствии с одним из следующих соотношений:

, (4)

, (5)

, (6)

где и - импульсная и частотная характеристики цифрового фильтра, соответственно; и - возбуждающий сигнал и его дискретный Фурье-образ, соответственно; и - коэффициенты уравнения цифрового фильтра. Каждому восстанавливаемому сегменту речевого сигнала соответствует свой цифровой фильтр, что следует учесть в алгоритме синтеза. После восстановления сегментов речевого сигнала, их следует «склеить», отбрасывая неверные участки восстановленного сигнала.

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

% ============= sintez_fir_filter.m ===================

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

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

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

% denoise - результат синтеза

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

f=0:fs/128:fs/2;f=f';

f1 = f/(fs/2);

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

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

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

% === формирование сегментов воздействиЯ ==========

denoise=[];

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

for j=1:nseg

noiseg(j)=n(i+j-1); % формирование i-того сегмента воздействиЯ

end;

%====== расчет фильтра порЯдка por_fil =======

a = fir2(por_fil,f1,Bamp2(:,ceil(i/nseg)),rectwin(por_fil+1)) ;

%====== фильтрациЯ ===========

denoise_seg=filter(a,1,noiseg); % свертка отсч.смеси с отсч. ИПХ

denoise_seg(1:nseg/2)=[]; % отбрасываем неправильные отсчеты

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

end;

 

а) б)

в)

Рис.19. Восстановленные сигналы: нерекурсивный фильтр (а), фильтрация в частотной области (б), рекурсивный фильтр (в)

Листинг синтеза речевого сигнала путем фильтрации в частотной области, т.е. на базе соотношения (5), имеет следующий вид:

% ============= sintez_freq_filter.m ===================

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

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

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

% denoise - результат синтеза

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

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

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

% === формирование сегментов воздействиЯ ==========

denoise=[];

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

for j=1:nseg

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

end;

%====== формирование AЧX фильтра =======

H1 = Bamp2(:,ceil(i/nseg));

H2(1:64) = H1(65:-1:2);

H=[H1;zeros(nseg-length(H1)-length(H2),1);H2'];

%====== фильтрациЯ ===========

denoise_seg=real(ifft(fft(noiseg).*H')); % свертка отсч.смеси с отсч. ИПХ

denoise_seg(1:nseg/2)=[]; % отбрасываем неправильные отсчеты

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

end;

Сравнивая между собой рис.19.а и 19.б, видим некоторые различия формы восстановленного сигнала. На слух сигналы также заметно отличаются – при фильтрации в соответствии с соотношением (5) подчеркиваются низкочастотные составляющие (звучание «в бочку») и высокочастотные составляющие (шипящие согласные звуки).

На рис.19.в представлен сигнал, восстановленный с помощью применяемого в липредерах рекурсивного фильтра, коэффициенты которого вычисляются в соответствии с соотношениями (2)-(3). В отличие от «классических» липредеров, возбуждаемых сигналом ошибки [2-4], в данном примере применялся возбуждающий сигнал в виде комбинации «тон-шум», как и в двух предыдущих примерах. В последнем случае синтезированная речь звучит лучше всего, хотя степень сжатия информации о свойствах фильтра здесь наивысшая. Листинг соответствующей программы синтеза имеет вид:

% ============= sintez_iir_filter.m ===================

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

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

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

% denoise - результат синтеза

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

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

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

% === формирование сегментов воздействиЯ ==========

denoise=[];

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

for j=1:nseg

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

end;

%====== фильтрациЯ ===========

bk=b(:,ceil(i/nseg));bks=[1 bk']; % полный вектор коэффициентов

sig=sigma(ceil(i/nseg));

denoise_seg=filter(sig,bks,noiseg); % фильтрациЯ сегмента речевого сигнала

denoise_seg(1:nseg/2)=[]; % отбрасываем неправильные отсчеты

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

end;

Литература

1. Скляр Б. Цифровая связь. – М., Вильямс, 2003. – 1099с.

2. Андреев И.В., Бабкин В.В., Знамеровский А.Е. Реализация многоканальных шлюзов IP-телефонии. – Труды 2-ой Международной конференции «Цифровая обработка сигналов и ее применение», 21-24 сентября 1999г., Москва, сс.432-435.

3. Применение цифровой обработки сигналов. Под ред.Э.Оппенгейма. – М., «Мир», 1980. – 550с.

4. Tan E. C. and Teo T. T. Real-Time Implementation of MELP Vocoder. - Journal of The Institution of Engineers, Singapore, Vol. 44, Issue 3, 2004, pp.38-58

5. Tarun Agarwal. Pre-Processing of Noisy Speech for Voice Coders. – A thesis submitted for the degree of Master of Engineering. – Department of Electrical & Computer Engineearing McGill University, Montreal, Canada,2002. – 80p.

6. http://www.sequencer.de/

7. http://www.analogx.com/

8. http://shay.ecn.purdue.edu/

9. Dudley, H., The Vocoder. Bell Labs Record, Vol.17, 1939, pp.122-126.

10. Рабинер Л.Р., Шафер Р.В. Цифровая обработка речевых сигналов. – М.,Радио и связь, 1981. – 494с.

11. Сапожков М.А., Михайлов В.Г. Вокодерная связь. – М.: Радио и связь, 1983. – 247 с.

12. J. L. Flanagan, R. M. Golden, "Phase Vocoder," Bell System Technical Journal, November 1966, 1493-1509.

13. Mark Dolson, "The phase vocoder: A tutorial," Computer Music Journal, vol. 10, no. 4, pp. 14 -- 27, 1986.

14. Буторин Д. MS Agent и Speech API в DELPHI. – С.-Пб, «БХВ-Петербург», 2005. – 431 с.

 

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

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