微信同声传译

微信同声传译插件是微信自研的语音输入,文本翻译等功能的插件封装,用于提供给第三方小程序调用。
微信面对面翻译小程序完全使用此小程序插件实现。开源地址:https://github.com/Tencent/Face2FaceTranslator

在使用前,需要登录官网 设置 → 第三方服务 → 添加插件

搜索 【微信同声传译】并添加

在需要使用插件的小程序 app.json 中指明需要使用的插件版本等信息

// app.json{  "plugins": {    "WechatSI": {      "version": "0.3.1",      "provider": "wx069ba97219f66d99"  }}

接下来,在index.js引入插件,获取全局唯一的语音识别管理器recordRecoManager

// index.jsconst plugin = requirePlugin("WechatSI")const manager = plugin.getRecordRecognitionManager()

希望做到的效果是按住某个按钮,开始识别语音,松开按钮就结束识别

<view  catchtouchstart="streamRecord" catchtouchend="endStreamRecord">中文view>
// index.jsPage({  data: {},  streamRecord: function() {    manager.start({      lang: 'zh_CN',    })  },  streamRecordEnd: function() {    manager.stop()  }})

绑定录音回调事件

<view>语音识别内容:{{currentText}}view>
// page.jsPage({  data: {    currentText: '',  },  initRecord: function() {    //有新的识别内容返回,则会调用此事件    manager.onRecognize = (res) => {      let text = res.result      this.setData({        currentText: text,      })    }    // 识别结束事件    manager.onStop = (res) => {      let text = res.result      if(text == '') {        // 用户没有说话,可以做一下提示处理...        return      }      this.setData({        currentText: text,      })      // 得到完整识别内容就可以去翻译了      this.translateTextAction()    }  },  translateTextAction: function() {},  onLoad: function() {    this.initRecord()  }})

文本翻译

<view>翻译结果:{{translateText}}view>
// page.jsPage({  data: {    currentText: '',    translateText: '',  },  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: '',        })      },    })  },})

success返回码说明:

翻译成功,合成失败时调用success回调

状态码

说明

0

翻译合成成功

-10006

翻译成功,合成内部错误

-10007

翻译成功,传入了不支持的语音合成语言

-10008

翻译成功,语音合成达到频率限制

fail错误码说明:

错误码

说明

-10001

语言检查错误

-10002

输入的待翻译内容格式不正确

-10003

传入过长的待翻译文本内容

-10004

翻译内部逻辑错误

-10005

请求发送失败,请检查网络

-40001

接口调用频率达到限制,请联系插件开发者

语音合成

plugin.translate得到的语音文件是有过期时间,可以download到本地使用


如果像面对面翻译一样需要存比较多历史记录的话,也可以选择过期之后调用 plugin.textToSpeech 接口再去重新合成一次

plugin.textToSpeech({    lang: 'zh_CN',    content: '我想重新进行语音合成',    success: resTrans => {      // 可以重新得到语音合成文件和过期时间    },})

success返回码说明:

状态码

说明

0

语音合成成功

fail错误码说明:

错误码

说明

-20001

语音合成语言格式出错

-20002

输入的待合成格式不正确

-20003

语音合成内部错误

-20005

网络错误

-40001

接口调用频率达到限制,请联系插件开发者

官方文档:

https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx069ba97219f66d99&token=61191740&lang=zh_CN