1.安装同声传译插件----面对面小程序开源

2.wxml代码:

<view  catchtouchstart="streamRecord" catchtouchend="streamRecordEnd">中文</view>
    <view>翻译结果:{{translateText}}</view>

3.js的代码段:

const plugin = requirePlugin("WechatSI")
const manager = plugin.getRecordRecognitionManager();

Page({
    data: {
      currentText: '',
      translateText: '',
    },
    streamRecord: function() {
      manager.start({
        lang: 'zh_CN',
      })
      console.log('开始录制')
    },
    streamRecordEnd: function() {
      manager.stop();
      console.log('结束录制');
    },
    initRecord: function() {
      var that=this;
      //有新的识别内容返回,则会调用此事件
      manager.onRecognize = (res) => {
        let text = res.result
        this.setData({
          currentText: text,
        })
      }
      // 录音结束
      manager.onStop = function(res) {
        // 提示用户正在跳转到搜索页面(因为我做的时候,在跳转这块会有1~2秒的时间,所以我设置了一个提示框)
        wx.showToast({
            title: '正在跳转...',
            duration: 1500,
            icon: 'success'
        })
        // 将识别的语音翻译成文本
        plugin.translate({
            lfrom: 'en_US',
            lto: 'zh_CN',
            content: res.result,
            success: function(res) {
                if(res.retcode == 0) {
                    //  (iphone是这样,Android不清楚)语音识别有时会在末尾添加符号
                    if(res.result.charAt(res.result.length - 1) == '。' || res.result.charAt(res.result.length - 1) == '.') {
                        res.result = res.result.substr(0, res.result.length - 1);
                    }
                    // 将翻译后的内容放到搜索框中
                    that.translateText = res.result
                    that.setData({translateText:res.result})
                    console.log(res.result);
                } else {
                    console.log('翻译失败', res)
                }
            },
            fail: function(res) {
                console.log('网络失败', res)
                // 当用户说话声音小或者用户没有说话就会报这两个错误
                if(res.retcode == -10001 || res.retcode == -10002) {
                    wx.showToast({
                        title: '没有听清您说什么',
                        duration: 1000,
                        icon: 'error'
                    })
                }
            }
        })
    }
// 打印错误信息
    manager.onError = function(res) {
        console.log('error msg', res.msg)
    }
      // // 识别结束事件---翻译成英语
      // manager.onStop = (res) => {
      //   let text = res.result
      //   if(text == '') {
      //     // 用户没有说话,可以做一下提示处理...
      //     return '无'
      //   }
      //   this.setData({
      //     currentText: text,
      //   })
      //   // 得到完整识别内容就可以去翻译了
      //   this.translateTextAction()
      // }
    },
    // translateTextAction: function() {
    //   let lfrom =  'zh_CN'
    //   let lto = 'en_US'
    //   plugin.translate({
    //     lfrom: lfrom,
    //     lto: lto,
    //     content: this.data.currentText,
    //     tts: true, // 需要合成语音
    //     success: (resTrans)=>{
    //       // 翻译可以得到 翻译文本,翻译文本的合成语音,合成语音的过期时间
    //       let text = resTrans.result
    //       this.setData({
    //         translateText: text,
    //       })
    //       // 得到合成语音让它自动播放出来
    //       wx.playBackgroundAudio({
    //         dataUrl: resTrans.filename,
    //         title: '',
    //       })
    //     },
    //   })
    // },
    onLoad: function() {
      this.initRecord()
    }

  });

-_-语音识别有点痛苦,语音识别还有个云知声的插件,但我没写出来,有大脑写出来可告知。。。

EvalSDK | 小程序插件 | 微信公众平台

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐