Delphi World - Як навчити програму Delphi розмовляти

У цій статті я спробую розповісти, як встановити SAPI 5.1 SDK. Потім ми подивимося, як використовувати SDK у Delphi для перетворення тексту в синтезовану мову. Синтезована промова програватиметься через спікер. Все це тестувалося у Delphi 5 та 6.

Якщо Ви використовуєте beta версію операційної системи XP, то у Вас можуть виникнути проблеми. Проблеми пов'язані з тим, що більшість beta версій XP включають ранні версії SAPI 5.1. Тому не намагайтеся інсталювати release версію SAPI 5.1 на XP, вона не працюватиме.

Отже, після завантаження SAPI 5.1 SDK, запустіть speechsdk51.exe для встановлення його на Ваш комп'ютер.

Тепер треба дати знати Delphi про нові об'єкти автоматизації SAPI. Для цього запустіть Delphi 5 або 6 (Я не пробував раніше версії) і відкрийте Project Import Type Library. У діалоговому вікні Import Type Library виберіть “Microsoft Speech Object Library (Version 5.1)”. Якщо Ви не знайшли його у списку, то під час інсталяції SAPI 5.1 відбулися якісь помилки.

Delphi запропонує помістити компоненти SAPI на сторінку ActiveX. Я рекомендую розмістити їх у новій сторінці під назвою “SAPI 5”, оскільки кількість компонентів досить велика (19). Також рекомендую Вам вибрати “Unit dir name”, що відрізняється від тієї, яка пропонується за замовчуванням. Переконайтеся, що на “Generate Component Wrapper” стоїть галочка та натисніть кнопку "Install"

У діалозі Install виберіть закладку “Into new package” та у полі “File name:” введіть ім'я пакета на кшталт “SAPI5.dpk”, натисніть кнопку "Огляд. " (browse) і переконайтеся, що dpk створено тієї ж директорії, у якій було створено компоненти. У діалоговому вікні Install у полі Description задайте будь-який опис, наприклад “SAPI 5 automation components”. Натисніть OK

У підтвердному діалозі натисніть yes. Після цього нові компоненти буде встановлено.

Тепер, якщо Ви подивіться в директорію, яку вказали для установки компонент, то виявите там файл SpeechLib_TLB.pas (і dcr) який містить весь код компоненти (інтерфайс, константи, типи, а також іншу корисну інформацію). Ця директорія також містить (якщо Ви дотримувалися вищенаведених інструкцій) SAPI5.dpk який є результатом пакета.

А тепер найцікавіша частина.

Давайте створимо додаток, який синтезуватиме мовлення. У Delphi створіть новий додаток та помістіть на форму кнопку. На сторінці компонента SAPI5 знайдіть SpVoice і перетягніть його на форму.

Тепер створіть подію onClick для Вашої кнопки, яка має виглядати приблизно так:

Запустіть програму та натисніть кнопку. Здорово?

Метод Speak об'єкту SPVoice надає досить великі можливості. Ці можливості можна використовувати, якщо погратися з другим параметром. У наведеному вище прикладі я використовував режим за замовчуванням, який дозволяє функції повернути керування тільки після завершення програвання звуку. Уникнути цього можна шляхом застосування тексту спеціальних тегів XML.

Документація SDK містить файл sapi.chm який можна знайти в директорії \Program Files\Microsoft Speech SDK 5.1\Docs\Help .

Sapi.chm містить багато інформації. Ось основні компоненти, що часто використовуються, і відповідні їм прапори, які передаються в другому параметрі:

  • Відтворення тексту файлу. (SVSFIsFilename)
  • Асинхронні рішення програвання звуку. Дозволяє функції повернути керування негайно під час відтворення. (SVSFlagsAsync)
  • Дозволяє керувати відтвореннямчерез XML теги (див. розділ під назвою “XML TTS Tutorial”). Теги дозволяють налаштувати тональність звучання, швидкість відтворення та багато іншого. (SVSFIsXML)

Одна з цікавих речей (не документована) полягає в тому, що можна озвучувати заголовок веб-сторінки шляхом встановлення прапора в SVSFIsFilenam, а імені файлу в URL. Якщо Ви з'єднані з інтернетом, спробуйте запустити наступний рядок:

Також за допомогою цього прапора можна програвати wav файли:

Насправді, у цій SAPI набагато більше можливостей, ніж я тут навів. Наступного разу ми детальніше розглянемо інші можливості.