![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Poseidon |
|
||||||||||||||||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Введение
Иногда хочется сделать свои приложения более красивыми, интерактивными, т.е. добавить в них дополнительные и необычные возможности. Неужели компания Microsoft не сделала, для разработчиков никаких подобных средств? Сделала и очень даже неплохое, называется эта технология Microsoft Agent. Microsoft Agent - сервис, который позволяет использовать интерактивных анимированных персонажей для улучшения интерфейса ваших приложений. Разработчики могут использовать эти персонажи как интерактивных помощников в своих программах, примером такого персонажа является всем известная скрепка в пакете Microsoft Office. Агенты могут также внедряться в ваши Веб-страницы. И естественно было бы совсем неправильно, если бы такое хорошее средство обошло стороной программистов использующих Delphi. Но благодаря тому, что в Delphi имеется прекрасные возможности работы с COM технологиями, использование агентов в Delphi превращается в приятное развлечение. Microsoft Agent позволяет разработчикам и Web-дизайнерам использовать новую форму взаимодействия с пользователями, основанную на принципах социального общения. В дополнение к поддержке обычного способа ввода информации с помощью клавиатуры и мыши Microsoft Agent предлагает поддержку распознавания голосовой информации (на основе Microsoft Speech Application Programming Interface, SAPI 4.0), позволяя управлять приложениями на уровне голосовых команд. Персонажи могут воспроизводить синтезированную речь (text-to-speech, TTS), аудиофрагменты или текст в специальном окне. Программный интерфейс Microsoft Agent позволяет управлять воспроизведением персонажей, вводом и выводом информации. Персонажи отображаются в собственных окнах, что делает интерфейс более удобным и гибким. В состав Microsoft Agent входит компонент ActiveX, доступный из любых языков программирования и средств разработки, поддерживающих технологию COM, а также из скриптовых языков VBScript и JavaScript. Для начала работы с агентами, вам естественно нужно установить MS Agent (Microsoft Agent входит в состав операционной системы WINDOWS 2000 и выше). Для установки Microsoft Agent в Microsoft Windows 98 и Windows NT 4.0 требуется загрузить соответствующее программное обеспечение с Web-узла фирмы Microsoft : MSagent, также для работы понадобится какой-нибудь характер (Microsoft свободно распостаняет 4). Один из характеров вы можете найти в папке msagent/chars в каталоге Windows. Все характеры имеют расширение .acs, так что вы можете пробежаться поиском, наверняка найдете еще парочку (особенно, если у вас установлен пакет MS Office). Так же в Интернете существуют целые галереи агентов: msagentring.org rohitab.com Объектная модельMicrosoft Agent 2.0 Для программного управления Microsoft Agent в распоряжение программистов предоставляется объектная модель, которая доступна как из скриптовых языков (для управления Microsoft Agent из HTML-документов), так и из языков программирования, поддерживающих COM-технологии. В центре объектной модели располагается невидимый пользователям объект Agent, а также объект Request. Персонажи представлены коллекцией Character, доступные команды — коллекцией Command, а специальное окно для вывода информации — объектом Balloon. Также объект Agent включает объекты SpeechInput, CommandsWindow, AudioOutput и PropertySheet. Давайте кратко рассмотрим свойства, методы и события основных объектов объектной модели Microsoft Agent. Объект Request Объект Request используется для получения информации о состоянии выполнения методов Get, Hide, Interrupt, Load, MoveTo, Play, Show, Speak и Wait. Чтобы узнать статус метода, необходимо получить доступ к специальной переменной: var Rq; Rq = Char.Get “Animation”, “Sad” Объект Request имеет три метода: Status Возвращает целочисленный статус команды, находящейся в очереди number Возвращает код ошибки description Возвращает строку с описанием ошибки Объект Agent Данный объект является родительским объектом для всех остальных объектов Microsoft Agent. Объект Agent представляет собой сервер и поддерживает свойства и события Объект Agent также имеет один метод — showDefaultCharacterProperties, с помощью которого можно отобразить на экране панель настройки свойств Microsoft Agent по умолчанию. Объект Characters Данный объект наиболее важен при управлении отдельным персонажем и содержит все необходимые для этого методы и события. Так как Microsoft Agent позволяет одновременно использовать несколько персонажей, данный объект представляет собой коллекцию, к которой можно обращаться либо напрямую, либо через объект Character. Для того чтобы иметь доступ к объекту Characters, мы должны указать идентификатор персонажа. Так как мы часто используем методы и свойства именно этого объекта, имеет смысл сохранить идентификатор персонажа в переменной:
Объект Commands С помощью этого объекта мы можем задавать собственные команды, которые появляются в локальном меню персонажа, вызываемом по нажатию правой кнопки мыши. Данный объект, как и объект Characters, представляет собой коллекцию, поэтому обращение к нему осуществляется следующим образом:
Объект Balloon Данный объект служит для задания характеристик специального окна, в котором происходит вывод текстовой информации. Подключение компонента ActiveX Работу с любым компонентом ActiveX мы начинаем с включения его в палитру компонентов. Для этого выполняем команду Component | Import ActiveX Control. В списке доступных компонентов выбираем Microsoft Agent Control 2.0 (компонент реализован в библиотеке AGENTCTL.DLL) и нажимаем кнопку Install. После того как компонент будет установлен, он станет доступным в палитре компонентов на вкладке ActiveX как компонент Agent. Размещение компонента в форме приводит к тому, что у нас появляется объект Agent1 типа TAgent.
Теперь можно приступать к программированию. Начнем с загрузки персонажей.
После этого мы можем вызывать методы и выполнять команды, поддерживаемые тем или иным персонажем.
Получение списка команд Существует три способа получения списка команд, поддерживаемых тем или иным персонажем. Первый, самый очевидный, — обращение к соответствующей документации, где теоретически должны быть описаны все команды и действия, выполняемые по этим командам. Но это, как ни странно, может оказаться не самым удобным решением. Поэтому я и предлагаю второй способ, который, может быть, чуть сложнее первого, но зато гарантирует, что мы всегда будем иметь список команд, актуальных для данного персонажа. Данный способ базируется на использовании COM-интерфейса IAgentCtlAnimationNames. Интерфейс IAgentCtlAnimationNames возвращается через значение свойства AnimationNames основного интерфейса COM-объекта Microsoft Agent (IAgentCtlCharacterEx) и имеет всего лишь одно свойство — Enum типа IUnknown. Вероятнее всего, Enum — это указатель на один из интерфейсов IEnumXXX, который, используется для перебора каких-либо элементов коллекции. Остается только подобрать соответствующий интерфейс. Стандартная документация не предлагает никакого решения этой проблемы, поэтому подходящий интерфейс подбирается экспериментально, благо интерфейсов типа IEnumXXX не так много. Подходящим для нашей задачи оказался интерфейс IEnumVariant. Таким образом, код для получения списка команд, поддерживаемых тем или иным персонажем, может выглядеть так:
Тем же, кому не хочется что-то писать, я могу предложить третий вариант – это скачать программу Agent Viewer (710 КВ), распространяемую Microsoft специально для получения списка возможных анимаций. После того как мы получили список команд, поддерживаемых персонажем, мы, естественно, можем их использовать. Знание этого списка освобождает нас от необходимости проверять, поддерживается ли та или иная команда — в списке будут только те команды, которые «актуальны» для загруженного персонажа. Локальное меню Мы можем задавать собственные команды, доступные через локальное меню, вызываемое нажатием правой кнопки мыши по агенту. Сначала задаем команду:
а затем в обработчике события OnCommand описываем выполняемые ими действия:
В данном примере мы вызываем метод Think, с помощью которого выводится соответствующее сообщение. Использование «закладок» Microsoft Agent поддерживает механизм «закладок», с помощью которого можно вставить в выводимый текст указание на необходимость активизации какой-либо команды. Для этого задаем «закладку»:
Заключение В заключение хотелось бы привести пример работы с агентом. Создайте новый проект, киньте компонент агента, вставьте приведенный ниже код и наслаждайтесь как ваш агент бегает по экрану.
Анимации используемые в примере поддерживаются как правило всеми агентами, если у вас возникнут проблемы с выполнением данного кода, просто удалите строчку, на которую ругается компилятор. В этой статье я рассмотрел технологию Microsoft Agent 2.0, с помощью которой можно создавать социальные, ориентированные на определенные группы пользователей интерфейсы с поддержкой стандартного и речевого ввода. Microsoft Agent стала технологией, интегрированной уже в Microsoft Windows 2000 и Microsoft Office 2000. В версии Microsoft Agent 3.0 будет реализована более динамичная анимационная модель, расширена поддержка речевого ввода и, возможно, добавлены дополнительные сервисы. За последний год Microsoft активно старалась привлечь внимание разработчиков к технологии Microsoft Agent. Вот только несколько фактов, подтверждающих это: • Microsoft неоднократно показывала использование персонажа Peedy (Кеша) и возможностей распознавания голосового ввода в Outlook. • Microsoft Agent включен в состав MSDN и Platform SDK. • Поддержка Microsoft Agent включена в Visual Studio 6.0. • Поддержка Microsoft Agent включена в Office 2000 developer Edition. • Эта технология напрямую используется в Office 2000 и выше, и включена в состав ядра Windows 2000. Технология Microsoft Agent уже используется на ряде коммерческих и любительских Web-узлов, в образовательных программах, в интрасетях и т.п. В заключение отмечу, что в состав Microsoft Agent SDK входят две программы — Microsоft Agent Character Editor для разработки собственных персонажей и Microsoft Linguistic Information Sound Editing Tool для создания файлов с речевой информацией. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||||||||||||||||
|
|||||||||||||||||||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
По просьбе "особо ленивых"
![]() ![]() Присоединённый файл ( Кол-во скачиваний: 86 ) ![]() -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Poseidon |
|
||||||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
По рекомендации Алекса добавляю статью еще одной возможностью агентов, а именно: произношение речи;
Речь агента У технологии Microsoft Agent есть еще одна очень интересная возможность, а именно произношение (чтение) агентом текста. Для того, чтобы персонаж прочитал текст, нужно применить к нему метод speak. Чтение текста будет производиться через движок установленный по умолчанию. Если движок не установлен, то текст будет только выводится в специальное окошко (balloon). Если все подготовительные операции были выполнены правильно, фраза, которая передана методу в качестве аргумента, будет не только отображена на экране, но и синхронно произнесена персонажем. Если вы поэкспериментируете с озвучанием различных персонажей, то наверняка обратите внимание, что все они немного отличаются друг от друга манерой разговора. Это еще одно достоинство технологии Microsoft Agent. Для начало нужно, что бы наш агент был загружен методом Load:
ну и конечно, что бы он отображался
Как уже отмечалось выше, для произношения речи используется метод speak, т.е.
Но тут одно НО. Если у вас не установлен речевой движок SpeachAPI, то агент у вас не заговорит. Скачать движок можно по ссылке: SpeachAPI Для того, что бы ваш агент умел разговаривать по-русски, нужно скачать еще вот это: lhttsrur.exe Но это еще не все. Для того, что бы добавить эмоций в речь агента, можно воспользоваться специальными тегами. В Microsoft Agent доступны все теги, принятые в SAPI, — они и позволяют сделать речь естественной. Тегов сравнительно немного, и запомнить их пара пустяков: Emp — ударение на произносимом слове. Выделяемое речью слово должно следовать сразу за тегом; Chr — Устанавливает тип голоса ("Normal" - нормальный голос, "Monotone" - монотонный, "Whisper" - шепот). Пример: '\Chr="Whisper"\Hello' Ctx — Устанавливает тип содержимого читаемой строки ("Address" - Адрес и/или телефонный номер, "E-mail" - мыло, "Unknown" - неопределенный тип). Пример '\Ctx="E-mail"\[email protected]' Lst — Повторить последнее сказанное выражение; Pau — пауза в речи (миллисекунды); Pit — высоты звучания голоса в Гц; Spd — средняя скорость речи (слов в минуту); Vol — средняя громкость звука. Хотел бы по-подробнее остановится на теге Ctx. Он предназначен для управления параметрами нормализации текста. TTS-модуль должен преобразовать текст в последовательность слов для синтезатора речи. На этом этапе ему важно понимать, в каком контексте используются слова. Иными словами, TTS-модуль должен знать тематику сообщения. К примеру, получив на вход строку вида «X-Originating-IP: [65. 169.241.134]», речевой движок должен воспринять ее как служебную часть заголовка электронного письма, которая никогда не читается пользователями и поэтому вообще не должна быть озвучена. Для этих целей были разработаны специальные режимы работы TTS-модулей: "E-mail" и "Address". Причем один из них предназначен для работы с электронной почтой, а другой — для корректного озвучания адресов и телефонов. Оба этих режима имеют много общего в работе. Например, всегда распознаются предложения, написанные латинским алфавитом, — они воспринимаются как английская речь. Это очень удобно — без переключения языков в тексте можно использовать иностранные термины. Различия же в работе проще всего продемонстрировать на одном примере. Так, сочетание знаков ![]() Для управления речью агентов в состав SAPI входит еще несколько свойств, например Pitch (определяет высоту голоса) и Speed (определяет скорость речи). Свойства Pitch и Speed доступны только для чтения. Используемые по умолчанию характеристики голоса диктора меняются тегами Pit и Spd. Их следует только добавить в команду, например:
Вот некоторые правила синтаксиса для речевых тегов: - Все теги начинаются и заканчиваются символом наклонной черты влево (\). - Отдельный бэкслэш не допускается в пределах тэга. Чтобы включить бэкслэш в текстовый параметр тэга, используйте двойную наклонную черту влево (\\). - Теги воспринимаются без учета регистра. Например, \Spd=100\ - тот же самый что и \SPD=100\. - Теги пробеловосприимчивы, то есть не допускают в себе лишних пробелов. Например, \Rst\ - не тот же самый что и \ Rst \ Как правило, размещать теги можно в произвольное место фразы, их действие начинается со следующего слова. Однако действуют теги только в пределах одного вызова метода Speak. Более подробно о тегах и изменении интонации речи у агентов можно прочесть на subritto.h1.ru В завершение мне хочется рассказать еще об одном способе озвучания агентов. Он очень прост. Запишите сообщение, которое должен произнести персонаж, в звуковой файл. В методе Speak напишите текст сообщения, а затем укажите название и путь к файлу Hello.Wav:
Это сообщение отредактировал(а) Poseidon - 19.6.2005, 03:15 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||||||
|
|||||||||||
Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
Всеобщий респект Пасейдону, и плюс
![]() ![]() ![]() -------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: нет Всего: 40 |
А как использовать диалоги помощьников кто нибудь знает?
Присоединённый файл ( Кол-во скачиваний: 41 ) ![]() |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
gambit, что-то упустил я твой вопрос и никто не ответил.
Значит так, то, что тебе нужно дулается с помощью Balloon. Приду домой, покажу как это кодом. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
aleanikina |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Здравствуйте!
Я не разбираюсь во всех программах. Я хочу установить себе помощника. Но требуется Microsoft Agent 2.0. у меня, видимо, он не установлен. Скажите, где его можно скачать? |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Если у вас Win98, то и не установится даже в ручную. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
mauar |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
||||
|
||||
Mixasik |
|
|||
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
А как использовать агента на Windows Vista и Win Seven, как написано на сайте MS технология агента на данных ОС притерпела изменения. И вообще не удалось найти данного ActiveX компонента.
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
А разве под Вистой агенты не работают? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Mixasik |
|
|||
Little Delphi monstr ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 4.10.2006 Где: Волгоград Репутация: нет Всего: нет |
Данкинг, Может и работают, но по другому и актив Х компонента там нет...
|
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |