摘要:一背景作为一名前端同学有时候感觉挺可怜的,复杂的操作都依赖后端同学在服务器端完成。
一、背景
作为一名前端同学有时候感觉挺可怜的,复杂的操作都依赖后端同学在服务器端完成。那么,有一天我们自己想玩一个新技术或者后端同学不搭理我们,怎么办?绝望中.....
二、小程序语音识别
接到这个需求,我们明确两个问题:
小程序录音支持什么格式
由小程序文档可知:只支持 mp3格式和 aac格式
微信小程序录音文档
科大讯飞平台需要什么格式的音频
支持的格式 pacm或者wav, speex和 speex-web 格式
科大讯飞语音听写api
3. 目标 将小程序的录音转为 科大讯飞能识别的音频格式
import Mp3 from "@/utils/js-mp3/decode" import { md5 } from "@/utils/md5.js" import pcm from "pcm-util" 录音 // 获取录音权限 this.getRecordAuth() // 获取录音对象 const that = this; this.recorderManager = wx.getRecorderManager() this.recorderManager.onStart(() => { console.log("recorder start") }) // 录音的格式参数 const options = { duration: 11000, sampleRate: 32000, numberOfChannels: 1, encodeBitRate: 64000, format: "mp3", frameSize: 6 } this.recorderManager.start(options) this.recorderManager.onStop(res => { const tempFilePath = res.tempFilePath that.duration = res.duration const fs = wx.getFileSystemManager() console.log("record stop") console.log(res) // 从临时文件中读取音频 fs.readFile({ filePath: tempFilePath, success (res) { console.log("read success") that.mp3ToPcm(res.data) }, fail (e) { console.log("read fail") console.log(e) } }) }) 转格式 mp3ToPcm (mp3AB) { var that = this var decoder = Mp3.newDecoder(mp3AB) var pcmArrayBuffer = decoder.decode() // 和录音的格式一样 const fromFormat = { channels: 1, sampleRate: 32000, interleaved: true, float: false, samplesPerFrame: 1152, signed: true } // 目标音频的格式 const toFormat = { channels: 1, sampleRate: 16000, bitDepth: 8, interleaved: true, float: false, samplesPerFrame: 576, signed: true } var pcmAB = pcm.convert(pcmArrayBuffer, fromFormat, toFormat) const base64 = wx.arrayBufferToBase64(pcmAB) var millTime = (new Date().setMilliseconds(0) / 1000) + "" /** 调用科大讯飞平台的语音识别 请求参数都是自己申请应用的参数 */ wx.request({ url: "http://api.xfyun.cn/v1/service/v1/iat", method: "POST", data: { audio: base64 }, header: { "X-Appid": "5be4162d", "X-CurTime": millTime, "X-Param": "eyJlbmdpbmVfdHlwZSI6ICJzbXMxNmsiLCJhdWUiOiAicmF3In0=", "X-CheckSum": md5("b243cb9e1ea9d9eb40847967a8ebeef2" + millTime + "eyJlbmdpbmVfdHlwZSI6ICJzbXMxNmsiLCJhdWUiOiAicmF3In0="), "content-type": "application/x-www-form-urlencoded" // 默认值 }, success (res) { console.log("turn success") console.log(res) console.log(res.data) }, fail: function (res) { console.log("turn fail") console.log(res) } }) } },
注意:
首先在科大讯飞平台申应用申请应用
请求参数的文档语音识别的接口文档
录音一定在真机上测试,模拟器不行
js-mp3
pcm工具包
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/101852.html
摘要:月日下午,齐心好视通智无界新跨越新品发布会在齐心集团总部发布厅隆重举行。同时,我们也是业内首家在微信小程序上实现实时音视频与视频会议会议硬件终端通信的厂商齐心好视通微信小程序产品经理梁娟兰表示。12月27日下午,齐心好视通智无界·新跨越新品发布会在齐心集团总部发布厅隆重举行。会议吸引了来自行业专家、生态合作伙伴、新闻媒体、投资机构等在内的多名人士参加,现场火爆,座无虚席。齐心集团副总裁兼好视...
摘要:本文以开发一个类似语音口令红包小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。 前言 这篇文章适合所有的想微信小程序开发新手、老鸟以及想准备学习开发微信小程序的程序猿。本文以开发一个类似语音口令红包小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。通过本文,您将会了解以下内容: demo概览 传统服务器架构 VS Serverless架构 S...
摘要:本文以开发一个类似语音口令红包小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。 前言 这篇文章适合所有的想微信小程序开发新手、老鸟以及想准备学习开发微信小程序的程序猿。本文以开发一个类似语音口令红包小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。通过本文,您将会了解以下内容: demo概览 传统服务器架构 VS Serverless架构 S...
摘要:摘要阿里云函数计算是一个事件驱动的全托管计算服务。微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播。本文以开发一个类似语音口令红包小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。 摘要: 阿里云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。微信小程序是一种不需要下载安装即可使用的...
摘要:摘要阿里云函数计算是一个事件驱动的全托管计算服务。微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播。本文以开发一个类似语音口令红包小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。 摘要: 阿里云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。微信小程序是一种不需要下载安装即可使用的...
阅读 3026·2021-09-08 10:43
阅读 1030·2019-08-30 15:53
阅读 964·2019-08-30 13:51
阅读 836·2019-08-29 14:03
阅读 795·2019-08-26 18:35
阅读 1228·2019-08-26 13:38
阅读 1580·2019-08-26 10:34
阅读 3497·2019-08-26 10:21