浅析在公众号中使用弛声sdk为什么上传解析慢

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 最近在开发语音评测功能的时候,发现在公众号中使用弛声sdk进行录音评测的时候,录音结束后到返回评测结果比较慢,在做小程序相关功能的时候则明显快多了。那么这里面有什么不同么?为什么公众号sdk这个过程耗时更长?

前言


最近在开发语音评测功能的时候,发现在公众号中使用弛声sdk进行录音评测的时候,录音结束后到返回评测结果比较慢,在做小程序相关功能的时候则明显快多了。那么这里面有什么不同么?为什么公众号sdk这个过程耗时更长?


公众号sdk


先来看看公众号sdk的源码api.chivoxapp.com/js/wx/AiEng…

需要格式化一下便于查看。其中录音结束处理的部分代码流程如下:


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文件api.chivoxapp.com/js/wxa/AiEn…

代码中,处理录音部分的代码如下:


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,所以公众号处理起来要慢一些


目录
相关文章
|
19天前
|
网络协议 安全 调度
阿里云公共DNS发布支持鸿蒙系统版的SDK
阿里云公共DNS发布支持鸿蒙系统版SDK,赋能鸿蒙开发者快速接入阿里云公共DNS服务。公共DNS将帮助接入的鸿蒙应用免除LocalDNS劫持困扰、解析加速、精准调度。
|
编解码 视频直播 开发工具
《从 SDK 到编解码:视频直播架构解析》电子版地址
从 SDK 到编解码:视频直播架构解析
117 0
《从 SDK 到编解码:视频直播架构解析》电子版地址
|
存储 网络安全 开发工具
iOS如何上传自己的sdk到cocoapods并用pod管理
在Github上创建存储库(前提是得有一个Github账号,如果没有就注册一个)
433 0
iOS如何上传自己的sdk到cocoapods并用pod管理
|
编解码 JavaScript IDE
RISC-V生态开发套件解析(五):LicheeRV 86开发板BSP SDK开发和Xboot 镜像体验
随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。
465 0
RISC-V生态开发套件解析(五):LicheeRV 86开发板BSP SDK开发和Xboot 镜像体验
|
自然语言处理 Java 机器人
自然语言处理预训练模型商品评价解析服务-本地生活领域 Java SDK示例
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。可用于搭建内容搜索、内容推荐、舆情识别及分析、文本结构化、对话机器人等智能产品。NLP自学习平台提供了一些预训练的特定领域模型服务。例如:商品评价解析服务、新闻层次分类服务、中文简历抽取、英文简历抽取等,且无需自主标注训练,直接调用API即可使用。本文将使用Java SDK演示商品评价解析服务-本地生活领域的快速调用以供参考。
204 0
|
自然语言处理 Java 机器人
自然语言处理预训练模型商品评价解析服务-电商领域服务 Java SDK示例
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。可用于搭建内容搜索、内容推荐、舆情识别及分析、文本结构化、对话机器人等智能产品。NLP自学习平台提供了一些预训练的特定领域模型服务。例如:商品评价解析服务、新闻层次分类服务、中文简历抽取、英文简历抽取等,且无需自主标注训练,直接调用API即可使用。本文将使用Java SDK演示商品评价解析服务-电商领域的快速调用以供参考。
203 0
|
1月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
8月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
183 0
|
1月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
753 0

热门文章

最新文章

推荐镜像

更多