Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №2
з курсу: «Системи запису та відтворення інформації»
на тему: «Дослідження методів компресії аудіоінформації в MATLAB.»
МЕТА РОБОТИ
Набути вміння розробляти власні методи стиснення аудіоінформації та оцінювати їх ефективність.
ЗАВДАННЯ
Ознайомитись з теоретичним матеріалом.
Завантажити wav-файл вказаний в завданні відповідно до свого варіанту.
Вивести основну інформацію про файл: кількість вибірок, кількість каналів, частота дискретизації, кількість біт на вибірку. Прослухати аудіофайл.
Оцінити степінь стиснення звукового файлу кодом Хафмена.
Побудувати гістограму аудіофайлу.
Написати кодер, на базі ДКП, який би компресував мовний сигнал з заданим степенем стиску.
Написати декодер, який відтворює мовний сигнал.
Прослухати декодований мовний сигнал та зробити висновки про якість відтвореного сигналу.
Варіант
Назва файлу
Розмір блоку
Степінь стиску
1
Lab_1_1.wav
100
5
ТЕКСТ ПРОГРАМИ
[y,Fs,bits]=wavread('D:\L1.wav');
% Виводимо основну інформацію про файл
Fs; % Частота дискретизації
bits; % Біт \ вибірку
% Відтворюємо файл в синхронному режимі
wavplay(y,Fs,'sync');
[Y, F, B] = wavread('D:\L1.wav');
% Будуємо гістограму
hist(Y*128, -128:127)
% Обчислюємо ймовірність появи відліків
P=hist(Y*128, -128:127) / length(Y);
% Оцінюємо досяжну кількість біт на вибірку n(опт)
Nopt = 0;
for ii=1:256
if(P(ii) > 0)
Nopt = Nopt - P(ii)*log2(P(ii));
end;end;
ks=bits/Nopt
Y = Y * 128; % Операція для цілого Y
N = 100; % розмір блоку
L = 48; % к-сть збережених коефіцієнтів ДКП на блок
nn = fix(length(Y)/N) % к-сть блоків
mm = 1;
kk = 1;
% Компресія
for ii = 1 : nn-1
x = dct( Y(kk : kk + N-1) );
y(mm : mm + L-1) = x(1 : L);% В y записуємо лише "великі" відліки
mm = mm + L;
kk = kk + N;
end;
% Квантування
y = round(y); % До цілого
[A, X] = hist(y, min(y) : max(y));
NN = length(y);
Ls = 0;
for ii = 1 : length(A)
if(A(ii) > 0)
Ls = Ls + (A(ii)/NN) * log2(A(ii)/NN);
end;
end;
disp('-Ls = '); -Ls
CR2 = (7 / -Ls) * (N / L) % CR2 -- cтепінь стиснення
% Відновлений сигнал
YC = Y * 0;
dx = Y(1 : N) * 0;
mm = 1;
kk = 1
% ...*0 -- це "малі" відліки
for ii = 1 : nn - 1
dx(1 : L) = y(mm : mm + L-1);
x1 = idct( dx );
YC(kk : kk + N-1) = x1;
dx = dx * 0;
mm = mm + L;
kk = kk + N;
end;
YC = YC / 128;
YC = round(YC * 128) / 128;
wavplay(YC, F, 'sync');
РЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ
Основна інформація про wav-файл.
/
2.Гістограма аудіофайлу.
/
3.Степінь стиснення звукового файлу кодом Хафмена.
ks= 1.4685
4.Степінь стиснення звукового файлу методом ДКП.
CR2 =5.1994
ВИСНОВКИ
Головна задача в даній лабораторній роботі була в наступному - розробити власні методи стиснення аудіоінформації за допомогою алгоритмів стиснення аудіосигналів на дискретного косинусного перетворення,яке найчастіше використовують для стиснення мовної інформації, а також оцінити їх ефективність, та ефективність алгоритмів стиснення без втрат, а саме коду Хафмена.
Дослідивши ці методи, можна зробити висновок, що в методах стиснення без втрат первинний сигнал можна відновити з точністю до біту, тоді як в методах компресії з втратами відновлений сигнал не повністю відповідає первинному, але містить основну частину інформації, і у випадку мовної інформації слова є зрозумілими для користувача.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!