Лабораторна робота №2

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Моделювання
Група:
СКС

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Лабораторна робота №2 „Моделювання роботи препроцесора для попередньої обробки мовних сигналів ” Львів-2005 1.Мета роботи: опрацювати та випробувати в середовищі MATLAB 6.5 програму, яка реалізує етапи попередньої обробки мовних зразків. 2.Теоретична частина: Сучасні системи для розпізнавання суцільної мови з великим словником ґрунтуються на принципах статистичного розпізнавання образів [3,4]. На рис.1 показана структура типової системи статистичного розпізнавання, що включає чотири складових.  Складові виконують такі функції: - звуковий препроцесор здійснює початковий етап обробки, на якому з мовного сигналу вибирається вся необхідна звукова інформація в компактному вигляді; - звукова модель забезпечує обчислення правдоподібності будь-якої послідовності звукових векторів при заданій послідовності слів; - модель мови забезпечує обчислення апріорної ймовірності послідовності слів незалежно від спостереження мовного сигналу. Для цього треба забезпечити механізм оцінки ймовірності певного слова у фразі, якщо знаємо попередні слова; - класифікатор зводить воєдино дані від трьох раніше описаних компонент і знаходить найбільш імовірний текст (транскрипцію). Принципи статистичного розпізнавання образів полягають у наступному [4]. На першому етапі мовний зразок перетворюється звуковим процесором на послідовність звукових векторів . Кожен вектор є стислим поданням короткочасного мовного спектру на інтервалі, як правило, близько 25 мс зі зсувом інтервалів на 10 мс. Типова фраза з десяти слів по 6-7 звуків у кожному може мати тривалість біля 3 с і представлятися послідовністю з Т=300 звукових векторів. У загальному, фраза складається з послідовності слів . Робота системи розпізнавання полягає у визначенні найбільш імовірної послідовності слів , маючи звуковий сигнал Y. Для цього використовується правило Байєса [4]: . Ця рівність показує, що для знаходження найбільш правдоподібної послідовності слів W, повинна бути знайдена послідовність, що робить максимальним добуток P(W) та P(Y/W).Так як значення знаменника P(Y) не залежить від W, то його при розпізнаванні ігнорують. Перший із співмножників є апріорною ймовірністю спостереження W незалежно від спостереження мовного сигналу. Ця ймовірність визначається моделлю мови. Другий співмножник є ймовірністю спостереження послідовності векторів Y при заданій послідовності слівW. Ця ймовірність визначається звуковою моделлю. В звуковій моделі послідовності слів розбиваються на базові звуки – фонеми. Кожна індивідуальна фонема представляється прихованою моделлю за Марковим (англійська назва – hidden Markov model (HMM)). HMM-модель фонеми, як правило, має три породжуючі стани та вхідний і вихідний стан. Вхідний і вихідний стани дозволяють моделям фонем об’єднуватися, щоб утворювати слова та об’єднувати слова для утворення речень (послідовності слів). Розглянемо більш детально функції препроцесора для попередньої обробки мовних сигналів. Звуковий препроцесор Потрібен початковий етап обробки, на якому з мовного сигналу вибирається вся необхідна звукова інформація в компактному вигляді. Принципове припущення, яке робиться в сучасних розпізнавачах [3,4] є те, що мовний сигнал розглядається як стаціонарний (тобто спектральні характеристики відносно постійні) на інтервалі в кілька десятків мілісекунд. Тому основною функцією попередньої обробки є розбиття вхідного мовного сигналу на інтервали [1 - 4] і отримання для кожного інтервалу згладженої спектральної оцінки. Зсув між інтервалами звичайно рівний 10 мс. Інтервали, як правило , перекриваються і мають тривалість 25 мс. Як звичайно для обробки такого типу до кожного інтервалу на початку застосовується функція вікна (наприклад, вікно Гемінга). Часто застосовують високочастотне підсилення, щоб компенсувати послаблення, спричинене розсіюванням звуку від губ. Щоб отримати спектральні оцінки використовується швидке перетворення Фур’є. Фур’є спектр згладжується додаванням спектральних коефіцієнтів у межах “трикутних” частотних смуг розташованих на нелінійній (подібній до логарифмічної) Mel-шкалі [4]. Для граничної частоти мови (16 КГц) беруть 24 таких частотних смуги. Mel-шкала введена для наближення частотного розділення людського вуха, яке є лінійним до 1000 Гц та логарифмічним понад 1000 Гц. З метою зробити статистику оціненого спектру потужності мови близькою до Гауссової до виходів набору фільтрів застосовується логарифмічний стиск. До прологарифмованих коефіцієнтів застосовують дискретне косинусне перетворення. Це зосереджує спектральну інформацію в кепстральних коефіцієнтах з малими номерами, а також декорелює їх, дозволяючи при наступному статистичному моделюванні використовувати діагональні коваріаційні матриці. Перші 12 кепстральних коефіцієнтів та логарифм енергії інтервалу сигналу утворюють базовий 13-елементний звуковий вектор. Є ряд додаткових перетворень, які можна застосувати для отримання остаточного звукового вектора. Для зменшення мультиплікативного шуму на звукових векторах роблять нормалізацію кепстральних коефіцієнтів. Для кожної з дванадцяти компонент обчислюються середні значення по всіх звукових векторах даного мовного зразка. Ці середні значення віднімаються від відповідних компонент всіх звукових векторів даного мовного зразка. Компоненти логарифму енергії даного мовного зразка, які менші від максимального значення на 50 дБ, заміняються на значення цього порогу. Потім всі значення логарифму енергії масштабуються так, щоб максимальне значення стає рівним 1,0. Припускається, що кожен звуковий вектор не зв’язаний зі своїми сусідами. Це досить грубе припущеня, бо фізичні обмеження голосового тракту людини передбачають плавні переходи між сусідніми спектральними оцінками. Проте додавання різниць та різниць різниць базових елементів значно пом’якшує припущення. Переважно для цього беруться два попередні та два наступні вектори. У результаті отримуємо 39-елементний вектор [4]. Кілька інших можливих варіантів отримання звукових векторів описано в [3]. Попередня обробка мовних зразків (реалізація звукового препроцесора) ISOLET База даних ISOLET складається з 7800 мовних зразків окремо вимовлених звуків англійської мови. Два зразки кожного звуку були записані від 150 осіб. Зразки дискретизовані з частотою 16 КГц та мають розрядність 16. Середня тривалість зразків - 0,5 с. Етапи попередньої обробки мовних зразків у базі даних ISOLET детально описані нижче. 1. Оцифрований (дискретизований за часом та квантований за рівнем) мовний сигнал розбиваємо на блоки по 25.6 мс із зсувом кожні 10 мс , тобто, блоки по 409 відліків кожен блок, із зсувом на 160 відліків. 2. Пропускаємо блоки через фільтр першого порядку  , де Sn – n-й відлік у блоці. 3. Застосовуємо до блоку вікно Гемінга згідно з виразом  для n =1,...,409 4. Збільшуємо довжину блоку до 512 елементів за рахунок доповнення його вкінці потрібною кількістю нулів. Після цього застосовуємо дискретне перетворення Фур’є й отримуємо 256 спектральних комплексних значень. 5. Нульовий член ігноруємо, а величини решта 255 спектральних значень усереднюємо. Усереднення реалізуємо як 24 трикутні смугопропускні фільтри. Нижня, середня та верхня частоти подані в таблиці. Вони апроксимують Mel-шкалу згідно з формулою g=2595 log10(1+ f / 700), де g – частота в Mel, f – частота в Герцах. Смуга Нижня частота Середня частота Верхня частота  1 0,000 Гц 74,24 Гц 156,4 Гц  2 74,24 Гц 156,4 Гц 247,2 Гц  3 156,4 Гц 247,2 Гц 347,6 Гц  4 247,2 Гц 347,6 Гц 458,7 Гц  5 347,6 Гц 458,7 Гц 581,6 Гц  6 458,7 Гц 581,6 Гц 717,5 Гц  7 581,6 Гц 717,5 Гц 867,9 Гц  8 717,5 Гц 867,9 Гц 1034 Гц  9 867,9 Гц 1034 Гц 1218 Гц  10 1034 Гц 1218 Гц 1422 Гц  11 1218 Гц 1422 Гц 1647 Гц  12 1422 Гц 1647 Гц 1895 Гц  13 1647 Гц 1895 Гц 2171 Гц  14 1895 Гц 2171 Гц 2475 Гц  15 2171 Гц 2475 Гц 2812 Гц  16 2475 Гц 2812 Гц 3184 Гц  17 2812 Гц 3184 Гц 3596 Гц  18 3184 Гц 3596 Гц 4052 Гц  19 3596 Гц 4052 Гц 4556 Гц  20 4052 Гц 4556 Гц 5113 Гц  21 4556 Гц 5113 Гц 5730 Гц  22 5113 Гц 5730 Гц 6412 Гц  23 5730 Гц 6412 Гц 7166 Гц  24 6412 Гц 7166 Гц 8000 Гц  6. Логарифмуємо отримані 24 середні значення. 7. Обчислюємо перші 12 значень дискретного косинусного перетворення.  для i=1…12 де mj - значення логарифму j-го середнього значення. 8. У кінець додаємо тринадцятий елемент, енергію поточного блока  . Далі можна обчислювати ще 26 елементів. Це ”різниця” та “різниця-різниць” коефіцієнти. 13 “дельт” [O(u)t]14,….,[O(u)t]26 апроксимують степінь зміни базових коефіцієнтів косинусного перетворення та енергетичних коефіцієнтів. Їх обчислюємо так:  13 “дельта-дельт” , які апроксимують прискорення базових коефіцієнтів косинусного перетворення Фур’є та енергетичних коефіцієнтів, отримуємо за наведеною вище формулою. Кожний логарифмічний енергетичний профіль запису скануємо і низькочастотні значення заміняємо значенням на 50дБ нижче пікового значення. Потім енергетичний профіль масштабуємо так, щоб пікове значення було 1.0. 3.Блок-схема попередньої обробки мовного сигналу  4.Програма на мові сценаріїв MATLAB 6.0 з коментарями: Розглянуто звуковий файл example.wav у середовищі професійного звукового редактора Sony Sound Forge 7.0.  % очищення пам`яті від змінних clear all; % оголошення з одночасним присвоєнням значення для змінної vybirka = 1 ; % читає wave-файл example.wav та повертає мовні зразки у масив signal, амплітуда значень за % модулем не перевищує 1 signal = wavread('example.wav') ; % створення на екрані вихідного зображення вікна розміром 3х3 під номером 1 subplot(3,3,1); % зображує signal у вікні plot(signal); % підписує вікно title('example.wav'); % у змінну заноситься довжина масиву % d=358092 d = length(signal) ; % лічильник відліків % і=357761=2236*160+1 i = 1 ;  % Мовний сигнал параметризується – розбивається на відрізки по 25мс % Оцифрований (дискретизований за часом та квантований за рівнем) мовний сигнал % розбиваємо на блоки по 25,6 мс із зсувом кожні 10 мс, тобто, блоки по 409 відліків кожен % блок, із зсувом на 160 відліків % % Цикл виконається 2236 раз, бо (і=357761=2236*160+1)<(d-408=358092-408=357684) while i < d - 408 % лічильник циклу або лічильник блоків відліків % vybirka=2237 vybirka = vybirka + 1 ; % % 1.Розбиття на блоки % % створення матриці з 409 відліків (біжучий блок) y = signal(i : i + 408) ; % % 2.Пропускаємо блоки через фільтр першого порядку % Це попереднє високочастотне підсилення %  , % де Sn – n-й відлік у блоці. S(1) = 0.0 ; for n = 2 : 409 S(n) = y(n) - y(n - 1) ; end; % % 3.Застосування вікна Хемінга % %  для n =1,...,409 % for n = 1 : 409 D(n) = (0.54 - 0.46 * cos(2 * pi * (n - 1) / 408)) * S(n) ; end; % % 4. Збільшення значень до 512 та застосування дискретного перетворення Фур`є % Набір з 409 відліків доповнюється нулями до степеня двійки (512) з метою виконання % швидкого перетворення Фур`є B = abs(fft(D,512)) ; % Немає сенсу брати усі 512 значень, тому беремо лише 256 комплексних спектральних % доменних значень (перші 256 значень з масиву В) C = B(1:256); % % 5. Усереднення реалізуємо як 24 трикутні смугопропускні фільтри % Задаємо масив частот для апроксимації Mel-шкали % вибираються переважно нижні частоти Hz = [0; 74.24; 156.4; 247.2; 347.6; 458.7; 581.6; 717.5; 867.9 ; 1034; 1218; 1422;1647; 1895; 2171; 2475; 2812; 3184; 3596; 4052; 4556; 5113; 5730;6412; 7166; 8000]; for n = 1 : 26 V(n) = round (Hz(n) * 256 / 8000) ; V(1) = 1; end; % Нульовий член ігноруємо, а величину решти 255 спектральних значень усереднюємо. % Усереднення реалізуємо як 24 трикутні смугопропускні фільтри Sum = 0 ; R(1 : 24) = 0; for j = 1 : 24 N = V(j + 2) - V(j); N1 = V(j + 1) - V(j); D1 = 1 / N1; for k = 1 : N1 Sum = Sum - S(k + V(j)) * D1 * k; end; N2 = V(j + 2) - V(j + 1); D2 = 1 / N2; for k = 1 : N2 Sum = Sum - S(k + V(j + 1)) * (1 - D2 * k) ; end; R(j) = Sum / N ; Result (vybirka,j) = R(j); end; % збільшення лічильника відліків i = i + 160; end; % виведення значень з кожного етапу обробки % виведення останнього блоку з 409 відліків subplot(3,3,2); plot(y);title(' 409 values '); % виведення результатів застосування фільтру першого порядку subplot(3,3,3); plot(S);title(' applying filters'); % виведення результатів застосування вікна Хемінга subplot(3,3,4); plot(D);title(' Hemming'); % виведення результатів застосування збільшення кількості відліків та ШПФ subplot(3,3,5); plot(B);title(' 512 fft '); % виведення результатів відбору перших 256 комплексних спектральних значень subplot(3,3,6); plot(C);title(' 256 elements '); % виведення результатів усереднення як застосування 24-ох трикутних смугопропускних % фільтрів subplot(3,3,7); plot(Result(vybirka,1:24)); title(' 24-element vector'); 5.Результат виконання програми:  6.Висновок: на лабораторній роботі я опрацював та випробував в середовищі MATLAB 6.5 програму, яка реалізує етапи попередньої обробки мовних зразків.
Антиботан аватар за замовчуванням

31.03.2013 15:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!