今天意外发现微信小游戏也能轻松实现语音识别功能,在此记录一下。

项目背景:微信小游戏+云开发

使用接口:百度语音识别接口

步骤:

1.到百度-语音识别注册并申请语音识别服务(个人申请能有五万条免费测试),拿到AppID、APIkey和SECRETKEY

2.小游戏前端js代码

mystart(){         //开始录音按钮回调函数let recorderManager = wx.getRecorderManager()recorderManager.onStart(() => {console.log('recorder start')})const options = {duration: 10000,sampleRate: 8000,   //录音采样率numberOfChannels: 1,format: 'PCM',}recorderManager.start(options)}mypause(){        //结束录音按钮回调函数var that=this;wx.cloud.init()let recorderManager = wx.getRecorderManager()recorderManager.stop()recorderManager.onStop((res) => {console.log('recorder stop', res)let tf=res.tempFilePaththat.logg.text=tf  //logg是我的一个label组件的名字setTimeout(function () { wx.getFileSystemManager().readFile({filePath: tf, success: res => { //成功的回调that.logg.text=res.datawx.cloud.init()wx.cloud.callFunction({name: 'getbaidu',data: {sound:res.data},// 成功回调success(res){console.log("getbaidu成功",res)that.logg.text="成功"+res.result},fail(res){console.log("getbaidu失败",res)that.logg.text="失败"+res}})}})},1000)})}

注意事项:

(1)录音采样率很重要,后端接口参数中的采样率要和这里设置的一样。另外,我发现当采样率为16000时,在微信开发工具上能正常语音识别,而在真机上可能会出现文件过大无法识别的情况,因此这里设成了8000。

(2)录音格式要选择‘PCM’,微信现在已经能直接录成pcm格式了,不需要再像网上很多教程那样额外地转换格式

(3)结束录音返回的是一个临时文件地址,直接把这个地址传到后端是没有用的,使用 wx.getFileSystemManager().readFile来读文件,格式选择默认的arraybuffer即可,通过 wx.cloud.callFunction传入到云函数

(4)真机上语音识别的准确率比开发者工具上高

3.后端配置

ps:下面步骤的前提是已经配置好云开发环境和node.js,这两个都可以百度出很详细的教程。

(1)在cloudfunctions中新建一个node.js云函数

(2)右击新建的云函数,在外部终端窗口中打开,在命令行中输入npm install baidu-aip-sdk安装百度sdk,安装后再输入npm install

完成后package.json里应该是这样的

(3)云函数中的index.js

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
var AipSpeechClient = require("baidu-aip-sdk").speech;// 设置APPID/AK/SK
var APP_ID = "你的APP_ID";
var API_KEY = "你的API_KEY";
var SECRET_KEY = "你的SECRET_KEY";// 云函数入口函数
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()var client = new AipSpeechClient(APP_ID, API_KEY, SECRET_KEY);let fs = require('fs');let voiceBuffer = Buffer.from(event.sound);// 识别本地文件
return await client.recognize(voiceBuffer, 'pcm', 8000).then(function (result) {console.log('<recognize>: ' + JSON.stringify(result));return JSON.stringify(result)
}, function(err) {console.log(err);
});}

注意事项:

(1)云函数修改后要重新上传并部署,且上传完成会有两条消息而不是一条

(2)return await中的await很重要,否则可能返回null

4.结果展示

微信小游戏实现语音识别(超详细)相关推荐

  1. 微信小程序消息订阅超详细流程步骤

    第一步:登录微信小程序管理后台 链接https://mp.weixin.qq.com 第二步:在左侧栏目找到订阅消息菜单栏  --我的模板   ,可以去公共模板库增加自己想要的模板 如果没有自己想要的 ...

  2. 微信小程序开发(超详细保姆式教程)

    介绍: 微信里面app,16年推出 竞品:支付宝小程序,钉钉,美团,头条,抖音qq小程序 优点 1,在微信里面自由分享,2,不用下载app,3,能快速的开发,使用微信的api接口 开发者 内存,源码, ...

  3. 微信小程序入门开发超详细笔记(一)

    文章目录 1 引入 1.1 小程序的应用 1.2 小程序的介绍 1.3 市场分类 1 小程序 2 webapp 3 混合app 4 原生app 1 ios 2 android 3 react-nati ...

  4. 第一个小游戏“三子棋”超详细

    三子棋 我们先想一下游戏是怎么玩的??? 打开游戏,进去先看到一个菜单,然后选择是玩游戏还是退出,如果选择玩游戏,那进去是我和电脑玩游戏,我下一步棋,电脑下一步棋,如果我赢了那游戏就结束了,如果电脑赢 ...

  5. 火柴人逃脱小游戏(python 超详细)

    大家好,今天我们开始做一个新的游戏--火柴人逃脱. 以下是效果图: 温馨提示:代码里有图片资源,你可以自己用GIMP画,也可以去下载: 图片 我们来看第一部分代码: from tkinter impo ...

  6. TypeScript实现小游戏---贪吃蛇(超详细)

    目录 项目背景及简介 多模块需求分析 场景模块需求 食物类模块需求 记分牌模块需求 蛇类模块需求 控制模块需求 项目搭建 ts转译为js代码 package.json包配置文件 webpack.con ...

  7. 微信小游戏提供服务器,发布到微信小游戏平台

    发布到微信小游戏平台 早在微信官方正式发布小游戏平台之前,Cocos Creator 团队就和微信开发团队合作完成了 Cocos Creator 对微信小游戏平台的支持.在小游戏正式公布之后,我们也在 ...

  8. 微信小游戏入门实战《小猫钓鱼》

    BigBear 老师的微信小游戏入门实战<小猫钓鱼>,源码已经适配到 Cocos Creator 2.2.0,下是在晓衡在微信开发者工具下的视频演示: 源码仓库: https://gith ...

  9. 微信小游戏上线字节平台超全攻略

    文章目录 平台要求差异 工程代码迁移 腾讯云开发的适配 除了长期占据主流位置的微信平台,字节跳动平台也是一个非常值得个人开发的小游戏上线的阵地.字节系的很多产品(如抖音.西瓜视频.今日头条)都带有巨大 ...

最新文章

  1. linux 环境 安装jdk tomcat mysql git
  2. Android 系统镜像: boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
  3. 产线数字化软件源码_数字化工厂规划的十大核心要素
  4. 限制checkbox复选框的最大可选数量
  5. 使用脚本将域账号添加到客户机的本地管理员组
  6. 程序-进程-线程 ( 多线程 )
  7. 贺利坚老师汇编课程53笔记:寄存器冲突问题解决方案定义子程序标准框架
  8. 计算机考试策略,计算机等级考试应试的策略.doc
  9. 前端工具 - 15个最佳的 JavaScript 表单验证库
  10. mysql考试会自动给我们放好路径吗_Jsp struts mysql实现的在线考试系统项目源码附带视频运行教程...
  11. ubuntu安装python和pycharm_在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
  12. cudnn下载速度很慢怎么解决
  13. C++求解一元三次方程的实根
  14. wx_xcx_api.php,GitHub - biangbiang/wxpay-php: php项目基于微信支付JS SDK和JS API的接入开发...
  15. 3ds max捕捉工具教程_3DS Max教程的终极收藏
  16. CRAFT: Character Region Awareness for Text Detection ---- 论文阅读笔记
  17. PHP解析HTTP_USER_AGENT 获取客户端浏览器以及版本号
  18. 超20城急推购房补贴 地方救市力度接近2008年
  19. Android自定义键盘(KeyboardView)
  20. 英文不好的人如何阅读外文文献?

热门文章

  1. 【编写自己的RTOS】搞定任务调度
  2. python控制示波器获取波形_三种方法教你用示波器快速捕获异常
  3. x265 命令行参数大全
  4. 【opencv小案例-对象提取】阈值分割+形态学处理+面积横纵比过滤
  5. 云宏携手英特尔基于英特尔® 至强® 可扩展平台全面升级超融合一体机解决方案
  6. Oracle和plsql的卸载与安装
  7. iOS判断当前是否为模拟器
  8. JavaWeb项目实现163邮箱验证码
  9. 2020微信小微商户、微信支付商业版签约商户流程
  10. 410款INTEL CPU详细技术资料速查表