• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用Microsoft Agent 控件與電腦交談

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 19次 | 進入軟件測試論壇討論

    領測軟件測試網 Microsoft Agent 控件比Office 97中的助手功能更加豐富和強大,它提供的動畫人物不僅有生動、有趣的動作,而且還能通過聲卡、麥克風與用戶進行交談,這些功能使計算機更具人性魅力,其應用前途相當廣闊。Microsoft Agent控件的內部機制很復雜,但用VB來操縱它卻是非常方便,本文將介紹VB 5.0調用Microsoft Agent 控件的基本方法。
      安裝Microsoft Agent 控件
      ·首先安裝Microsoft Agent的核心組件 msagent.exe。
      ·接著安裝Lernout & Hauspie TruVoice Text-to-Speech Engi ne(完成從文字合成語音的工作) cgram.exe。
      ·最后安裝 Microsoft Command and Control Speech Engine( 提供語音識別功能)Actcnc.exe。
      ·另外還需要A.net動畫人物數據文件,在本文中使用了Genie.ac s、Robby.acs兩個文件。
      上述文件均可從 http://www.microsoft.com/workshop/imedia/ agent/default.as p下載。
      Microsoft Agent控件的初始化
      先把Microsoft Agent控件添加到VB的控制工具條上,并在用戶的 Form上繪制該控件(在下述例子中,其Name屬性設為MyAgent)。下面的代碼調用IAgentCtlCharacters::Loa d()方法裝入一個動畫人物的數據,調用IAgentCtlCharacter::Show()/Hide()方法來顯示/隱藏動畫人物。
      Const DATAPATH = "c:\"
      Dim Genie As IAgentCtlCharacter
      Dim Robby As IAgentCtlCharacter
      Dim GenieRequest1,GenieRequest2 As IAgentCtlRequest
      Dim RobbyRequest1 As IAgentCtlRequestPrivate 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.HideEnd Sub  


      Microsoft Agent 控件的動畫編程
      每個動畫人物都有自己特定的動作,例如Genie有聽、看、讀、寫、發怒、感謝等數十種動畫形態,可以調用IAgentCtlCharacter::pla y()方法來設置動畫動作。為了在多個動畫人物之間協調它們的動作, 比如讓Robby等待Genie的某個動作執行完畢后才做另外一個動作,可采用IAgentCtlCharacter::Wait()方法來實現同步。在數十種動畫動作中有一類比較特殊(動作名以"ing"為后綴,如"Searching"),一旦執行便循環播放一段動畫,只有調用IAgentCtlCharacter::Interrupt() 方法才能終止。示例代碼如下:
    Private Sub Co mmand1_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.HideEnd Sub  


      Microsoft Agent 控件的語音合成功能
      Microsoft Agent控件支持英語的語音合成功能,只需輸入句子的文字,便會生成該句子的語音信號并通過聲卡、音箱播放出來。語音合成功能通過調用IAgentCtlCharact er::Speak()方法來實現。輸出中文時不能用上述方法,只能用WAV文件代替,給Speak()方法的第一個參數傳遞文字氣球中包含的文字,給第二個參數傳遞一個WAV文件路徑。同樣為同步多個動畫人物的語音輸出也必須使用IAgentCtlCharact er::Wait()方法。目前Mi crosoft 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 Inf ormation 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 chara cters"
      ’輸出中文語音,"歡迎光臨"的中文語音包含在welcome.wav中
      Genie.Speak "歡迎光臨", "c:\welcome.wav"
      Genie.Hide
      Robby.HideEnd Sub  


      Microsoft Agent 控件的語音識別功能
      Microsoft Agent控件具有語音識別能力,用戶可以向動畫人物發出語音命令(同時按住Scroll Lock鍵)。Microsoft Agent控件為每個 Agent動畫人物提供一個特殊命令窗口,用以顯示該動畫人物能夠接受的所有語音命令。該命令窗口中的命令不能用鼠標或鍵盤來選取,只能通過語音?梢杂肐AgentComands::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 SubPrivate Sub MyAgent_Command(ByVal Us erInput 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

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>