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