首先引入小程序语音识别插件
代码语言:javascript复制let plugin = requirePlugin("WechatSI")
let manager = plugin.getRecordRecognitionManager()
然后在wxml中设置对应的方法
代码语言:javascript复制 <i-icon type="translation_fill" catchtouchstart="streamRecord" catchtouchend="endStreamRecord" size="28" color="#3176F7" />
最后在js中写对应的逻辑
首先在onLoad中初始化
代码语言:javascript复制onLoad(option) {
this.initRecord();
}
然后定义对应的方法及逻辑
代码语言:javascript复制 //语音识别
streamRecord() {
manager.start({
lang: 'zh_CN',
})
},
endStreamRecord() {
manager.stop()
},
initRecord() {
//有新的识别内容返回,则会调用此事件
manager.onRecognize = (res) => {
let text = res.result
console.log('onRecognize',text)
switch (this.data.speechType) {
case '1':
this.setData({
'infoFrom.damageAddress': text,
})
break;
case '2':
this.setData({
'infoFrom.surveySite': text,
})
break;
case '3':
this.setData({
'infoFrom.context': text,
})
break;
}
}
// 识别开始事件
manager.onStart = (res) => {
console.log("成功开始录音识别", res)
}
// 识别结束事件
manager.onStop = (res) => {
let text = res.result
if (text == '') {
// 用户没有说话,可以做一下提示处理...
return
}
console.log(text)
console.log('onStop',text)
switch (this.data.speechType) {
case '1':
this.setData({
'infoFrom.damageAddress': text,
})
break;
case '2':
this.setData({
'infoFrom.surveySite': text,
})
break;
case '3':
this.setData({
'infoFrom.context': text,
})
break;
}
// 得到完整识别内容就可以去翻译了
// this.translateTextAction()
}
},
translateTextAction() {
const lfrom = 'zh_CN'
const lto = 'en_US'
plugin.translate({
lfrom: lfrom,
lto: lto,
content: this.data.context,
tts: true, // 需要合成语音
success: (resTrans) => {
// 翻译可以得到 翻译文本,翻译文本的合成语音,合成语音的过期时间
let text = resTrans.result
this.setData({
translateText: text
})
// 得到合成语音让它自动播放出来
wx.playBackgroundAudio({
dataUrl: resTrans.filename,
title: '',
})
},
})
wx.startRecord({
success: e => {
wx.qy.translateVoice({
filePath: e.tempFilePath,
success: (res) => {
this.setData({
context: res.translateResult,
})
}
})
}
})
},