Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_Сжатие сигналов.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
997 Кб
Скачать
☆

4.Сжатие речевого сигнала

Модифицируем алгоритм, описанный в предыдущей главе, для сжатия речевого сигнала посредством ДИКМ. Для этого записанный отрезок речи подвергнем дискретизации с частотой 8000 Гц и квантуем полученные отсчеты 2048 уровнями (11 бит и 1 бит на знак). Получим разностный сигнал также, как и в случае для синусоидального сигнала.

Значения разностного сигнала, полученного при использовании оптимальных коэффициентов, можно записать при помощи 9-10 бит. Очевидно, что такое сжатие разностного сигнала является недостаточным, а следовательно, необходимо подвергнуть разностный сигнал дальнейшей обработке. Для этого будем еще раз квантовать сигнал, чтобы была возможность записать его при помощи 6 бит.

На приемной стороне умножим полученный отсчет на использованный шаг квантования и продолжим алгоритм, как и в предыдущей главе.

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

clear all;

Fs=8000;

t=0.5;

a1=1.8;

a2=-0.8;

beep

x = wavrecord(t*Fs, Fs);

[x1,sh,kvbin,x]=DAC(x,Fs,t,12,2);

beep;

wavplay(x*sh, Fs);

%mu=255;

%koef=32;

%beep;

%wavplay(x*sh, Fs);

q = fft(x,Fs*t);

q = q(1:(Fs*t/2));

m = abs(q);

m1=m/(Fs*t/2);

f = (0:((Fs*t)-1)/2)/t;

tm=0:1/Fs:t;

tm=tm(1:Fs*t);%

for n=1:Fs*t

if n==1

pr_x(n)=0;

elseif n==2

pr_x(n)=round((a1*x(n-1)));

else

pr_x(n)=round(((a1*x(n-1)+a2*x(n-2))));

end

end

for n=1:Fs*t

if n==1

e(n)=x(n);

else

e(n)=x(n)-pr_x(n);

end

end

e2=e;

ma=max(abs(e));

[x1,sh_e,kvbin,e]=DAC(e,Fs,t,6,2);

%for n=1:Fs*t

%e(n)=round((sign(e(n))*koef*((log(1+mu*abs(e(n)/ma)))/(log(mu+1)))));

%end

e1=e;

%for n=1:Fs*t

% e(n)=round(sign(e(n))*(1/255)*((256^(abs(e(n)/koef))-1))*ma);

%end

e=round(e*sh_e);

for n=1:Fs*t

if n==1

y(n)=e(n);

pr_y(n)=0;

elseif n==2

pr_y(n)=round((a1*y(n-1)));

y(n)=e(n)+pr_y(n);

else

pr_y(n)=round(((a1*y(n-1)+a2*y(n-2))));

y(n)=e(n)+pr_y(n);

end

end

w = fft(e,Fs*t);

w = w(1:(Fs*t/2));

r = abs(w);

r1=r/(Fs*t/2);

beep;

wavplay(y*sh, Fs);

figure

plot(tm,y,'--b',tm,x,':r',tm,e1,'y');

title('Синий - y, красный - x, желтый - разностный сжатый');% Подпись графика

figure% Создаем новое окно

plot(f,m1,'b',f,r1,'m')

title('Спектры сигналов. Синий - исходный сигнал, сиреневый - с удаленными формантами');% Подпись графика

xlabel('Частота (Гц)'), grid on;% Подпись оси х графика

ylabel('Амплитуда'), grid on;% Подпись оси у графика

file_x=fopen('x_predicted.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', pr_x(n));

end

fclose(file_x);

file_x=fopen('x.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', x(n));

end

fclose(file_x);

file_x=fopen('e_before_commpression.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', e2(n));

end

fclose(file_x);

file_x=fopen('e_commpressed.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', e1(n));

end

fclose(file_x);

file_x=fopen('e_reconstructed.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', e(n));

end

fclose(file_x);

file_x=fopen('y_predicted.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', pr_y(n));

end

fclose(file_x);

file_x=fopen('y.txt','wt');

for n=1:Fs*t;%

fprintf(file_x,'%f\n', y(n));

end

fclose(file_x);

При помощи вышеописанной программы получим осциллограммы и спектрограммы речевого сигнала при произношении фразы «sixty two» и определим какие коэффициенты будут оптимальными в этом случае.

Эксперимент № 1

а1=1.8 и а2=-0.8

Рис. 18

Рис. 19

Эксперимент № 2

а1=1.8 и а2=-0.9

Рис. 20

Рис. 21

Эксперимент № 3

а1=1.4 и а2=-0.9

Рис. 22

Рис. 23

Эксперимент № 4

а1=1 и а2=-0.9

Рис. 24

Рис. 25

Эксперимент № 5

а1=1.8 и а2=-1

Рис. 26

Рис. 27

Проанализировав полученные результаты: таблицы значений, осциллограммы и спектрограммы сигналов следует сделать вывод о том, что оптимальными для передачи речевого сигнала являются коэффициенты а1=1.8 и а2=-0.9. Именно при этих значениях можно соблюсти баланс между заметным уменьшением разностного сигнала и качеством восстановленного сигнала.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]