前面了解过纯js实现了录音功能,并也自学了一些关于前端二进制的内容,现在终于可以利用阿里云来实现下智能语音识别的功能了。
一、准备
首先,先登录阿里云官网查看下官方文档(一句话识别),提供了java,c++,ios等,可惜我只会些node啊,所以直接看下restful api,毕竟node也是可以发送http请求的嘛。
功能介绍中阐明了产品的功能,也说明了使用的一些条件,比如POST方式、不超过一分钟,当然重要的还是音频编码格式和音频采样率的限制。这儿我使用PCM格式,和16k的音频采样率。
回看我前面用js实现的录音文件,我们只需要使用他的encodePCM()接口就行了。
二、直接传递二进制
前端部分
html与js
简单的用两个按钮实现开始录音和结束录音,第三个按钮实现上传到服务器翻译的功能,最后页面上设置个div存放翻译的内容。
js部分的话,引入recorder.js文件(在纯js实现录音与播放里有)。全局定义了两个变量,一个是对div的引用和录音对象的引用。var oDiv = document.getElementById('box'),recoder = null;
首先看下开始录音的函数,function startRecord() {
if (!recorder) {
recorder = new Recorder({
sampleRate: 16000 // 阿里云要求16000的采样率
});
}
recorder.start();
}
停止比较简单,只需要调用对应的stop()接口就行了,function endRecord (e) {
recorder && recoder.stop();
}
将得到的blob数据放在formdata中,以post的方式发送给后端,content-type得设置成multipart/form-data。function transRecord (e) {
let pcm = recorder.getPCMBlob(),formdata = new FormData();
formdata.append('file',pcm);
<