没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2004-03-04 15:21:00.000|阅读 1447 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
---- Microsoft Agent控件比Office 97中的助手更进了一步,它提供的动画人物不仅有生动、有趣的动作,而且还能通过声卡、麦 克风与用户进行交谈,这些功能使计算机更具人性魅力,其应用前途相当广泛。Microsoft Agent控件的内部机制很复杂,但用VB来 操纵它却是异乎寻常的方便,本文将介绍VB 5.0调用Microsoft Agent控件的基本方法。
---- 1. 安装MicrosoftAgent控件
---- (1)首先要安装Microsoft Agent的核心组件 msagent.exe
---- (2)接着要安装Lernout & Hauspie TruVoice Text-to-Speech Engine(完成从文字合成语音的工作)cgram.exe。
---- (3)最后要安装Microsoft Command and Control Speech Engine(提供语音识别功能)Actcnc.exe。
---- (4)另外还需要Agnet动画人物数据文件,在本文中使用了Genie.acs、Robby.acs 两个文件。
---- 上述文件均可从http://www.microsoft.com/workshop/prog/agent下载。
---- 2.MicrosoftAgent控件的初始化
---- 先把Microsoft Agent控件添加到VB的控制工具条上,并在用户的Form上绘制该控件(在下述例子中,其Name属性设为MyAgent)。下面的代码调用IAgentCtlCharacters::Load()方法装入一个动画人物的数据,调用IAgentCtlCharacter::Show()/Hide() 方法来显示/隐藏动画人物。
Const DATAPATH = "c:\"
Dim Genie As IAgentCtlCharacter
Dim Robby As IAgentCtlCharacter
Dim
GenieRequest1, GenieRequest2 As IAgentCtlRequest
Dim RobbyRequest1 As
IAgentCtlRequest
Private Sub
Form_Load()
'装入动画人物数据,其中第一个参数为CharacterID
MyAgent.Characters.Load "Genie",
DATAPATH & "Genie.acs"
MyAgent.Characters.Load "Robby", DATAPATH &
"Robby.acs"
'获取与CharacterID相对应的IAgentCtlCharacter变量
Set Genie =
MyAgent.Characters("Genie")
Set Robby = MyAgent.Characters("Robby")
'显示/隐藏动画人物
Genie.Show
Genie.Hide
End Sub
---- 3. Microsoft Agent控件的动画编程
---- 每个动画人物都有自己特定的动作,例如Genie有听、看、读、写、发怒、感谢等数十种动画形态。可以调用IAgentCtlCharacter::play()方法来设置动画动作。为了在多个动画人物之间协调它们的动作,比如让Robby等待Genie 的某个动作 执行完毕后,方才做另外一个动作,这时可采用IAgentCtlCharacter::Wait()方法来实现同步。在数十种动画动作中有一类比较特 殊(动作名以"ing"为后缀,如"Searching"),一旦执行便循环播放一段动画,只有调用IAgentCtlCharacter::Interrupt()方法才能 终止。示例代码如下:
Private Sub Command1_Click()
Genie.Show
'执行名为"Suggest"的动作
Genie.Play
"Suggest"
'把Genie移动到座标(200,200)处,
用GenieRequest1来标识该动作请求
Set
GenieRequest1 = Genie.MoveTo(200,
200)
'执行名为"Searching"的循环动画动作,
用GenieRequest2来标识该动作请求
Set GenieRequest2 = Genie.Play("Searching")
' Robby等待Genie的MoveTo方法执行完毕,方才显示
Robby.Wait
GenieRequest1
Robby.Show
Robby.Play "Suggest"
Robby.Play
"read"
Robby.Play "Congratulate"
'由Robby来终止Genie的循环动画动作
Robby.Interrupt GenieRequest2
Genie.Play
"write"
Genie.Hide
Robby.Hide
End Sub
---- 4. Microsoft Agent 控件的语音合成功能
---- Microsoft Agent控件支持英语的语音合成功能,只需输入句子的文字,便会生成该句子的语音信号并通过声卡、音箱播放出 来。语音合成功能通过调用IAgentCtlCharacter::Speak()方法来实现。输出中文时不能用上述方法,只能用WAV文件代替,给peak() 方法的第一个参数传递文字气球中包含的文字,给第二个参数传递一个WAV文件路径。同样为同步多个动画人物的语音输出也必须使 用IAgentCtlCharacter::Wait()方法。目前Microsoft Agent控件还不支持多个人物的声音混合效果。具体实现代码如下:
Private Sub Command2_Click()
Genie.MoveTo 100,
200
Genie.Show
Genie.Play "Greet"
' Speak()方法的第一个参数即为需进行语音合成的句子文字
Genie.Speak "I am Genie, your most humble
and loyal servant."
Genie.Speak "Where is Robby?"
Set GenieRequest1 =
Genie.Play("LookLeft")
'等Genie的"LookLeft"执行以后,再执行Robby的动作
Robby.Wait
GenieRequest1
Robby.MoveTo 250, 200
Robby.Show
Robby.Play
"Greet"
Robby.Speak "Sorry for the delay."
Set RobbyRequest1 =
Robby.Speak("Traffic is really
busy today on the Information
Superhighway.")
'等Robby讲完了,Genie再讲
Genie.Wait RobbyRequest1
Genie.Play
"LookLeftReturn"
Genie.Speak "Welcome to the release of Microsoft Agent,
the new ActiveX technology that supports interactive
characters"
'输出中文语音,"欢迎光临"的中文语音包含在welcome.wav中
Genie.Speak "欢迎光临",
"c:\welcome.wav"
Genie.Hide
Robby.Hide
End Sub
---- 5. Microsoft Agent控件的语音识别功能
---- Microsoft Agent控件具有语音识别能力,用户可以向动画人物发出语音命令(同时按住Scroll Lock 键)。Microsoft Agent控 件为每个Agent动画人物提供一个特殊物命令窗口,用以显示该动画人物能够接受的所有语音命令。该命令窗口中的命令不能用鼠标 或键盘来选取,只能通过语音。可以用IAgentComands::Add()方法来为命令窗口添加自定义命令。第一个参数是命令的标识符ID, 第二个参数是该命令在命令窗口中的显示标签,第三个参数是该命令对应的语音识别句子。当用户通过麦克风向动画人物发出命令 时会激发IAgent的Command事件,可以编写一个接收Command事件的过程来完成与语音命令相对应的任务。
Private Sub Command3_Click()
Static initialized As Boolean
'添加自定义命令
If Not initialized Then
Genie.Commands.Add "Word", "Run Word",
"word", True, True
Genie.Commands.Add "Time", "What time is it?",
"What
time is it?", True, True
Genie.Commands.Add "Bigger", "Bigger",
"Bigger",
True, True
Genie.Commands.Add "Smaller",
"Smaller", "Smaller", True,
True
initialized = True
End If
Genie.Show
Genie.Speak "Can I help
you?"
End Sub
Private Sub MyAgent_Command(ByVal UserInput As Object)
Select Case
UserInput.Name
Case "Time"
'当听到"What time is it?"后回答当前时间
Genie.Speak
"The time is " & Time
Case "Word"
'当听到"word"后,便运行MS
Word
Genie.Speak "Yes,sir!"
Shell "d:\winword\winword.exe",
vbNormalFocus
Case "Bigger"
'当听到"bigger"后,Genie会放大
Genie.Width =
Genie.Width * 1.5
Genie.Height = Genie.Height * 1.5
Case
"Smaller"
'当听到"samller"后,Genie会缩小
Genie.Width = Genie.Width /
1.5
Genie.Height = Genie.Height / 1.5
End Select
End Sub
/*//////////////////////////////////
//////////////////////////////////*/
/*
附 完 整 源 程 序 agent.frm */
VERSION 5.00
Object =
"{F5BE8BC2-7DE6-11D0-91FE
-00C04FD701A5}#1.5#0"; "AGENTCTL.DLL"
Begin
VB.Form Form1
Caption = "Form1"
ClientHeight = 3195
ClientLeft =
60
ClientTop = 345
ClientWidth = 4680
LinkTopic =
"Form1"
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3
'Windows Default
Begin VB.CommandButton Command3
Caption =
"Command3"
Height = 615
Left = 2880
TabIndex = 2
Top = 360
Width
= 1095
End
Begin VB.CommandButton Command2
Caption =
"Command2"
Height = 615
Left = 1320
TabIndex = 1
Top = 360
Width
= 1095
End
Begin VB.CommandButton Command1
Caption =
"Command1"
Height = 615
Left = 120
TabIndex = 0
Top = 360
Width =
855
End
Begin AgentObjectsCtl.Agent MyAgent
Left = 360
Top =
2520
End
End
Attribute VB_Name = "Form1"
Attribute
VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute
VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Const DATAPATH = "c:\"
Dim Genie As IAgentCtlCharacter
Dim Robby As IAgentCtlCharacter
Dim
GenieRequest1, GenieRequest2 As IAgentCtlRequest
Dim RobbyRequest1 As
IAgentCtlRequest
Private Sub Command1_Click()
Genie.Show
Genie.Play "Suggest"
Set
GenieRequest1 = Genie.MoveTo(200, 200)
Set GenieRequest2 =
Genie.Play("Searching")
Robby.Wait GenieRequest1
Robby.Show
Robby.Play
"Suggest"
Robby.Play "read"
Robby.Play "Congratulate"
Robby.Interrupt
GenieRequest2
Genie.Play "write"
Genie.Hide
Robby.Hide
End Sub
Private Sub Command2_Click()
Genie.MoveTo 100,
200
Genie.Show
Genie.Play "Greet"
Genie.Speak "I am Genie, your most
humble and loyal servant."
Genie.Speak "Where is Robby?"
Set GenieRequest1
= Genie.Play("LookLeft")
Robby.Wait GenieRequest1
Robby.MoveTo 250,
200
Robby.Show
Robby.Play "Greet"
Robby.Speak "Sorry for the
delay."
Set RobbyRequest1 = Robby.Speak("Traffic is
really busy today on
the Information Superhighway.")
Genie.Wait RobbyRequest1
Genie.Play
"LookLeftReturn"
Genie.Speak "Welcome to the release of Microsoft Agent, the
new
ActiveX technology that supports interactive characters"
Genie.Speak "
欢迎光临VB编程乐园", "c:\welcome.wav"
Genie.Hide
Robby.Hide
End Sub
Private Sub Command3_Click()
Static initialized As Boolean
If Not initialized Then
Genie.Commands.Add "Word", "Run Word", "word",
True, True
Genie.Commands.Add "Time", "What time is it?",
"What time is
it?", True, True
Genie.Commands.Add "Bigger", "Bigger",
"Bigger", True,
True
Genie.Commands.Add "Smaller",
"Smaller", "Smaller", True,
True
initialized = True
End If
Genie.Show
Genie.Speak "Can I help you?"
End Sub
Private Sub Form_Load()
MyAgent.Characters.Load "Genie", DATAPATH &
"Genie.acs"
MyAgent.Characters.Load "Robby", DATAPATH &
"Robby.acs"
Set Genie = MyAgent.Characters("Genie")
Set Robby =
MyAgent.Characters("Robby")
Genie.Show
Genie.Hide
End Sub
Private Sub MyAgent_Command(ByVal UserInput As Object)
Select Case
UserInput.Name
Case "Time"
Genie.Speak "The time is " & Time
Case
"Word"
Genie.Speak "Yes,sir!"
Shell "d:\winword\winword.exe",
vbNormalFocus
Case "Bigger"
Genie.Width = Genie.Width *
1.5
Genie.Height = Genie.Height * 1.5
Case "Smaller"
Genie.Width =
Genie.Width / 1.5
Genie.Height = Genie.Height / 1.5
End Select
End Sub
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号