文章来源:网络作者:鬓上发布时间:2026-08-19 06:45:33
今天小编给大家讲解如何使用微信小程序实现语音识别?有需要或者有兴趣的朋友们可以看一看下文,相信对大家会有所帮助的。
1、概述
通过微信小程序wx.startRecord()和wx.stopRecord()接口录音并上传silk录音文件至服务器,通过ffmpeg将silk录音文件转成wav录音文件,再通过百度语音识别 REST API 获取语音识别后的结果。
2、代码实现
录音和语音文件上传
//index.js
//开始录音。当主动调用wx.stopRecord,
//或者录音超过1分钟时自动结束录音,返回录音文件的临时文件路径。
//当用户离开小程序时,此接口无法调用。
wx.startRecord({
success: function (res) {
console.log(\'录音成功\' + JSON.stringify(res));that.setData({
voiceButtonName: \'语音识别\',
voicePlayButtonName: \'开始播放\',
tempFilePath: res.tempFilePath
})
//上传语音文件至服务器
wx.uploadFile({
url: \'https://你的域名/upload\',
filePath: res.tempFilePath,
name: \'file\',
// header: {}, // 设置请求的 header
formData: {
\'msg\': \'voice\'
}, // HTTP 请求中其他额外的 form data
success: function (res) {
// success
console.log(\'begin\');
console.log(res.data);
var json = JSON.parse(res.data);
console.log(json.msg);
var jsonMsg = JSON.parse(json.msg);
console.log(jsonMsg.result);
wx.navigateTo({
url: \'../voicePage/voicePage?voiceData=\' + jsonMsg.result.join(\'\')})
},
fail: function (err) {
// fail
console.log(err);
},
complete: function () {
// complete
}
})
},
fail: function (res) {
//录音失败
that.setData({
voiceButtonName: \'语音识别\'
})
console.log(\'录音失败\' + JSON.stringify(res));}
})
setTimeout(function () {
//结束录音
wx.stopRecord()
}, 60000)
node.js服务端接收语音文件代码
//upload.js
//使用koa-multer这个组件
var multer = require(\'koa-multer\');
var router = require(\'koa-router\')();
var path = require(\'path\');
//存储文件至path.resolve(\'./voice-file\')路径var upload = multer({ dest: path.resolve(\'./voice-file\')});router.post(\'/\', upload.single(\'file\'), async function (ctx, next) {//这是就文件的具体信息
console.log(ctx.req.file);
});
silk文件转wav文件
我使用的是silk-v3-decoder将silk文件转wav文件

silk-v3-decoder 使用方法
//upload.js
var exec = require(\'child_process\').exec;
function silkToWav(file){
return new Promise(function (resolve, reject) {
exec(\'sh converter.sh \' + file + \' wav\', function(err,stdout,stderr){
if(err) {
resolve({
result : false,
msg : stderr
});
} else {
//var data = JSON.parse(stdout);
console.log(stdout);
console.log(stderr);
//console.log(err);
resolve({
result : true,
msg : \'\'
});
}
});
});
}
百度语音识别 REST API识别wav文件
1、通过API Key和Secret Key获取的access_token

通过API Key和Secret Key获取的access_token文档
//speech.js
speech.getAccessToken = function(){
return new Promise(function (resolve, reject) {
request({
url: \'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=(你自己的API key)&client_secret=(你自己的Secret Key)\',
method: \'get\',
headers: {
\'content-type\': \'application/json\'
}
}, function (error, response, data) {
if (error){
resolve({
\'result\' : false,
\'msg\' : \'出现错误: \' + JSON.stringify(error)
});
}else {
resolve({
\'result\' : true,
\'msg\' : data
});
}
});
});
}
2、通过token 调用百度语音识别 REST API识别接口
//speech.js
speech.recognize = function(base64String, size){
return new Promise(function (resolve, reject) {
request({
url: \'//vop.baidu.com/server_api\',
method: \'post\',
headers: {
\'content-type\': \'application/json\'
},
// len + speech方式
body: JSON.stringify({
"format":"wav",
"rate":16000,
"channel":1,
"token":\'(你的token)\',
"cuid":"9e:eb:e8:d4:67:00",
"len":size,
"speech":base64String
})
//url + callback方式
//body: JSON.stringify({
// "format":"wav",
// "rate":16000,
// "channel":1,
// "token":\'(你的token)\',
// "cuid":\'9eebe8d46700\',
// "url":\'//ihealth-wx.s1.natapp.cc/download?name=123.wav\',
// "callback":\'//ihealth-wx.s1.natapp.cc/callback\'
//})
}, function (error, response, data) {
if (error){
resolve({
result : false,
msg : \'出现错误: \' + JSON.stringify(error)
});
}else {
resolve({
result : true,
msg : data
});
}
});
});
}
3、语音识别优化
通过上述操作后,发现识别的内容和实际内容差别很大

百度语音识别 REST API文档
查看文档可知:采样率:8000/16000 仅支持单通道
在ffmpeg里对应的设置方式分别是:
-ar rate 设置采样率
-ac channels 设置声道数
修改converter.sh文件,修改为下图所示

以上就是如何使用微信小程序实现语音识别的全部内容了,大家都学会了吗?

禁地之战(乾马金龙专属)
超变传奇996传奇
乾马金龙专属 全新三职业神器,上线领豪礼,爽玩!

王者霸业(王斩切割爆爆爆)
超变传奇
王斩切割爆爆爆 上线即送自动拾取、自动回收

烈焰之怒(骷髅超变日送10万...
超变传奇996传奇
骷髅超变日送10万 上线免费送刀刀绿毒刀刀冰冻自动回收,无条件登录就送10万充值货币!

铸兵之王(百亿直购送充爆)
超变传奇996传奇
百亿直购送充爆 自动拾取 自动回收 攻速全满 直升10000级 六大终极装备

江湖我最牛(GM狂送真充超超...
超变传奇996传奇
GM狂送真充超超变 全新超变几率触发GM手机,狂送真充红包

斗转武林(竹火百锻默爆)
超变传奇996传奇
竹火百锻默爆 上线福利:自动拾取、自动回收、更多豪礼在线相送!!

战影破穹(百亿送充神技觉醒...
超变传奇996传奇
百亿送充神技觉醒 上线即送自动回收、自动拾取等!

苍穹之剑2(帝煞古兵专属)
超变传奇996传奇
帝煞古兵专属 上线即送自动拾取、自动回收

摸金之路(无限超变天天送百...
超变传奇996传奇
无限超变天天送百万 超爽直购币白漂版本,天天送百万直购币!

国战来了(3.5折免费版)
策略
3.5折免费版 3.5折免费,每天送100限时代金券

《逆战:未来》张杰福利放送:杰...