Microsoft Agent是微軟公司於
年
月發布的一項代理軟件開發技術
而後被集成到Internet Explorer
Plus及更高版本中
目前版本為
支持簡體中文
作為一種軟件代理工具
Agent以其強大的交互功能
鮮明的人性特點
優美的操作界面和簡便統一的編程方法
對由菜單
按鈕
提示框等組成的傳統人機交互方式產生了很大影響
在多媒體創作
Web應用
教育軟件
軟件幫助系統和輔助工具制作等方面
具有廣闊的應用前景
一
Microsoft Agent技術簡介
Agent一詞的中文意思是
代理
故名思意
這類代理軟件的主要作用是提供一種易於理解和使用的操作界面
接受用戶的指令
代替用戶完成某些復雜繁瑣的工作
或為用戶提供幫助
科學研究表明
從人機工程的角度考慮
賦予電腦或程序更多人性化色彩
如支持語音合成輸出信息
語音識別輸入指令
智能提示
動畫等
能夠充分提高人機交互的有效性和易用性
我們知道
在Office
幫助系統中有一種叫作Office助手的代理軟件
其中幽默風趣的動畫人物
如
大眼夾
能夠根據用戶的操作步驟
智能化
地提出一些建議或幫助信息
與Office助手相比
Agent功能更加豐富強大
表現在
Office助手沿用傳統的不透明矩形窗口
窗口後面的背景被完全擋住
Agent動畫人物本身是一個
AlwaysOnTop
窗口
只有人物身體部分擋住背景
其余部分透明
Office助手只允許Office
的各個組件調用
Agent動畫人物可由任何Windows程序調用
Agent支持文字氣球和輸入提示條
在輸出語音的同時把文字輸出至一個卡通式文字氣球中
如果電腦系統中安裝有Agent語音識別引擎
當用戶按住輸入鍵
如Scroll Lock鍵
在Agent人物下方出現一個輸入命令窗口
表示它正在
聆聽
用戶的語音命令
Agent提供Genie
Merlin
Bobby和Peedy等動畫人物
不僅具有優美诙諧的動作
而且可以通過聲卡
麥克風與用戶交談
二
Microsoft Agent安裝方法
Agent是一種ActiveX控件
其服務器程序(C:\WINDOWS\MSAGENT\Agentsvr
exe)運行在Win
/
/NT操作平台上
為其它調用Agent的客戶程序提供服務
客戶程序可以是利用VB
C++
Delphi
VFP
PB等開發的應用軟件
也可以是HTML文件中的Visual Script
Java Script腳本語言代碼
安裝Agent核心組件Msagent
exe
安裝Lernout & Hauspie TruVoice Text
to
Speech Engine(完成從文字合成語音的工作
目前版本只支持英語)Cgram
exe
安裝Microsoft Command and Control Speech Engine(提供語音識別功能
目前版本只支持英語)Actcnc
exe
Agent動畫人物人物數據文件
Agent支持單結構角色文件(
acs
角色數據與動畫數據存於同一個文件)
也支持分離結構角色文件(
acf
角色數據存於
acf中
動畫數據存於
aca中)
基於本地硬盤和網絡的應用程序可采用
acs文件
基於Web頁面的HTML文件在浏覽器中訪問時會自動調用
習慣上多使用
acs文件
上述文件可從 下載
三
Microsoft Agent編程要點/b>
在Delphi中添加Agent控件
在Delphi IDE中選擇菜單Component
Import ActiveX Control——在Import ActiveX下的列表框中選擇Microsoft Agent Control
(Version
)
點擊按鈕Install——在Install對話框中點擊按鈕OK——在Confirm對話框中點擊按鈕Yes——在對話框中點擊按鈕OK
至此
Agent控件被添加到Delphi組件板ActiveX頁上
在Delphi中調用Agent控件
⑴
在Delphi IDE 中新建Project
(包含Form
)
在Form
上放置Agent
(Name屬性為MyAgent)
Button
⑵
定義變量
Var Peedy: IagentCtlCharacterEx; Request
Request
: IagentCtlRequest;
⑶Agent主要屬性
方法
事件
①Characters屬性與Load
Unload方法
初始化Agent
加載動畫數據
卸載動畫人物
Request
:= MyAgent
Characters
Load(
Peedy
C:\Windows\System\Peedy
acs
);
Peedy := MyAgent
Characters
Character(
Peedy
);
MyAgent
Characters
Unload(
Peedy
);
②Show與Hide方法
顯示
隱藏Agent動畫人物
參數Fast表示動畫人物顯示
隱藏的速度
Fast為
表示Agent飛入
飛出
Fast為
表示Agent直接出現
消失
沒有動畫過程
Peedy
Show(
);
Peedy
Hide(
);
③StopAll
Stop方法
停止所有動作
Peedy
StopAll(
);
Peedy
Stop(Request);
④Connected屬性
Agent是否與Microsoft Agent服務器連接
MyAgent
Connected := True;
⑤Get_Height
Get_Width
Set_Height
Set_Width方法
獲得
設置Agent動畫人物的高度
寬度
AgentHight := Peedy
Get_Height; AgentWidth := Peedy
Get_Width; Peedy
Set_Height(
round(AgentHeight /
)); Peedy
Set_Width( round( AgentWidth /
));
⑥MoveTo方法
參數x
y表示Agent動畫人物移動到的坐標
參數Speed表示移動的速度
Peedy
MoveTo( (Screen
Width
Peedy
Get_Width) Div
(Screen
Height
Peedy
Get_Height) Div
);
⑦Interrupt方法
中斷指定角色的動畫
在幾十種動畫動作中
有一類後綴名為
ing
的動作比較特殊
如
processing
searching
reading
writing
一旦執行就必須通過調用另外一個動畫人物的Interrupt方法才能中斷
角色不能中斷自身的動作
否則會導致異常
Request
:=
Robby
Play(
reading
); Peedy
Interrupt(Request
);
⑧Wait方法
在多個不同動畫人物之間協調動畫動作
如等待sRobby的當前動作執行完畢後
Peedy做另外一個動作
Request
:= Robby
Play(
read
); Peedy
Wait(Request
); Peedy
Play(
search
);
⑨Play方法
執行指定的動畫動作
參數Animation為一常量
表示動畫類型
Agent提供了幾十種預定義動作
開發軟件時只需直接調用這些常量即可
下面簡要介紹其中常用的一些常量僅供編程參考
動作類型 中文含意 動作類型 中文含意 動作類型 中文含意
Acknowledge 承認
LookDown 向下看 Sad 悲傷 Alert 警告 LookDownBlink 向下看眨眼 Search 尋找Announce 聲明 LookUp 向上看 StartListening 開始聆聽 Blink 眨眼 LookUpBlink向下看眨眼 StopListening 停止聆聽 Confused 迷惑 LookLeft 向左看 Suggest建議 Congratulate 祝賀 LookLeftBlink 向左看眨眼 Surprised 吃驚 Decline 拒絕LookRight 向右看 Think 思考 DontRecognize 不承認 LookRightBlink 向右看眨眼Wave 揮動 Explain 解釋 MoveDown 向下移動 Write 書寫 GestureDown 向下姿勢MoveUp 向上移動 Processing 計算…… GestureUp 向上姿勢 MoveRight 向右移動Reading 閱讀…… GestureLeft 向左姿勢 MoveLeft 向左移動 Searching 尋找……GestureRight 向右姿勢 Pleased 高興 Writing 書寫…… GetAttention 獲得注意Read 閱讀 Greet 問候 RestPose 恢復初始狀態 Request := peedy
Play(
search
);
⑩Speak方法
Agent通過調用語音合成引擎
支持英語的語音合成輸出功能
只需輸入英文字符串
Agent就能通過聲卡
音箱
說話
Agent的當前版本尚不具備支持中文語音合成功能
所以只能以
wav文件的形式播放中文
使用時可以將想要說的中文句子預先錄好
以
wav形式存儲
在程序中調用即可
參數Text表示文字氣球中顯示的文字
參數url表示
wav文件的路徑
Peedy
speak(
嗨
朋友們
你們好
現在由我為您提供幫助!
C:\新建文件夾\Help
wav
);
Peedy
Speak(
Do you like my help? If so
Please send me an email! Thank you!
);
⑾Commands
Add方法
在Button
Click事件中為Agent添加自定義語音識別命令
參數const Name表示語音命令的標識
參數Caption表示該命令在輸入命令窗口中的顯示標題
參數Voice表示該命令對應的語句
當用戶通過麥克風向動畫人物發出語音命令時
觸發Agent的Command事件
因此我們可以另外編寫一個過程完成語音識別功能
procedure TForm
Button
Click(Sender: TObject); begin Peedy
Commands
Add(
Delphi
Run
Delphi
Delphi
True
True); Peedy
Commands
Add(
Visual Basic
Run VB
VB
True
True);
Peedy
Show(
); Peedy
Speak(
What can I do for you
sir?
); end;
⑷
按F
運行程序
以上程序在Delphi
/
Windows
/
/NT簡體中文版環境下調試通過
From:http://tw.wingwit.com/Article/program/Delphi/201311/8409.html