Смекни!
smekni.com

Разработка программного канального вокодера (стр. 3 из 3)

От числа частотных полос зависит разборчивость синтезированной речи. Хорошие результаты получаются при числе каналов 15-16 (полоса 100 Гц... 4 кГц). По условию поставленной задачи необходимо разработать вокодер для сжатия и передачи по каналу связи речи без идентификации диктора, то для уменьшения количества передаваемой информации можно уменьшить количество каналов до 12-14. На рисунке 3.1 представлена реализация используемой при кодировании гребенки фильтров, состоящей из 12 полосовых фильтров, ФНЧ и ФВЧ.

Рисунок 3.1 – гребанка фильтров.

Нижеследующий текст программы на матлабе позволяет рассчитать необходимые характеристики фильтров и построить АЧХ гребенки фильтров.

n_bands = 15;

fd1 = 8000

[n,Wn] = buttord(100/fd1, 300/fd1, 2, 50);

[b{1},a{1}] = butter(n, Wn);

[n,Wn] = buttord([125/fd1 300/fd1], [20/fd1 500/fd1], 4, 40);

[b{2},a{2}] = butter(n, Wn);

[n,Wn] = buttord([305/fd1 485/fd1], [105/fd1 685/fd1], 3, 40);

[b{3},a{3}] = butter(n, Wn);

[n,Wn] = buttord([500/fd1 690/fd1], [300/fd1 890/fd1], 3, 40);

[b{4},a{4}] = butter(n, Wn);

[n,Wn] = buttord([700/fd1 880/fd1], [500/fd1 1080/fd1], 2, 40);

[b{5},a{5}] = butter(n, Wn);

[n,Wn] = buttord([900/fd1 1080/fd1], [700/fd1 1280/fd1], 2, 40);

[b{6},a{6}] = butter(n, Wn);

[n,Wn] = buttord([1100/fd1 1380/fd1], [900/fd1 1580/fd1], 2, 45);

[b{7},a{7}] = butter(n, Wn);

[n,Wn] = buttord([1400/fd1 1680/fd1], [1200/fd1 1880/fd1], 2, 47);

[b{8},a{8}] = butter(n, Wn);

[n,Wn] = buttord([1700/fd1 1980/fd1], [1500/fd1 2180/fd1], 2, 50);

[b{9},a{9}] = butter(n, Wn);

[n,Wn] = buttord([2000/fd1 2330/fd1], [1800/fd1 2530/fd1], 2, 50);

[b{10},a{10}] = butter(n, Wn);

[n,Wn] = buttord([2350/fd1 2670/fd1], [2150/fd1 2870/fd1], 2, 50);

[b{11},a{11}] = butter(n, Wn);

[n,Wn] = buttord([2700/fd1 3070/fd1], [2500/fd1 3270/fd1], 2, 50);

[b{12},a{12}] = butter(n, Wn);

[n,Wn] = buttord([3100/fd1 3470/fd1], [2900/fd1 3670/fd1], 2, 50);

[b{13},a{13}] = butter(n, Wn);

[n,Wn] = buttord([3500/fd1 3880/fd1], [3300/fd1 4080/fd1], 2, 50);

[b{14},a{14}] = butter(n, Wn);

[n,Wn] = buttord(3900/fd1, 3700/fd1, 2, 50);

[b{n_bands},a{n_bands}] = butter(n, Wn, 'high');

hold on;

for i=1:n_bands,

[H,W] = freqz(b{i}, a{i}, [0:0.01:pi]);

plot(W,20*log10(abs(H)));

axis([0 pi -100 10]);

end;

hold off;

Гребенка состоит из цифровых фильтров Баттерворта, так как это наиболее распространенный БИХ-фильтров.