Microsoft, несмотря на всю льющуюся на них критику, постоянно предоставляет разработчикам новые возможности. Несколько лет назад появилась очень интересная технология – Microsoft Agent. Где можно было наблюдать её применение? Например, в популярном переводчике Magic Gooddy. Основной "фишкой" данной программы является утёнок Gooddy, который свободно может говорить на русском и английском языках. Более того, этот утёнок может ещё и "понимать" некоторые голосовые команды, произнесённые в микрофон. У Gooddy, ко всему прочему, всё время меняется настроение: если долго не пользоваться его услугами, то он начинает грустить, а при переводе он выглядит самым счастливым утёнком в мире. Этот утёнок со всеми его возможностями является наглядным примером применения технологии MsAgent.
Вот таким вступлением я открыл небольшую серию статей, посвящённых Microsoft Agent. В первой части мы рассмотрим аспекты использования MsAgent в web-страницах. Представьте себе, сидите вы в интернете, открываете некую web-страничку, а тут из лампы вылазит Джин из мультфильма "Аладдин" и начинает что-нибудь вам рассказывать. А если вы вдруг наведёте курсор мыши на какую-нибудь гиперссылку, то Джин подлетит к ней и доходчиво объяснит, куда вы попадёте, нажав на ссылку… Здорово? Вот приблизительно такую страничку мы и сотворим в данной статье.
Agent.Characters.Load ("Genie", "Genie.acs");
Genie = Agent.Characters.Character("Genie");
…
Вот несколько анимаций для персонажа "Джин":
Пример: Genie.Play("Write");
Тэг Значения и описание
\Chr="значение"\ Изменяет голос персонажа:
"Normal" (по умолчанию) – нормальный голос
"Monotone" – монотонный голос
"Whisper" – шёпот
\Emp\ На следующем за тэгом слове делается ударение
\Map="spokentext"="balloontext"\
Персонаж вслух произносит строку "spokentext", а над ним отображается строка "balloontext". Т.е. персонаж как бы думает одно, а говорит совершенно другое.
\Pau=значение\
Делает паузу, которая длится "значение" миллисекунд
\Pit=значение\
Устанавливает частоту произношения в Герцах
\Rst\ Устанавливает все параметры в исходное состояние
\Spd=значение\ Устанавливает скорость произношения текста в "словах в минуту"
\Vol=значение\ Устанавливает громкость произношения текста (от 0 до 65535)
Пример для JavaScript: Genie.Speak("\\chr=\"Whisper\"\\\\Pit=18400\\\\Spd=100\\Привет!");
2) С браузером Internet Explorer без установленной MsAgent;
3) С другим браузером.
Dim agent
HaveAgent = False
On Error Resume Next
Set agent = CreateObject("Agent.Control.1")
HaveAgent = IsObject(agent)
End Function
Иван Ширко
ishyrko@gmail.com
Теперь самое время установить MsAgent. Для этого нужно отправиться на страницу http://www.microsoft.com/msagent/ и скачать оттуда следующие файлы:
1) Сам Microsoft Agent – http://activex.microsoft.com/activex/controls/agent2/MSagent.exe (395 кб), обязательно;
2) Перевод на русский язык различных диалогов, надписей и т.п. – http://activex.microsoft.com/activex/controls/agent2/AgtX0419.exe (128 кб), необязательно;
3) один из персонажей (например, Джин из мультфильма "Аладдин") – http://download.microsoft.com/download/0/0/c/00cde5f8-321d-4325-baae-eb27f1bde85f/Genie.exe (1.6 Mb), необязательно, можно работать и с другим персонажем;
4) компонент для произношения текстов (для русского языка) – http://activex.microsoft.com/activex/controls/agent2/lhttsrur.exe (2.9 Mb), необязательно;
5) Поддержка SAPI (нужна для произношения текстов, в Win2000 должна быть установлена изначально) – http://activex.microsoft.com/activex/controls/sapi/spchapi.exe (824 кб), необязательно.
После установки всех этих компонентов можно приступать к разработке приложений, использующих технологию MsAgent. Начнём мы, как уже было сказано, с web-страниц. Сразу замечу, что MsAgent накладывает некоторые ограничения на пользователя:
– MsAgent не будет работать ни в одном web-браузере, кроме Internet Explorer (разработчик ведь Microsoft). Версия IE должна быть не ниже, чем 3.02;
– у посетителя должно быть установлено необходимое программное обеспечение (его мы уже скачали).
Теперь сделаем маленькую пробную страничку. Откройте самый продвинутый HTML-редактор с названием Блокнот (некоторым он известен как NotePad). Запишите в нём следующие строки:
1) Сам Microsoft Agent – http://activex.microsoft.com/activex/controls/agent2/MSagent.exe (395 кб), обязательно;
2) Перевод на русский язык различных диалогов, надписей и т.п. – http://activex.microsoft.com/activex/controls/agent2/AgtX0419.exe (128 кб), необязательно;
3) один из персонажей (например, Джин из мультфильма "Аладдин") – http://download.microsoft.com/download/0/0/c/00cde5f8-321d-4325-baae-eb27f1bde85f/Genie.exe (1.6 Mb), необязательно, можно работать и с другим персонажем;
4) компонент для произношения текстов (для русского языка) – http://activex.microsoft.com/activex/controls/agent2/lhttsrur.exe (2.9 Mb), необязательно;
5) Поддержка SAPI (нужна для произношения текстов, в Win2000 должна быть установлена изначально) – http://activex.microsoft.com/activex/controls/sapi/spchapi.exe (824 кб), необязательно.
После установки всех этих компонентов можно приступать к разработке приложений, использующих технологию MsAgent. Начнём мы, как уже было сказано, с web-страниц. Сразу замечу, что MsAgent накладывает некоторые ограничения на пользователя:
– MsAgent не будет работать ни в одном web-браузере, кроме Internet Explorer (разработчик ведь Microsoft). Версия IE должна быть не ниже, чем 3.02;
– у посетителя должно быть установлено необходимое программное обеспечение (его мы уже скачали).
Теперь сделаем маленькую пробную страничку. Откройте самый продвинутый HTML-редактор с названием Блокнот (некоторым он известен как NotePad). Запишите в нём следующие строки:
<html>
<head>
<title>Microsoft Agent</title>
<Object ID="Agent" Width=0 Height=0
ClassID="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F"
CodeBase="#VERSION=2,0,0,0">
</Object>
<script language=javascript>
<!--
var Genie;
function LoadAgent()
{
Agent.Characters.Load ("Genie", "Genie.acs");
Genie = Agent.Characters.Character("Genie");
Genie.Show();
//А здесь можно написать другие команды
}
function UnLoadAgent()
{ Agent.Characters.Unload("Genie");}
//-->
</script>
</head>
<body
onload="LoadAgent()"
onunload="UnLoadAgent()">
<html>
Теперь сохраните данный код в файл *.html и откройте полученную страничку при помощи Internet Explorer. После загрузки страницы из дыма появится Джин, поприветствует вас поклоном и произнесёт на русском языке приветственную фразу. Давайте посмотрим, как мы добились такого результата.
В тэге <object> мы подключили к нашей странице объект AGENT, который предоставит нам все возможности технологии MsAgent. После этого на языке JavaScript записали две функции – LoadAgent и UnLoadAgent. А затем в тэге указали, что эти функции должны вызываться при загрузке и закрытии страницы соответственно. После строчек
…В тэге <object> мы подключили к нашей странице объект AGENT, который предоставит нам все возможности технологии MsAgent. После этого на языке JavaScript записали две функции – LoadAgent и UnLoadAgent. А затем в тэге указали, что эти функции должны вызываться при загрузке и закрытии страницы соответственно. После строчек
Agent.Characters.Load ("Genie", "Genie.acs");
Genie = Agent.Characters.Character("Genie");
…
мы можем "давать команды" Джину: Genie.Show; Genie.Play; Genie.Speak; и т.д. Давайте рассмотрим некоторые команды более подробно:
Команда Пояснения
Show Служит для появления персонажа на экране
Hide Скрывает персонажа
MoveTo(X, Y) Перемещает персонажа в точку с координатами (X; Y), координаты задаются в пикселях
Play("Имя анимации"); Проигрывает заданную анимацию.
GestureAt(X, Y) Персонаж указывает рукой в точку с координатами (X; Y)
Think("Мысль") Персонаж "думает Мысль", т.е. звука нет, но над персонажем появляется текст Мысли.
Speak("Фраза") Персонаж произносит Фразу.
Команда Пояснения
Show Служит для появления персонажа на экране
Hide Скрывает персонажа
MoveTo(X, Y) Перемещает персонажа в точку с координатами (X; Y), координаты задаются в пикселях
Play("Имя анимации"); Проигрывает заданную анимацию.
GestureAt(X, Y) Персонаж указывает рукой в точку с координатами (X; Y)
Think("Мысль") Персонаж "думает Мысль", т.е. звука нет, но над персонажем появляется текст Мысли.
Speak("Фраза") Персонаж произносит Фразу.
Вот несколько анимаций для персонажа "Джин":
Пример: Genie.Play("Write");
MsAgent позволяет управлять даже голосом персонажа. Делается это при помощи специальных тэгов, которые нужно добавлять к произносимой фразе:
Тэг Значения и описание
\Chr="значение"\ Изменяет голос персонажа:
"Normal" (по умолчанию) – нормальный голос
"Monotone" – монотонный голос
"Whisper" – шёпот
\Emp\ На следующем за тэгом слове делается ударение
\Map="spokentext"="balloontext"\
Персонаж вслух произносит строку "spokentext", а над ним отображается строка "balloontext". Т.е. персонаж как бы думает одно, а говорит совершенно другое.
\Pau=значение\
Делает паузу, которая длится "значение" миллисекунд
\Pit=значение\
Устанавливает частоту произношения в Герцах
\Rst\ Устанавливает все параметры в исходное состояние
\Spd=значение\ Устанавливает скорость произношения текста в "словах в минуту"
\Vol=значение\ Устанавливает громкость произношения текста (от 0 до 65535)
Пример для JavaScript: Genie.Speak("\\chr=\"Whisper\"\\\\Pit=18400\\\\Spd=100\\Привет!");
С помощью представленных команд можно создать довольно эффектную и интерактивную страничку. Про другие команды и свойства мы поговорим в следующей части, когда перейдём к Delphi, а пока рассмотрим несколько аспектов использования MsAgent в web-страничках. Предположим, вы поместили страничку в интернете. Тогда её могут просматривать три вида пользователей:
1) С браузером Internet Explorer и установленной MsAgent;2) С браузером Internet Explorer без установленной MsAgent;
3) С другим браузером.
Именно эти три случая мы должны обрабатывать в нашей страничке. Сделать это не так и сложно. Вначале запишем функцию HaveAgent, которая будет определять, установлены ли компоненты MsAgent в системе:
Function HaveAgent()Dim agent
HaveAgent = False
On Error Resume Next
Set agent = CreateObject("Agent.Control.1")
HaveAgent = IsObject(agent)
End Function
Теперь на основе этой функции можно написать шаблон странички, которая будет предусматривать все возможные варианты:
<SCRIPT LANGUAGE=VBSCRIPT>
If HaveAgent() Then
document.write "<H2 align=center>MsAgent найден</H2>"
Else
'Microsoft Agent control was not found.
document.write "<H2 align=center> MsAgent не найден</H2>"
End If
Function HaveAgent()
Dim agent
HaveAgent = False
On Error Resume Next
Set agent = CreateObject("Agent.Control.1")
HaveAgent = IsObject(agent)
End Function
</SCRIPT>
Вот и всё! По этому небольшому шаблону можно писать web-странички с использованием MsAgent, которые будут корректно отображаться во всех браузерах. Для примера я создал страничку, которую можно найти по адресу http://www.agentsample.narod.ru/
На этом мы заканчиваем рассмотрение использования технологии Microsoft Agent в web-страничках. В следующей части мы перейдём к Delphi.
Иван Ширко
ishyrko@gmail.com
Комментариев нет:
Отправить комментарий