前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序语音识别Demo

小程序语音识别Demo

作者头像
李维亮
发布2021-07-08 10:20:23
1.7K0
发布2021-07-08 10:20:23
举报
文章被收录于专栏:李维亮的博客

首先引入小程序语音识别插件

代码语言: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,
            })
          }
        })
      }
    })
  },
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档