Технології розпізнавання мови Delphi з використанням Microsoft Speech API
Вивчивши цей матеріал, ви зможете написати програму, яка реагуватиме на ваші голосові команди та розрізнятиме їх, використовуючи вихідний набір ключових слів. Ми розберемо установку Microsoft Speech API та необхідних компонентів (все це додається до мануалу). Таким чином, я гарантую Вам, що цей мануал дійсно допоможе ПОВНІСТТЮ розібратися з поставленим завданням. Також додається вихідний код програми, який детально розберемо. На сайті cybern.ru ви знайдете багато корисних матеріалів для програмування на Delphi, тому рекомендую Вам зареєструватися на ньому.
Ну а тепер давайте приступимо до встановлення Microsoft Speech API (далі SAPI) та необхідних компонентів для Delphi. У нашому випадку буде використовуватися Delphi 7, але ви можете використовувати інші версії Delphi, т.к. всі дії установки та роботи з SAPI аналогічні. Отже, почнемо.
Установка
Спочатку встановимо SAPI. Для цього відкрийте файл sapi.exe, який Ви завантажили разом з цим документом. Повинно відкрити це вікно:
Натисніть кнопку “Yes”. Далі відкриється вікно:

Трохи зачекаємо. Відкриється вікно:


Копіювання файлів може тривати кілька хвилин. Коли поточний процес завершиться, відкриється вікно:

Натиснувши “OK”, вам запропонують перезавантажитись. Натисніть “Так” (“Yes”), щоб перезавантажити систему та завершити інсталяцію SAPI.
Встановивши SAPI, приступимо до встановлення компонента Delphi. Запустіть Delphi. У ньому відкрийте “Component -> Import ActiveX Control”. Відкриється вікно:

У списку компонентів ActiveX виберіть “Microsoft Direct Speech Recognition”.
У пункті “Palette page” виберіть “Standard”, щоб компонент з'явився у вкладці Standard.
Проінсталюйте компонент, натиснувши кнопку “Install..”.
Повинен з'явитися компонент TDirectSR:
Тепер все необхідне для роботи у нас встановлено, і ми можемо розпочинати написання нашої програми для розпізнавання команд. Не забудьте, що для розпізнавання мови потрібен працездатний мікрофон. У нього має бути гарна якість, т.к. від цього залежить результат розпізнавання.
Але перед тим, як почати обов'язково повністю пройдіть налаштування та навчання движка розпізнавання вашого голосу:
C:\Program Files\Microsoft Speech SDK\Misc\micwiz.exe


У ході цього процесу, двигун вивчить особливості вашої вимови і запам'ятає їх, що надалі покращить якість розпізнавання у багато разів.
Розробка програми
Відкрийте ваш Delphi та створіть новий проект. Створіть компонент DirectSR1. Він має виглядати так:

Далі на формі створюємо такі компоненти:
- EnginesList: TComboBox
- Button1: TButton
- ProgressBar1: TProgressBar
- Label1: TLabel
Виглядати це може приблизно так:

Тепер нам треба змінити властивості компонентів:
- ProgressBar1: Параметру Max привласнити “MaxWord” (без лапок)
- Button1: Caption присвоїти “Слухати” (без лапок)
- Label1: Caption присвоїти “Натисніть 'Слухати' ”
Створіть обробник OnCreate у Form1:
У цій процедурі ми отримуємо список всіх движків розпізнавання мови та виводимо їх у EnginesList при запуску програми.
Тепер створіть обробник OnChange у EnginesList:
Ця процедура відповідає за зміну двигуна у DirectSR1 при виборі його в EnginesList.
Створіть обробник OnCreateу Button1:
Давайте розберемося з тим, що таке файл Grammar.txt.
Цей файл містить список слів і фраз, які вам потрібно розпізнати. Цей список задається за допомогою простого коду, який за синтаксисом нагадує ini файл. Наприклад:
Розберемося із синтаксисом файлу 'Grammar.txt'.
Перші три рядки містять опис бібліотеки слів. Розбиратися в них не треба і змінювати також. Залишіть їх такими.
[Start] – це позначка початку списку слів. Далі кожен рядок, що входить до списку з ім'ям Start, починається з Start = . Після цього вказується саме слово або фраза (англійською мовою!).
[opt] означає що таке слово вимовляти необов'язково, тобто. вийде два варіанти:
Припустимо, у нас є: Start = Close [opt] program
Тоді може вийти Close program, але може і просто Close.
Про структуру файлу Grammar.txt ми поговорили поверхово. Більш складні приклади ви зможете знайти в папці "C: Program Files Microsoft Speech SDK SR".
У нашій програмі ми будемо використовувати наступний файл “Grammar.txt”:
Створіть його у папці з нашою програмою та назвіть “Grammar.txt”.
Тепер давайте навчимося обробляти цей файл. Для цього створіть обробник OnPhraseFinish у компонента DirectSR1:
Якщо фраза була повністю вимовлена і розпізнана, то спрацьовує обробник OnPhraseFinish.
У ньому константу Phrase заноситься текстове значення сказаної фрази, тобто. то текстове значення з файлу "Grammar.txt", яке найбільше схоже з сказаною фразою.
Як наочний приклад ми виводимо значення Phrase у текстовому повідомленні на екран.
Після цього ми звіряємо, що було вимовлено з “Close” та “Close program” і якщо одне з нихзбігається, то закриваємо програму.
Тепер хотілося б додати вимірник гучності для зручності. Для цього створимо обробник OnVUMeter у компонента DirectSR1:
Тепер при прослуховуванні ми бачимо рівень гучності нашого голосу, що дає нам знати, що йде прослуховування.
Ось ми й написали просту програму, яка здатна розпізнавати наші голосові команди.
Якщо у вас Windows Vista або нові версії Windows, то запускати програму рекомендую від імені адміністратора.
Завантажити все необхідне можна за посиланням: