直接呼叫微信小程式錄音接口,然後上傳到伺服器,百度語音的接口是識別不了這種格式的文件,那麼問題來了
一、如何轉碼? ffmpeg?
二、如何在PHP中使用?
本文將要解決這兩個問題。
用到的第三方工具:
1、百度語音
2、silk檔案格式轉換
一、轉碼silk文件格式
傳送門在此:github.com/kn007/silk-v3-decoder
要注意的是:
1、首先要安裝- ffmpeg ,具體安裝方法請自行百度,如果要轉碼成MP3格式,請記得啟用libmp3lame 即--enable-libmp3lame
2、如果在使用silk -v3-decoder 過程中提示轉碼失敗,請自行加入ffmpeg到環境變數或修改converter.sh,如下所示,建議後者,因為透過PHP執行shell腳本是不讀環境變數的
#二、如何在PHP中使用
#有了上面的神器之後,媽媽再也不用擔心語音辨識問題了。
目前採用thinkPHP 5作為服務端系統,在小程式端把音訊檔案上傳到後台,TP5已有檔案上傳功能的封裝,具體上傳程式碼不細說;
我們只需要讀取上傳的文件,透過shell指令進行轉碼,然後把轉碼後的文件傳送給百度語音介面即可得到語音辨識結果。
需要注意以下幾點:
1、其中php執行轉碼的程式碼如下
$real_file即為轉碼後的音訊檔案的絕對位址,建議轉換成WAV格式,amr格式轉換不成功,原因未知。
2、呼叫百度語音介面格式設定
需設定音訊格式為WAV,碼率為16000或8000,如圖所示:
三、總結
小程式語音介面和公眾號的語音介面不一樣,公眾號語音介面回傳的是amr格式,小程式的是silk格式,是Skype開源的網路音訊格式,透過傳送門中的工具即可轉碼,轉碼工具先是轉成pcm格式文件,然後轉成指定格式,其實pcm這種格式百度語音已經可以識別,有需要的童鞋可以修改converter.sh腳本。
【相關推薦】
1. 微信小程式完整原始碼下載
以上是小程式開發之語音搜尋(SUSE版)實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!