
- •Н аціональний технічний університет України «Київський політехнічний інститут»
- •Завдання на дипломний проект (роботу) студенту
- •Р еферат
- •Перелік прийнятих скорочень
- •Постановка задачі
- •Розділ 1 аналіз шляхів налагодження інтерфейсу користувача з програмними додатками
- •1.1 Існуючі технології інтерфейсів, критерії та оцінка їх ефективності
- •1.2 Голосовий інтерфейс та його практичне застосування
- •1.3 Системи розпізнавання мови
- •1.4 Огляд продуктів, які використовують технології голосового інтерфейсу
- •1.5 Реалізація голосового інтерфейсу в AutoCad
- •Розділ 2 методика побудови та оцінювання ефективності голосового інтерфейсу
- •2.1 Попередній аналіз сигналу
- •2.2 Приховані марківські моделі
- •2.3 Алгоритм Вітербі
- •2.3 Методика goms
- •Розділ 3 розробка програм з голосовим інтерфейсом
- •3.1 Вибір інструментальної платформи
- •3.2 Вимоги до програм та інструкція користувача
- •3.3 Опис розроблених програм з голосовим інтерфейсом
- •Розділ 4 експериментальні дослідження ефективності голосового інтерфейсу у програмах
- •4.1 Програма «Голосовий калькулятор – 1»
- •4.2 Програма «Голосовий калькулятор-2»
- •4.3 Програма «Голосовий блокнот»
- •4.4 Програма «Голосовий знімок екрану»
- •Розділ 5 охорона праці
- •5.1 Загальні положення
- •5.2 Гігієна праці і санітарія
- •Висновки і перспективи подальших досліджень
- •Перелік посилань
Розділ 3 розробка програм з голосовим інтерфейсом
3.1 Вибір інструментальної платформи
Для програмної реалізації голосового інтерфейсу використовуються:
JDK ( J2SE );
Eclipse;
Sphinx-4;
JSAPI ( Included in Sphinx);
Apache Ant.
Далі більш детально розглянемо:
JDK – Java Development Kit (засіб розробки на Java). Java дозволяє створювати самодостатні програми для різних операційних систем як то Windows, Linux тощо. Крім того, в даний час Java широко застосовується для програмування різних пристроїв, наприклад, мобільних телефонів, на ній також пишуться комп'ютерні ігри для них, створюють також програми для інтернету – аплети і програми для серверів – сервлети та JSP (Java Server Pages).
Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу об'єктну модель С++, проте її модифіковано. Усунуто можливість появи деяких конфліктних ситуацій, що могли виникнути через помилки програміста та полегшено сам процес розробки об'єктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено віртуальній машині. Передусім, Java розроблялась як платформо-незалежна мова, тому вона має менше низькорівневих можливостей для роботи з апаратним забезпеченням. За необхідності таких дій java дозволяє викликати підпрограми, написані іншими мовами програмування.
Java – проста, об’єктно-орієнтована, інтерпретована, надійна, безпечна, архітектурно-нейтральна, переносна, високоефективна багатопотокова і динамічно-орієнтована мова. Цей набір слів достатньо точно описують мову Java. Розглянемо кожне з них.
Об’єктно-орієнтована
Термін “об’єктно-орієнтована мова” для програміста означає, що при розробці додатків він оперує, головним чином, даними і засобами їхньої обробки, а не мислить на мові процедур (як робиться це в Pasсal і С).
Інтерпретована
Java – мова, що інтерпретується. Компилятор Java створює байт-код для віртуальної машини Java (JVM – Java Virtual Machine), а не “нинішній” машинний код для машини, на якій працює програма. Щоб запустити програму на Java, необхідно використати інтепретатор Java, що буде виконувати інструкції відкомпільованого байт-коду.
Архітектурно-нейтральна і переносима
Програми на Java компілюється в байт-код архітектурно-нейтрального формату, тому додатки на Java можуть працювати на будь-якій платформі, для якої реалізована виртуальна машина Java. Це особливо важливо для додатків, що функціонують в мережі Internet або інших неоднорідних мережах. Архітектурно-нейтральний підхід також корисний і поза сферою діяльності мережевих додатків. Для розробника додатків на сучасному ринку програмного забезпечення, виникає потреба створювати свої додатки таким чином, щоб вони працювали на комп'ютерах PC, Mac і робочих станціях UNIX. З урахуванням відмінностей в роботі UNIX, Windows95 і Windows NT на платформі PC і нових PowerPC Macintosh стає все важче виробляти програмне забезпечення для всіх можливих платформ. Однак якщо додаток написаний на Java, він може працювати на всіх платформах.
Той факт, що Java є інтерпретованою мовою, підтримує стандартний архітектурно-незалежний формат байт-коду, – це одна наважливіша частина забезпечення перенесення.
Динамічна і розподілена
Java – це динамічна мова. Кожний клас Java може бути завантажений працюючим інтерпретатором Java в будь-який момент часу. Внутрішні бібліотеки теж завантажуються динамічно.
Java є так званою розподіленою мовою. Це означає, що він забезпечує широку підтримку роботи в мережі на високому рівні. Наприклад, клас URL разом з відповідними класами пакету java.net дозволяє читати інформацію з віддаленого файлу також легко, як з локального.
Розподілена природа Java виявляється особливо яскраво в поєднанні з можливостями динамічного завантаження класів. Саме сполучення цих двох властивостей дозволяють інтепретатору Java завантажувати і запускати на виконання програми з Internet.
Проста
Java – проста мова. Розробники Java поставили перед собою мета створити мову, легку для вивчення, тому число мовних конструкцій в ній порівняно невелике. Іншою метою було зробити мову, що здавалася б знайомим більшості програмістів, що полегшило б їх міграцію.
Стійка
Мова Java служить для написання дуже надійного або стійкого програмного забезпечення. Java строго типізована мова, що допускає достатньо простору перевірку можливої невідповідності типів на етапі компіляції. Автоматичний “збір сміття” в Java відвертає втрати блоків в пам'яті і інші фатальні помилки, пов'язані з її виділенням і вивільненням.
Безпечна
Одна з найбільш розрекламованих рис Java – безпека. Вона має дуже велике значення, оскільки Java використовується в мережах. Java розроблась з урахуванням вимог безпеки і в ній реалізовано декілька рівнів безпеки, призначених для захисту користувачевої системи від зловмисних програм.
Високоефективна
Java – інтерпретована мова, тому вона ніколи не буде такою швидкою, як компільовані мови. Ефективність байт-коду, що інтерпретувався Java значно вище, ніж у мов сценаріїв високого рівня, і в той самий час Java забезпечує простоту і переносність.
Багатопотокова
Java – багатопотокова мова. Вона забезпечує підтримку багатьох потоків виконання, що одночасно розв’язують різноманітні задачі. Одна з переваг багатопоточності полягає в поліпшенні інтерактивності графічних додатків[22].
Технологія Java™ складається з двох елементів: мови програмування – Java та програмної платформи підтримки мови Java. Однією з таких платформ є Eclipse.
Eclipse – спільнота розробників відкритого вихідного коду, чиї проекти націлені на побудову відкритої платформи для розробки, що складається з розширюваного середовища розробки, інструментарію та бібліотек для побудови, розгортання та управління програмним забезпеченням в період його життєвого циклу[21].
Sphinx-4 – це модульна і переносна система, яка об'єднує шаблони проектування з існуючих проектів, з достатньою гнучкістю, щоб підтримувати області інтересів дослідників, які розвиваються. Система модульна, тому що вона включає в себе роздільні системи, присвячені специфічним задачам, і вона переносимо, тому що модулі можуть бути легко замінені під час виконання. Щоб застосувати цю систему і забезпечити дослідників робочою системою, Sphinx-4 включає в себе безліч модулів, які реалізовують сучасні методи розпізнавання мови.
JSAPI ( Included in Sphinx) – це програма, яка дозволяє безлічі програм використовувати одні й ті ж функції[31].
Apache Ant - це заснований на Java набір інструментів для зборки додатків.
Ant - це тегова мова. Він обробляє XML-файли, організовані особливим чином. Кожен тег по суті є Java-класом, і є можливість створювати свої теги або розширювати можливості вже наявних.
Ant - це багатоплатформний, заснований на використанні командного рядка продукт, і тому, можлива інтеграція з іншими операційними системами.
Замість того щоб наслідувати функції командного рядка, Ant заснований на Java-класах. Конфігураційний файл влаштований у вигляді XML, з якого можна викликати розгалужену систему цілей, що складається з безлічі дрібних завдань.
Кожна задача є об'єктом, який успадковує відповідний інтерфейс класу Task. Все це дає можливість переносити програму з платформи на платформу. І якщо дійсно необхідно викликати який-небудь процес у Ant є задача <exec>, яка дозволяє це зробити в залежності від платформи[30].