一、开发环境与工具准备
2021年开发微信小程序需使用官方提供的开发工具,推荐版本为微信开发者工具(稳定版),支持代码编辑、实时预览和调试功能。
- 安装开发工具:从微信公众平台下载对应操作系统的安装包,完成安装后启动工具。
- 创建小程序项目:选择“小程序项目”,填写项目名称、目录及AppID(需在微信公众平台注册开发者账号获取)。
- 配置权限:在
project.config.json中确保"setting"包含录音权限声明,并在app.json的permission字段中添加"scope.record"以获取用户录音授权。
二、语音识别功能的核心实现
微信小程序本身不直接提供语音识别API,但可通过以下两种方式实现:
- 调用微信原生录音接口+后端ASR服务:小程序录制音频后上传至服务器,由后端调用语音识别引擎(如腾讯云、阿里云等)返回文本结果。
- 使用微信提供的
wx.getRecorderManager与wx.onVoiceReturn(需兼容旧版):2021年推荐结合wx.startRecord(已废弃)的替代方案wx.getRecorderManager实现本地录音,再通过WebSocket或HTTP请求发送至ASR服务。
代码示例:录音与上传
// 页面js文件Page({data: {resultText: ''},startRecording() {const recorderManager = wx.getRecorderManager();recorderManager.onStart(() => {console.log('录音开始');});recorderManager.onError((err) => {console.error('录音错误', err);});recorderManager.onStop((res) => {console.log('录音停止', res.tempFilePath);this.uploadAudio(res.tempFilePath);});recorderManager.start({format: 'mp3', // 或'wav'duration: 60000, // 录音时长限制});},stopRecording() {const recorderManager = wx.getRecorderManager();recorderManager.stop();},uploadAudio(tempFilePath) {wx.uploadFile({url: 'https://your-asr-server.com/api/recognize', // 替换为实际ASR服务地址filePath: tempFilePath,name: 'audio',success: (res) => {const data = JSON.parse(res.data);this.setData({ resultText: data.text });},fail: (err) => {console.error('上传失败', err);}});}});
三、后端ASR服务集成
2021年主流云服务商(如腾讯云、阿里云)均提供语音识别API,以腾讯云为例:
- 开通语音识别服务:在腾讯云控制台创建ASR应用,获取
SecretId和SecretKey。 - 实现服务端接口:使用Node.js/Python等语言接收音频文件,调用ASR SDK(如
tencentcloud-sdk-nodejs)生成文本。 - 返回结果至小程序:服务端需处理CORS跨域问题,并在响应头中添加
Access-Control-Allow-Origin: *。
服务端代码示例(Node.js)
const express = require('express');const multer = require('multer');const ASRClient = require('tencentcloud-sdk-nodejs').asr.v20190617.Client;const credentials = {SecretId: 'YOUR_SECRET_ID',SecretKey: 'YOUR_SECRET_KEY'};const client = new ASRClient(credentials, 'ap-guangzhou');const app = express();const upload = multer({ dest: 'uploads/' });app.post('/api/recognize', upload.single('audio'), async (req, res) => {try {const params = {EngineModelType: '16k_zh', // 16k中文通用模型ChannelNum: 1,ResultType: '0', // 返回文本SpeechFilePath: req.file.path};const result = await client.CreateRecTask(params);res.json({ text: result.Data });} catch (err) {res.status(500).json({ error: err.message });}});app.listen(3000, () => console.log('Server running on port 3000'));
四、测试与优化
- 真机调试:使用微信开发者工具的“真机调试”功能,检查录音权限是否弹出、音频质量是否清晰。
- 性能优化:
- 压缩音频文件(如使用
lamejs库将MP3转为低码率)。 - 添加加载状态提示(
wx.showLoading)。 - 错误处理(网络中断、ASR服务超时等)。
- 压缩音频文件(如使用
- 兼容性测试:针对不同安卓/iOS机型测试录音功能,确保无兼容性问题。
五、部署与发布
- 代码上传:在微信开发者工具中点击“上传”,填写版本号和项目备注。
- 提交审核:登录微信公众平台,进入“开发管理”-“开发版本”选择上传的版本提交审核。
- 发布上线:审核通过后,在“运营中心”-“版本管理”中发布小程序。
六、常见问题解决
- 录音权限失败:检查
app.json是否声明scope.record,并引导用户手动授权。 - ASR识别率低:调整音频格式为16kHz采样率、单声道,或更换ASR引擎模型。
- 服务器跨域问题:在服务端配置CORS中间件,或通过代理转发请求。
通过以上步骤,开发者可在2021年快速实现一个集成语音识别功能的微信小程序。核心在于合理选择ASR服务、优化音频处理流程,并确保前后端交互的稳定性。