30分钟快速实现小程序语音识别功能分钟快速实现小程序语音识别功能
最近需要在小程序上实现语音识别,将需要用到的功能都总结下,供大家参考。语音识别用的是科大讯飞,文
中给出了详细的实现方法介绍,需要的朋友们下面随着小编来一起学习学习吧
前言前言
为了参加某个作秀活动,研究了一波如何结合小程序、科大讯飞实现语音录入、识别的实现。科大讯飞开发文档中只给出
Python 的 demo,并没有给出 node.js 的 sdk,但问题不大。本文将从小程序相关代码到最后对接科大讯飞 api 过程,一步步
介绍,半个小时,搭建完成小程序语音识别功能!不能再多了!
当然,前提是最好掌握有一点点小程序、node.js 甚至是音频相关的知识。下面话不多说了,来一起看看详细的介绍吧
架构先行架构先行
架构比较简单,大伙儿可以先看下图。除了小程序,需要提供 3 个服务,文件上传、音频编码及对接科大讯飞的服务。
node.js 对接科大讯飞的 api,npm 上已经有同学提供了 sdk,有兴趣的同学可以去搜索了解一下,笔者这里是直接调用了科
大讯飞的 api 接口。
撸起袖子加油干撸起袖子加油干
1、创建小程序、创建小程序
鹅厂的小程序文档非常详细,在这里笔者就不对如何创建一个小程序的步骤进行详细阐述了。有需要的同学可以查看鹅厂的小
程序开发文档。
1.1 相关代码相关代码
我们摘取小程序里面,语音录入和语音上传部分的代码。
// 根据wx提供的api创建录音管理对象
const recorderManager = wx.getRecorderManager();
// 监听语音识别结束后的行为
recorderManager.onStop(recorderResponse => {
// tempFilePath 是录制的音频文件
const { tempFilePath } = recorderResponse;
// 上传音频文件,完成语音识别翻译
wx.uploadFile({
url: 'http://127.0.0.1:7001/voice', // 该服务在后面搭建。另外,小程序发布时要求后台服务提供https服务!这里的地址仅为开发环境配置。
filePath: tempFilePath,
name: 'file',
complete: res => {
console.log(res); // 我们期待res,就是翻译后的内容
}
});
});
// 开始录音,触发条件可以是按钮或其他,由你自己决定
recorderManager.start({
duration: 5000 // 最长录制时间
// 其他参数可以默认,更多参数可以查看https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.start.html
});
2、搭建文件服务器、搭建文件服务器
步骤 1 代码中提到了一个 url 地址大家应该都还记得。
http://127.0.0.1:7001/voice
小程序本身还并没有提供语音识别的功能,所以在这里我们需要借助于“后端”服务的能力,完成我们语音识别翻译的功能。
2.1 egg.js 服务初始化服务初始化
我们使用 egg.js 的 cli 快速初始化一个工程,当然你也可以使用 express、koa、kraken 等等框架,框架的选型在此不是重点
我们就不做展开阐述了。对 egg.js 不熟悉的同学可以查看egg.js 的官网。
npm i egg-init -g
egg-init voice-server --type=simple
cd voice-server
npm i
安装完成后,执行以下代码