ас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.