浅析在公众号中使用弛声sdk为什么上传解析慢
前言
最近在開發語音評測功能的時候,發現在公眾號中使用弛聲sdk進行錄音評測的時候,錄音結束后到返回評測結果比較慢,在做小程序相關功能的時候則明顯快多了。那么這里面有什么不同么?為什么公眾號sdk這個過程耗時更長?
公眾號sdk
先來看看公眾號sdk的源碼
http://api.chivoxapp.com/js/wx/AiEngine.min.js
需要格式化一下便于查看。其中錄音結束處理的部分代碼流程如下:
AiEngine.prototype.stopRecord = function (options) {var that = this;wx.ready(function () {wx.stopRecord({success: function (res) {...that._lastVoice = {localId: res.localId,tokenId: that._param.request.tokenId,startTime: that._startTime,endTime: that._endTime,duration: that._endTime - that._startTime};that._voices[that._lastVoice.tokenId] = that._lastVoice;that.uploadFile(that._token, that._lastVoice, that._param);...},fail: function (res) {...}});});};可以看到當停止錄音調用了uploadFile函數,這個函數的代碼如下:
AiEngine.prototype.uploadFile = function (token, file, param) {var that = this;wx.ready(function () {wx.uploadVoice({localId: file.localId,isShowProgressTips: param.isShowProgressTips,success: function (res) {file.serverId = res.serverId;that._httpClient.Post({...});},fail: function (res) {...}});});};可以看到先調用了微信的uploadVoice將聲音文件上傳到微信的服務器上,然后將音頻文件的url和其他信息post給弛聲,這樣弛聲再通過url下載音頻分析。
由于中間有一步上傳到微信服務器的過程,然后弛聲再下載,所以無形的增加了流程的時間。
小程序sdk
但是我在使用小程序sdk的時候,發現上次解析快了很多,難道有什么不同?
再來看看小程序的js文件https://api.chivoxapp.com/js/wxa/AiEngine.min.js
代碼中,處理錄音部分的代碼如下:
c.prototype.startRecord = function(e) {var d = this;wx.startRecord({success: function(f) {if (d._endTime === 0) {...} else {if (typeof f === "undefined") {...} else {d._lastVoice = {localId: f.tempFilePath,tokenId: e.request.tokenId,startTime: d._startTime,endTime: d._endTime,duration: d._endTime - d._startTime};d._voices[d._lastVoice.tokenId] = d._lastVoice;d.uploadFile(d._token, d._lastVoice, e)}}},fail: function() {...}})};可以看到當停止錄音調用了uploadFile函數,這個函數代碼如下:
c.prototype.uploadFile = function(e, d, g) {var f = this;wx.uploadFile({url: f._host + "/" + f._route + "/eval",filePath: d.localId,name: f._utils.generateGuid(),...})};可以看到這里就與公眾號sdk有些差異,這里調用了微信的uploadFile直接將音頻文件上傳給弛聲解析。這樣就比公眾號少了一步上傳到微信服務器再下載的過程,自然等待時間就會少很多。
原因
那么為什么公眾號不能直接上傳給弛聲,因為不論公眾號還是小程序錄音后得到的都不是音頻文件的路徑,而是一個微信自定義格式的文件ID,通過這個ID我們無法直接拿到文件路徑。而小程序提供了一個通過ID就可以將文件上傳到自定義服務器的api,公眾號只提供了一個通過ID上傳到微信服務器的api,所以公眾號處理起來要慢一些
總結
以上是生活随笔為你收集整理的浅析在公众号中使用弛声sdk为什么上传解析慢的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux(centos7)安装ngin
- 下一篇: 一文搞懂RSA算法原理及简单实现