小程序上对接阿里的语音识别
2021/7/30 20:37:31
本文主要是介绍小程序上对接阿里的语音识别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
通过查询阿里官方文档,《实时语音识别》需要通过服务器中转实现,这里希望简单一点,直接客户端搞定,然后确定使用《一句话识别》中的RESTful API的方式。
实现语音识别分以下几个步骤:
1、小程序录音生成临时录音文件(阿里识别要求pcm编码);
音频格式:PCM编码、16bit采样位数、单声道(mono)。 音频采样率:8000Hz/16000Hz。 //参数 format: 音频编码格式。支持格式:PCM/OPUS。默认:PCM。
2、连接阿里服务器,把录音文件作为请求参数,返回识别的文字;
3、清除临时文件。
实现
1、生成录音文件
首先想到的是wx.startRecord,但是测试发现生成的是silk文件,还需要转换,放弃。
然后微信还提供了另一个录音的api:wx.getRecorderManager(),支持直接录制pcm格式
于是:
/** * 开始录音 */ _startRecord(){ console.log(TAG_NAME, '_startRecord') const options = { duration: 60000, //指定录音的时长,单位 ms,最大为10分钟(600000),默认为1分钟(60000) sampleRate: 16000, //采样率 numberOfChannels: 1, //录音通道数 encodeBitRate: 96000, //编码码率 format: 'pcm', //音频格式,有效值 aac/mp3 frameSize: 50, //指定帧大小,单位 KB } //开始录音计时 //that.recordingTimer(); //开始录音 recorderManager.start(options); recorderManager.onStart(() => { console.log(TAG_NAME, '...recorderManager onStart...') }); //错误回调 recorderManager.onError((res) => { console.log(TAG_NAME, res); }) }
结束录音后,开启语音识别:
/** * 结束录音 */ _stopRecord(){ console.log(TAG_NAME, '_stopRecord') recorderManager.stop(); recorderManager.onStop((res) => { console.log(TAG_NAME, '...recorderManager onStop...', res.tempFilePath) this.setData({tempAudioFilePath: res.tempFilePath}) //结束录音计时 //clearInterval(that.data.setInter); //开始asr语音识别 this._startAsr() }) }
识别比较简单:
先获取token,然后
wx.request({ url: app.globalData.aliAsrServerUrl, method: 'POST', header:{ 'X-NLS-Token':tokenData.token, 'Content-type':'application/octet-stream', 'Host':'nls-gateway.cn-shanghai.aliyuncs.com' }, data: fs.readFileSync(audioFilePath), success: (res) =>{ console.log(TAG_NAME, 'asr success:', res) //删除临时文件 fs.removeSavedFile() wx.showToast({ icon: 'none', title: res.data.result, }) this.setData({messageContent: res.data.result}) this._chat() }, fail: (res) =>{ console.error(TAG_NAME, 'asr fail:', res) } })
搞定。
参考资料
https://www.cnblogs.com/westwin/p/11277449.html
这篇关于小程序上对接阿里的语音识别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-13微信小程序如何封装接口域名?-icode9专业技术文章分享
- 2024-11-13如何在微信小程序中实现直传功能?-icode9专业技术文章分享
- 2024-11-13如何在小程序的地图组件中添加标记和文字?-icode9专业技术文章分享
- 2024-11-13在微信小程序的地图组件中如何实现自定义标记和气泡?-icode9专业技术文章分享
- 2024-11-01微信小程序教程:零基础入门到实战
- 2024-11-01微信小程序全栈教程:从入门到实践
- 2024-10-31微信小程序怎么实现关注公众号功能-icode9专业技术文章分享
- 2024-10-30微信小程序cover-view,支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序的cover-image支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序web-view怎么设置高度?-icode9专业技术文章分享