收藏
评论

微信同声传译小程序插件 —— 机器翻译、智能语音

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



插件功能

  • 语音转文字

  • 语音合成

  • 文本翻译



具体使用案例可以查看面对面翻译小程序开源项目:  https://github.com/Tencent/Face2FaceTranslator            

     

简单DEMO实现:


step 1:添加插件



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

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



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


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


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


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


step 2:语音输入

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

<view  catchtouchstart="streamRecord" catchtouchend="endStreamRecord">中文view>


// index.js
Page({
 data: {},
 streamRecord: function() {
   manager.start({
     lang: 'zh_CN',
   })
 },
 streamRecordEnd: function() {
   manager.stop()
 }
})


step 3:绑定录音回调事件



<view>语音识别内容:{{currentText}}view>


// page.js
Page({
 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()
 }
})


step 4:文本翻译


<view>翻译结果:{{translateText}}view>


// page.js
Page({
 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: '',
       })
     },
   })
 },
})


step 5:语音合成


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

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

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


面对面翻译小程序

面对面翻译小程序是微信团队针对中英文面对面沟通的场景开发的流式语音翻译小程序,基于微信同声传译插件封装实现,提供了中英文语音识别,文本翻译等功能。

预览

面对面翻译小程序

下载与使用

  1. 克隆代码
  2. project.config.json 中的 appid 替换成在公众平台申请的项目 id
  3. 公众平台 → 设置 → 第三方服务 → 插件管理 中 添加微信同声传译插件 (wx069ba97219f66d99)
  4. 打开微信开发者工具中添加项目

微信版本要求

基础库版本 >= 1.9.94

  • 使用插件,需要基础库版本 >= 1.9.6
  • 插件内调用wx.getRecorderManager接口,需要基础库版本 >= 1.9.94

微信同声传译插件支持功能

  • 语音识别 (目前支持 zh_CN(中国大陆), en_US(英语))
  • 文本翻译 (目前支持 zh_CN(中国大陆),  en_US(英语))
  • 语音合成 (目前支持 zh_CN(中国大陆),  en_US(英语))

FAQ

什么时候开放英语语音合成?

插件语音合成支持en_US(英语)正在加紧开发中

插件语音合成目前已经支持en_US(英语)

对于插件有新需求,可描述具体使用场景发送邮件至lethexie@tencent.com

License

The MIT License

最后一次编辑于  2018-08-13
收藏

14 个评论

  • AO 聚顺源👉 兰鹏宇啊
    AO 聚顺源👉 兰鹏宇啊
    2019-01-25

     能增加控制语速的功能吗

    2019-01-25
    赞同 1
    回复
  • 哄哄
    哄哄
    2018-08-13

    我的需求是这样的,不知道大家有更好的方法没有?用户根据系统提供的文字录入一段语音,我要保存他的语音,同时判断语音中的内容是否和系统提供的文字内容一致,不知道这样的需求大家是如何实现的呢????谢谢各位

    2018-08-13
    赞同 1
    回复 5
  • 海通通
    海通通
    07-16

    onStop(callback)回调tempFilePath字段返回的录音临时文件,在用户本地存多久呢,如果用户使用频繁量大,会不会很占内存

    07-16
    赞同
    回复
  • Tom先生
    Tom先生
    04-12

    能调节语速吗

    04-12
    赞同
    回复
  • Tears🍃
    Tears🍃
    2022-11-22

    有没有汉语翻译为维语的

    2022-11-22
    赞同
    回复
  • 天赐
    天赐
    2019-08-23

    声音可以更人性化点嘛

    2019-08-23
    赞同
    回复
  • 大壞蛋
    大壞蛋
    2019-06-28

    我试了下 根本就不回调onError和onStop

    2019-06-28
    赞同
    回复
  •  
     
    2019-03-05

    试一试

    2019-03-05
    赞同
    回复
  • Geefib
    Geefib
    2018-12-25

    您好,我想问一下插件包大小是多少,我的小程序引入后就超大小了


    2018-12-25
    赞同
    回复
  • 黑夜里的一盏灯
    黑夜里的一盏灯
    2018-08-18

    textToSpeech 完全去复制文档,但是爆出-20003的错误,查看文档说是内部合成错误。。。完全不明白是什么意思,是什么原因会造成这种错误呢?

    2018-08-18
    赞同
    回复 2
    • Polaris
      Polaris
      2018-08-20

      你好,麻烦提供一下APPID,微信版本号,机型,以及出现该错误的时间点,我们查一下。

      2018-08-20
      回复
    • 黑夜里的一盏灯
      黑夜里的一盏灯
      2018-08-20

      下午的时候又好了  也没动他,不知道为什么,也没有清缓存,- -好奇怪哦

      2018-08-20
      回复

正在加载...

登录 后发表内容