常量數據表
.版本 2.常量 對話前, "<文本長度: 7>", , text":".常量 對話后, "<文本長度: 2>", , "}.常量 token前, "<文本長度: 16>", , "access_token":".常量 雙撇號, "<文本長度: 1>", , ".常量 apikey, "<文本長度: 24>", , Tc9KWDDFPLm1QNVPgEx7kco6.常量 Secretkey, "<文本長度: 32>", , DnqP3q2GwOqGuYI9sUhLT4l7uC2f1yVL.常量 識別返回前, "<文本長度: 10>", , result":[".常量 識別返回后, "<文本長度: 3>", , "],
語音聊天機器人的代碼
此功能需要加載精易模塊5.6
.版本 2.支持庫 eMMedia.支持庫 ESpeechEngine.支持庫 internet.支持庫 spec.支持庫 eAPI.程序集 窗口程序集_啟動窗口.程序集變量 API地址, 文本型.程序集變量 APIkey, 文本型.程序集變量 喚醒名, 文本型, , "0".程序集變量 音量, 短整數型.程序集變量 計時, 整數型.程序集變量 最大頻段, 整數型.程序集變量 發送內容, 文本型.子程序 _語音識別1_識別到語音.參數 識別文本, 文本型.如果真 (尋找文本 (識別文本, 喚醒名 [1], , 假) ≠ -1) ' 識別到喚醒名就開始錄音。 錄音音波1.打開 () ' 這個是檢測麥克風音量的用的 最大頻段 = 錄音音波1.取上限 () - 1 播放音樂 (#開始聲音, ) 設置喚醒按鈕.標題 = “正在聆聽” 錄音1.錄制 () ' 開始錄音…… 判斷是否說話時鐘.時鐘周期 = 10 ' 判斷是否在說話的時鐘。.如果真結束.子程序 _設置喚醒按鈕_被單擊語音識別1.創建 (0, 1) ' 初始化語音識別引擎,初始化失敗的需要下載微軟的語音識別引擎Microsoft Speech SDK v5.1加入成員 (喚醒名, 編輯框1.內容)語音識別1.加入常用 (喚醒名)信息框 (“設置成功,請直接對著麥克風呼喚: ” + 編輯框1.內容 + “ 即可開始對話”, 0, )設置喚醒按鈕.禁止 = 真.子程序 機器人對話, 文本型, , 調用圖靈機器人API接口.參數 發送的內容, 文本型.局部變量 數據, 文本型.局部變量 返回內容, 文本型.局部變量 需要的內容長度, 整數型數據 = 編碼_gb2312到utf8 (發送的內容) ' ——————————先轉換成utf8碼返回內容 = 到文本 (HTTP讀文件 (“http://www.tuling123.com/openapi/api?key=bad4d07e4c1c439b935a922906176478&info=” + 數據 + “&loc=北京&userid=a1”)) ' ——————————發送給圖靈返回內容 = 編碼_utf8到gb2312 (返回內容) ' —————————— 先把返回的數據轉成簡體中文的編碼調試輸出 (返回內容) ' ——————————調試輸出一下看看需要的內容長度 = 取文本長度 (返回內容) - 尋找文本 (返回內容, #對話前, , 假) - 取文本長度 (#對話前) - 取文本長度 (#對話后) + 1 ' 全部的長度 - 前面文本所在位置 - 前面文本長度 - 后面文本長度 + 1,得出來的結果就是需要的文本長度返回內容 = 取文本中間 (返回內容, 尋找文本 (返回內容, #對話前, , 假) + 取文本長度 (#對話前), 需要的內容長度) ' ——————————起始位置是前面文本所在位置 + 前面文本的長度編輯框3.內容 = 返回內容 ' ——————————編輯框上顯示出來返回 (返回內容).子程序 獲取token, 文本型, , 獲取百度驗證信息.局部變量 臨時數組, 文本型, , "0".局部變量 返回的文本, 文本型.局部變量 token, 文本型返回的文本 = 到文本 (HTTP讀文件 (“https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=” + #apikey + “&client_secret=” + #Secretkey))臨時數組 = 分割文本 (返回的文本, #token前, )token = 取文本左邊 (臨時數組 [2], 尋找文本 (臨時數組 [2], #雙撇號, , 假) - 1)返回 (token).子程序 合成語音, , , 調用百度語音合成API接口.參數 需要合成的文本, 文本型.局部變量 句柄, 整數型.局部變量 z, 文本型.局部變量 返回的語音, 字節集z = 需要合成的文本z = 編碼_gb2312到utf8 (z) ' 先轉換成utf8編碼z = 編碼_URL編碼 (z) ' 再進行URL編碼媒體播放1.停止 ()媒體播放1.關閉 () ' 關閉正在播放的才能寫出新的語音返回的語音 = HTTP讀文件 (“http://tsn.baidu.com/text2audio?tex=” + z + “&lan=zh&ctp=1&cuid=” + 取本機網卡物理地址 () + “&tok=” + 獲取token () + “&pit=9”)寫到文件 (“C:/Users/Administrator/Desktop/1.mp3”, 返回的語音)媒體播放1.打開 (“C:/Users/Administrator/Desktop/1.mp3”)媒體播放1.播放 (-1, )調試輸出 (“合成語音完成”)設置喚醒按鈕.標題 = “完成”.子程序 _判斷播放狀態時鐘1_周期事件, , , 如果播放完了就關閉文件,這樣才能寫出新的文件.判斷開始 (媒體播放1.取狀態 () = 2) 媒體播放1.關閉 ().默認.判斷結束.子程序 _判斷是否說話時鐘_周期事件錄音音波1.取聲波值 (音量, 2047)音量 = 取絕對值 (音量).判斷開始 (音量 > 200) 計時 = 0.判斷 (計時 > 100) ' 時鐘周期是10,如果連續100次(也就是1秒鐘)音量都小于200就結束錄音。這個作用就是1秒鐘之內沒說話就停止錄音。 判斷是否說話時鐘.時鐘周期 = 0 錄音1.停止 () 播放音樂 (#結束聲音, ) 設置喚醒按鈕.標題 = “正在識別” 錄音1.保存文件 (取運行目錄 () + “/ly.wav”, 真) 合成語音 (機器人對話 (識別 ())) 計時 = 0.默認 計時 = 計時 + 1.判斷結束.子程序 識別, 文本型, , 調用百度語音識別API接口.局部變量 MAC, 文本型.局部變量 語言, 文本型, , , 中文=zh、粵語=ct、英文=en,不區分大小寫,默認中文.局部變量 返回內容, 文本型MAC = 取本機網卡物理地址 ()語言 = “zh”返回內容 = 編碼_utf8到gb2312 (到文本 (網頁_訪問 (“http://vop.baidu.com//server_api?lan=” + 語言 + “&format=wav” + “&rate=8000” + “&channel=1” + “&cuid=” + MAC + “&token=” + 獲取token (), 1, , , , “Content-Type:audio/wav;rate=8000;Content-length=999999”, , , 讀入文件 (取運行目錄 () + “/ly.wav”), )))返回內容 = 取文本中間 (返回內容, 尋找文本 (返回內容, #識別返回前, , 假) + 取文本長度 (#識別返回前), 尋找文本 (返回內容, #識別返回后, , 假) - 尋找文本 (返回內容, #識別返回前, , 假) - 取文本長度 (#識別返回前)) ' 取得需要的文本調試輸出 (“識別后的內容:” + 返回內容)編輯框2.內容 = 返回內容返回 (返回內容)
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答