摘要:前不久寫了個工具型微信小程序周邊,里面用到了語音識別技術。當然如果你要兼容低端微信用戶需要使用做兼容處理。如果發現不當之處歡迎微信交流。想看實際案例的可以微信掃碼關于安裝關于安裝關于安裝
前不久寫了個工具型微信小程序(Find周邊),里面用到了語音識別技術。現將實現細節整理如下:
接口預覽
通過閱讀了解科大訊飛接口文檔、小程序接口開發文檔以及對后端ThinkPhp框架的學習,我整理了如下開發步驟:
注冊科大訊飛賬號(國人的驕傲,全球領先的語音識別技術)
進入AIUI開放平臺在應用管理創建應用并記錄APPID和ApiKey
進入應用配置,配置符合自己的情景模式、識別方式和技能
進行小程序開發錄制需要識別的音頻(下有詳述)
后端轉碼錄制的音頻(科大訊飛支持pcm、wav),提交給識別接口(下有詳述)
小程序接到識別結果進行接下來業務
音頻錄制接口
wx.startRecord()和wx.stopRecord()
wx.startRecord()和wx.stopRecord()接口也可以滿足需求,但從1.6.0 版本開始不再被微信團隊維護。建議使用能力更強的 wx.getRecorderManager 接口。該接口獲取到的音頻格式為silk。
silk是webm格式通過base64編碼后的結果,我們解碼后需要將webm轉換成pcm、wav
wx.getRecorderManager()
相對wx.startRecord()接口,該接口提供的能力更為強大(詳情),可以暫停錄音也可以繼續錄音,根據自己需求設置編碼碼率,錄音通道數,采樣率。最讓人開心的是可以指定音頻格式,有效值 aac/mp3。不好的是wx.getRecorderManager()在1.6.0才開始被支持。當然如果你要兼容低端微信用戶需要使用wx.startRecord()做兼容處理。
事件監聽細節
// wxjs: const recorderManager = wx.getRecorderManager() recorderManager.onStart(() => { //開始錄制的回調方法 }) //錄音停止函數 recorderManager.onStop((res) => { const { tempFilePath } = res; //上傳錄制的音頻 wx.uploadFile({ url: app.d.hostUrl + "/Api/Index/wxupload", //僅為示例,非真實的接口地址 filePath: tempFilePath, name: "viceo", success: function (res) { console.log(res); } }) }) Page({ //按下按鈕--錄音 startHandel: function () { console.log("開始") recorderManager.start({ duration: 10000 }) }, //松開按鈕 endHandle: function () { console.log("結束") //觸發錄音停止 recorderManager.stop() } }) //wxml:{{text}}
音頻轉換
我這邊后端使用php的開源框架thinkphp,當然node、java、python等后端語言都可以,你根據自己的喜好和能力來。想做好音頻轉碼我們就要借助音視頻轉碼工具ffmpeg、avconv,它們都依賴于gcc。安裝過程大家可以自行百度,或者關注底部的文章鏈接。
$flag,"message"=>$message,"data"=>$data); print json_encode($result);exit; } }
調用識別接口
當我們把文件準備好之后,接下來我們就可以將base64編碼之后的音頻文件通過api接口請求傳輸過去。期間我們要注意嚴格按照文檔中所說的規范傳輸,否則將造成不可知的結果。
"main","userid"=>"user_0001","auf"=>"16k","aue"=>"raw","spx_fsize"=>"60" ))); $data = "data=".$d; $res = $this->httpsRequest($url,$data,$xparam); if(!empty($res) && $res["code"] == 00000){ apiResponse("success","識別成功!",$res); }else{ apiResponse("error","識別失?。?); } } //數據返回封裝 function apiResponse($flag = "error", $message = "",$data = array()){ $result = array("flag"=>$flag,"message"=>$message,"data"=>$data); print json_encode($result);exit; } }
到這里基本就完成了。以上代碼是經過整理之后的,并不一定能夠滿足各位的實際開發需求。如果發現不當之處歡迎微信交流(xiaoqiang0672)。
想看實際案例的可以微信掃碼
-
關于gcc安裝:http://www.linuxidc.com/Linux...
關于FFmpeg安裝:http://note.youdao.com/notesh...
關于ffmpeg/avconv安裝:http://blog.csdn.net/killmice...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28244.html
摘要:前不久寫了個工具型微信小程序周邊,里面用到了語音識別技術。當然如果你要兼容低端微信用戶需要使用做兼容處理。如果發現不當之處歡迎微信交流。想看實際案例的可以微信掃碼關于安裝關于安裝關于安裝 前不久寫了個工具型微信小程序(Find周邊),里面用到了語音識別技術?,F將實現細節整理如下: 接口預覽 通過閱讀了解科大訊飛接口文檔、小程序接口開發文檔以及對后端ThinkPhp框架的學習,我整理...
摘要:語音識別該功能的應用場景是用戶設置了一個中文的口令紅包,接收到該紅包的用戶需要用語音說出該口令,完全匹配的話則獲取該紅包的某個比例金額。表結構如下如此,便完成了語音識別功能。 在做小程序后端支持的過程中遇到不少有意思的功能,有些比較考你的思維散發及解決問題的實際能力,這里摘錄一下記錄下來,是為拋磚引玉、如能幫到別人,自然是最好不過了。 先放幾張設計圖看下大概功能: showImg(ht...
摘要:分享一個比較完整的項目供大家交流學習,這個項目的英文簡介項目地址在線演示翻譯過來呢就是一個涉及面較廣的使用豆瓣作為數據源的。 分享一個比較完整的Vue2+項目供大家交流學習,這個項目的英文簡介:Awesome douban DEMO created with Vue2.x + Vuex + Vue-router + vue-resource 項目地址:https://github.co...
摘要:的人工智能版圖人工智能版圖由應用平臺框架三大部分組成應用層是提供各種應用服務,比如平臺層是平臺。應用層主推三大成熟應用基于深度學習的圖像和視頻分析它能實現對象與場景檢測人臉分析面部比較人臉識別名人識別圖片調節等功能。AWS的人工智能版圖 AWS人工智能版圖由:應用、平臺、框架三大部分組成 AI應用層:是提供各種應用服務,比如Amazon Rekognition、Polly...
閱讀 2988·2023-04-26 02:25
閱讀 2262·2023-04-25 18:05
閱讀 654·2021-09-30 09:57
閱讀 2949·2021-09-27 14:10
閱讀 1660·2019-08-30 15:44
閱讀 1009·2019-08-29 15:28
閱讀 2534·2019-08-29 14:10
閱讀 2267·2019-08-29 13:30