业务需求:h5进行录音并将录音文件进行语音评测打分。
步骤分析:
第一步:前端h5进行录音采集,然后发送给后端一个临时的录音文件。
第二步:后端接收录音文件并保存在本地目录下。
第三步:将保存在本地的录音文件上传到阿里云OSS
第四步:将生成的阿里云地址经过base64加密,走语音识别接口,最后返回评分。
补充说明:
补充一:为什么不直接使用本地地址进行识别?
答:如下图评测文件api参数描述可见,评测文件只识别阿里云oss地址。

阿里云语音评测参数截图
补充二:为什么文件不直接上传oss,还得先放到项目本地再上传oss?

oss接口sdk
oss文件上传的sdk上已经很明确了,上传的文件需要本地路径。
具体操作:
(1)前端录音文件上传demo。H5录音前端demo
(2)前端发送给后端的文件形式是什么呢?network中的显示的如下图:

前端传给后端接口的数据
为了一探究竟,我决定从服务端继续打印该参数

后端获取到的数据打印
从上图可以看出,前端发给后端的只是一个tmp临时文件路径。
最开始我做到这里的时候,第一反应是把临时文件读成数据流然后写入到我们自定义的文件中,后来通过请教大佬才知道,laravel和symfony都有类似的方法,能够将临时文件储存子啊本地,话不多说,直接上代码。

上传文件到本地代码
(3)上两步文件已经到了服务端本地,接下来上传oss

本地文件上传oss代码片段
(4)使用评测接口对oss文件进行评测

对oss进行评测
总结:本片文章就是典型的倒着推,最终确定下来思路。由于评测的局限性导致了使用阿里云oss,因为oss的局限性需要上传本地,最终实现了需求。但是这个需求我吃亏了,在开发成功后发现测试包没有次数了,而接下来的购买次数价格更是吓人,所以接下来我将更新一篇放弃阿里云,选择腾讯云的语音评测开发博客。