асcист .
каф . КСМ Ковальов М.П., ст.гр.
КСМ-06-2 Шепель
С. В.
Криворожский
технический университет
Разработка программы синтеза речи с
применением технологии MS Agent
Речевой
вывод информации из компьютера - проблема не менее важная, чем речевой ввод.
Это вторая часть речевого интерфейса, без которой разговор с компьютером не
может состояться. Имеется в виду прочтение вслух текстовой информации, а не
проигрывание заранее записанных звуковых файлов, то есть выдачу в речевой форме
заранее не известной информации.
Microsoft Agent представляет собой
компонент ActiveX, поэтому его можно использовать не только в
составе HTML-документов, но и в собственных программах, написанных на Visual
Basic, Visual C++,
Visual J++ или Borland
Delphi.
Microsoft
Agent — это набор программных сервисов, которые поддерживают воспроизведение
интерактивных анимированных персонажей в рамках интерфейса Microsoft Windows.
Разработчики могут использовать эти персонажи для создания различных
интерактивных приложений, справочных систем, электронных пособий, а также для
представления информации в HTML-документах различными способами.
Для
программирования интерфейса MS Agent необходимо выполнить
следующие действия:
1.
Подключить файлы MicrosoftAgent.h и MicrosoftAgent.cpp в проект, а также вписать
(#include) ссылку на заголовочный файл в cpp исходного текста программы;
2. объявить
объект класса CMicrosoftAgent;
3. вызовите
функцию объекта CreateAgent;
4. после
вызова CreateAgent надо загрузить собственно анимацию - для этого необходимо
вызвать функцию объекта LoadVoice, где в качестве параметра необходимо передайть
полный путь к файлу с расширением *.acs.
5. все
команды агенту подаются через функцию PlayAnimation, сама комада
передаётся обычной текстовой строкой, список команд различен для каждого .acs -
файла, например для Merlin'а (merlin.acs) полный список команд приведён в
MSDN, для других анимаций список их
команд зашит непосредственно в их же .acs - файле, причём в Unicode –
кодировке.
У самого MS
Agent есть также ещё собственное контекстное меню, которое появляется при клике
по агенту правой кнопкой мыши, однако возможность оперирования с ним в разработанной
программе не реализована.
Рис. 1.
Главное окно программы
В
разработанной программе для синтеза речи используется технология MS Agent. Программа имеет интерфейс
текстового редактора, а также основные функции форматирования и изменения стиля
текста. Кнопки «Произнести» и «Стоп» предназначены для управления процессом
синтеза. На рисунке рис.1 отображено главное окно интерфейса программы.
Пункт меню
«Файл» служит для открытия, закрытия, сохранения текстовых файлов в
распространенных форматах .txt и .rtf,
а так же для выхода из программы. Пункт «Правка» служит для выделения,
вырезания, копирования и вставки теста. В пункте меню «Формат» используется для
изменения цвета и формата текста, а так же для его маркирования. При выборе
пункта меню «Справка» на экран выводиться сообщение о названии программы, а так
же ее разработчике.
В программе
имеются настройки голоса персонажа, а так же
возможность выбора одного из доступных в программе персонажей.
Пользователь может выбрать тип голоса персонажа, женский или мужской,
громкость, и скорость воспроизведения текста.
Так как в
программе MS Agent используется ActiveX control, то необходимо что бы в системе
был установлен COM компонент управления
агентом Microsoft Agent Control 2.0.
Для того что
бы персонаж произнес напечатанный текст необходимо выделить нужный фрагмент
текста и нажать кнопку «Произнести» на панели инструментов. В настоящее время
Agent может разговаривать на 11 языках, в числе которых есть и русский. Выше
было сказано, что ядро Agent должно быть установлено на компьютере, где
программа будет выполняться. А для использования персонажа, который будет
говорить, нужен ещё и Text-to-speech engine для соответствующего языка. Так,
для русского языка это модуль Lernout TTS Engine. Только после его установки
персонаж заговорит по-русски.
Чтобы
заставить персонажа произнести фразу, существует метод Speak. Перед
использованием Speak нужно указать язык, на котором Agent должен говорить,
иначе он попытается говорить на языке по умолчанию. Русский язык в Microsoft
обычно числится под номером &H0419, итак:
//что бы персонаж говорил по-русски
Character->LanguageID = 0x419;
//присваиваем переменной
выделеный текст
String^
myText=this->richTextBox1->SelectedText;
//передача текста агенту
Character->Speak
("\\Vol="+trackBar1->Value*655+"\\ \\spd="+this-> trackBar2-> Value.ToString()+"\\ "+myText,"");
//произношение текста
Character->Play ("Wave");
Для
изменения параметров скорости и громкости речи служат специальные управляющие
коды. Так для управления громкость речи используется код \Vol=number\, а для
управления скоростью произношения речи \Spd=number\.
Что бы
изменить тип голоса персонажа были использованы специальные java-скрипты
с кодом мужского и женского голосов:
// применить
женский тип голоса
this->Character->TTSModeID="{06377F80-D48E-11d1-B17B-0020AFED142E}";
// применить
мужской тип голоса
this->Character->TTSModeID="{06377F81-D48E-11d1-B17B-0020AFED142E}";
Сама
программа для синтез речи, а также её аналоги может быть использован в технике
связи, для помощи слепым и немым, при управлении человеком со стороны автомата,
для выдачи информации о технологических процессах, в робототехнике, в
акустическом диалоге человека с компьютером. Синтез речи может потребоваться во
всех случаях, когда получателем информации является человек.
Список использованой литературы
1. MS Agent. Графические персонажи для интерфейсов. А. Климов. СПб.: «Питер»,
2005. — 352 с., 3000 экз.
2. Сайт журналу на Исходниках.RU:
http://www.sources.ru/magazine/1204/speech_api.html.
3. Сайт журналу RSDN: http://www.rsdn.ru/article/multimedia/msagent.xml.
4. Сайт
посвященный синтезу речи: http://www.speech-soft.ru.