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