2. TTS引擎:TTS引擎将文本转换为声音并输出到音频设备中,Agent将根据该引擎输出的声音控制动画的口型变化 (C:/PROGRAM FILES/ COMMON FILES/SPEECH ENGINES /MICROSOFT/TTS)。
3. Agent角色数据文件:存储有角色信息(提示信息框的格式、命令、图片、声音文件等);用户也可以用角色编辑器(ACE.EXE)编辑自己的角色数据文件(C:/WINNT/MSAgent/ CHARS/MERLIN.ACS;C:/WINNT/ SRCHASST/CHARS/COURTNEY.ACS,/EARL.ACS,/ROVER.ACS)。
4. 语音识别引擎(SPEECH ENGINE):处理用户从音频设备中传入的语音命令,以进行语音输入/输出处理(控制面板→声音、语音和音频设备→语音)。
Agen的基本属性
CHARacters:其类型为IAgentCHARACTEREX,取得角色句柄;
CHARacter:CHARACTERS的一个属性,通过CHARACTERID取得角色句柄;
CHARacterid:代表特定的角色动画,如MERLIN、GINIE、ROVER等Windows 2000、Office2000以及以上版本所提供的四种角色动画,其扩展名为.ACS或者.ACG;
Show:控制角色动画的显示,参数Speed为整形变量,代表显示的速度;
Hide:隐藏动画角色,参数CHARacterid,指定隐藏的对象;
Moveto:移动动画角色到指定位置,参数(X,Y)为指定的位置;
Play:控制角色执行指定的动画,参数Animation表示动画名称,存储于角色数据文件里;
Speak:通过TTS引擎和语音识别引擎读指定文本,目前不支持中文。参数为指定的文本内容,同时可以在文本中通过加标记TAG控制文本阅读时的语气、强调字符串、停顿时间、阅读的速度;语气标记‘/CHR=WHISFER(NORMAL/MONOTONE’,强调字符串‘/EMP/强调字符’,停顿时间’/PAU=停顿时间(以毫秒为单位)/’,阅读速度’/SPD=速度/’,另外还有其它是一种标记,可以找Microsoft网站查找,每一分离的字符串都用双引号加以表示;
Languageid:指定语言种类,整形变量,0X409代表美式英语,0X804代表中文。
角色动画实例
预备工作已经完成,现在我们就立即来着手在应用成程序中做一个角色动画效果(注:本文为了便于演示,应用程序仅包括一个窗口,编程工具采用VFP7.0)。
进入讨论组讨论。
1. 安装Agent控件:选择菜单工具“选项”,在ActiveX列表框中选择Microsoft Aent Control 2.0,安装在工具面板上。
2. 新建一应用程序,仅需一个表单,如图2。
图2 表单设计样式
3. 调用角色数据:
载入动画角色
ThisForm.Olecontrol1.Characters.Load("merlin", "merlin.ACS")
oChar = ThisForm.Olecontrol1.Characters("merlin")
oChar.MoveTo(RAND()*600, RAND()*600)
oChar.Show
*将角色数据文件中的动画名称加入动画文件列表框,有许多动画在文件中不能找到,因此通过载入动画名称让用户选择。
For Each cAnimName in oChar.AnimationNames
ThisForm.AnimNames.AddItem(cAnimName)
ochar.play(canimname)*可能有的动画循环播放,因此有的动画可能无法显示。
EndFor
开场介绍
ochar.languageid=0x409
oChar.Speak("Hello /emp/there!Hey, /pau=600/all you boys and girls.Greetings, and felicitations.")
oChar.Speak("Welcome to DevCon, my friends.")
进入讨论组讨论。
播放指定的角色动画
OChar.Play(ThisForm.lbxAnimNames.DisplayValue)
阅读指定文本
oChar.languageid=0x409*指定语言种类,0X409代表美式英语
oChar.Speak(ThisForm.txtSpeak.Value')
由于TTS引擎不支持中文,因此假如要阅读中文,可以按如下方法:
将要阅读的汉语文本通过录音制作成WAV文件,如SNDFILE.WAV
oChar.languageid=0x804;//指定语言种类,0X804代表中文
oChar.speak(‘你好!’,’SNDFILE.WAV’);//SNDFILE.WAV及为制作的声音文件
停止循环播放的动画
oChar.Stop
卸载动画角色
With ThisForm
.Olecontrol1.Characters.Unload("merlin")
.AnimNames.Clear
Endwith
加载阅读文本,也可以直接输入内容
Cfile=Getfile()
Nhandle=Fopen(Cfile)
Hend=Fseek(Nhandle,0,2)
If Hend<=0
Messagebox("文件无法打开!",16,"提示窗口")
Return
Else
=Fseek(Nhandle,0,0)
Cstring=Fread(Nhandle,Hend)
=Fclose(Nhandle)
Endif
Thisform.Txtspeak.Value=Cstring
进入讨论组讨论。
综合演示
Ochar.Languageid=0x409
With Ochar
.Play("Greet")
.Play("Restpose")
.Speak("Hello!")
.Play("Announce")
.Speak("I Am Merlin.")
.Play("Pleased")
.Speak("It Is Nice To Meet You!")
.Moveto(250,500)
.Speak("Now,Here Is A Magic Trick.")
.Play("Domagic1")
.Play("Domagic2")
.Play("Pleased")
.Play("Restpose")
.Speak("Thank You!")
.Play("Wave")
.Speak("Goodbye")
.Play("Hide")
Endwith
关闭表单
Thisform.Release
综合演示效果如图3。
进入讨论组讨论。
- u盘无法识别怎么办,小编告诉你U盘无法识别怎
- usb无线网卡怎么用,小编告诉你安装教程
- usb调试在哪,小编告诉你usb调试在哪
- 优盘不显示,小编告诉你优盘不显示怎么办
- 低级格式化,小编告诉你硬盘怎么低级格式化
- 分区表丢失,小编告诉你分区表丢失如何修复
- 进入bios,小编告诉你戴尔笔记本进入bios设置u
- 怎么刷bios,小编告诉你华硕怎么刷bios
- 读卡器怎么用,小编告诉你如何使用读卡器
- bios升级,小编告诉你华硕主板bios怎么升级