小程序中使用微信同声传译插件实现语音识别、语音合成、文本翻译功能----文本翻译(三)

news2024/11/15 9:19:05

官方文档链接:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx069ba97219f66d99&token=370941954&lang=zh_CN#-
要使用插件需要先在小程序管理后台的设置->第三方设置->插件管理中添加插件,目前该插件仅认证后的小程序。
添加插件

文本翻译功能

文本翻译目前支持的语言有 zh_CN(中国大陆) en_US(英语)。

translate(obj)

参数说明:
1、lfrom:文本语言 zh_CN(中国大陆) en_US(英语),String类型,必填项;
2、lto:目标语言 zh_CN(中国大陆) en_US(英语),String类型,必填项;
3、content:需要被翻译的文本内容,后台限制1000字节大小,String类型,必填项;
4、tts:是否对翻译结果进行语音合成,Boolean类型,默认为false,不进行语音合成;
5、success:调用成功时触发的回调,Function类型;
回调结果说明
retcode::retcode == 0 时翻译成功,Int类型;
origin:原始文本,String类型;
result:翻译结果,String类型
filename:语音合成返回的语音地址,仅支持合成中文语音,String类型;
expired_time:语音合成链接超时时间戳 如1525930552超时后无法播放,可使用时间为3小时,Int类型;
翻译成功,合成失败时success回调,success返回码说明:
0 翻译合成成功
-10006 翻译成功,合成内部错误
-10007 翻译成功,传入了不支持的语音合成语言
-10008 翻译成功,语音合成达到频率限制
6、fail:调用失败时触发的回调,Function类型;
回调结果说明
retcode:错误码,Int类型;
msg:错误信息,String类型。
错误码说明
-10001 语言检查错误
-10002 输入的待翻译内容格式不正确
-10003 传入过长的待翻译文本内容
-10004 翻译内部逻辑错误
-10005 请求发送失败,请检查网络
-40001 接口调用频率达到限制,请联系插件开发者
7、complete:接口调用结束的回调函数(调用成功、失败都会执行),Function类型。

使用:

1、注册插件

在app.json中注册插件
“plugins”: {
“WechatSI”: {
“version”: “0.3.5”,
“provider”: “wx069ba97219f66d99”
}
},

2、在页面中引入插件

//引入插件:微信同声传译
const plugin = requirePlugin(‘WechatSI’)

3、在上述1、2步骤完成后实现文本翻译

plugin.translate({
  lfrom:"en_US", //原语言      
  lto:"zh_CN", // 翻译的目标语言
  content:"hello, this is the first time to test?", //需要翻译的内容
  tts: true, //对翻译结果进行语音合成
  success: (res) => {
    console.log(res);
    if(res.retcode == 0) {
      console.log("原始文本=>", res.origin)
      console.log("翻译结果=>", res.result)
      console.log("语音合成返回的语音地址=>", res.filename)
      console.log("语音合成超时后无法播放时间戳=>", res.expired_time)
      // 1、设置tts为true,播放合成的语音
      const backgroundAudioManager = wx.getBackgroundAudioManager()
      backgroundAudioManager.src = res.filename  
      backgroundAudioManager.title = '文本播放'  //必须 否则语音无法播放
    } else {
      console.warn("翻译失败", res)
    }
  },
  fail: function(res) {
    console.log("网络失败",res)
  }
})

案例实现代码:

//引入插件:微信同声传译
const plugin = requirePlugin('WechatSI')
Page({
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.textTranslate("积极的语言塑造积极的思维,积极的思维塑造积极的人生", "zh_CN", "en_US")
    // this.textTranslate()
  },

  textTranslate(content = "positive  language, positive  mind, positive  life", lfrom = "en_US", lto = "zh_CN"){
    plugin.translate({
      lfrom,
      lto,
      content,
      tts: true, //对翻译结果进行语音合成
      success: (res) => {
        console.log(res);
        if(res.retcode == 0) {
          console.log("原始文本=>", res.origin)
          console.log("翻译结果=>", res.result)
          console.log("语音合成返回的语音地址=>", res.filename)
          console.log("语音合成超时后无法播放时间戳=>", res.expired_time)
          // 1、设置tts为true,播放合成的语音
          const backgroundAudioManager = wx.getBackgroundAudioManager()
          backgroundAudioManager.src = res.filename  
          backgroundAudioManager.title = '文本播放' 
          // 2、使用语音合成方法播报
          // this.playTextToVoice(res.result)
        } else {
          console.warn("翻译失败", res)
        }
      },
      fail: function(res) {
        console.log("网络失败",res)
      }
    })
  },

  // 文字转语音
  playTextToVoice(content){
    //创建内部 audio 上下文 InnerAudioContext 对象。
    this.innerAudioContext = wx.createInnerAudioContext();
    const that = this;
    plugin.textToSpeech({
      // 调用插件的方法
      lang: 'zh_CN',
      // lang: 'en_US',
      content,
      success: function (res) {
        that.playAudio(res.filename);
      }
    });
  },
  // 播报语音
  playAudio(e) {
    this.innerAudioContext.src = e; //设置音频地址
    this.innerAudioContext.play(); //播放音频
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    this.innerAudioContext && this.innerAudioContext.stop();
    this.innerAudioContext && this.innerAudioContext.destroy();
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    this.innerAudioContext && this.innerAudioContext.stop();
    this.innerAudioContext && this.innerAudioContext.destroy();
  },
})

效果图

具体案例代码亦可参考:https://gitee.com/mei-ruohan/mini-program-collection/tree/master/pages/texttranslate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1387701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue项目 css下载字体并引入使用

1.下载字体 下载字体:字体下载,字体大全,免费字体下载,在线字体|字客网字客网是全球知名的字体下载与分享网站,齐全的中文,日文,韩文,英文,图标,美术设计,毛笔,钢笔,手写,书法字体大全,提供找字体,字体识别,字体下载,在线字体预览,字体转换,字体设计等服务。…

华为设备端口镜像设置

核心代码: observe-port int 编号 int 编号 mirror to observe-port both | inbound | outbound #both:将镜像端口的入和出流量同时复制到观察者端口 #inbound:将镜像端口的入流量复制到观察者端口 #outbound:将镜像端口的出流量复制到观察者端口配置后可使出入端口…

新手必看:腾讯云服务器购买详细图文教程

腾讯云服务器购买流程很简单,有两种购买方式,直接在官方活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动…

基于SSM的项目监管系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

基于SSM的驾校信息管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…

自动化测试成本高效果差,意义在哪?

自动化测试的成本高效果差?首先这个结论就太过武断了一些。 任何技术都需要放到适合的地方去使用,否则一定是达不到理想的效果的。举例大炮打蚊子,同样是成本高效果差,难道大炮就没有存在的意义了吗? 当然不是&#…

3.0.0 网络安全技术

一、端口安全 1、端口隔离 1.1 简介 以太交换网络中为了实现报文之间的二层隔离,用户通常将*不同的端口*加入*不同的VLAN*,实现二层广播域的隔离。只通过VLAN实现报文二层隔离,会浪费有限的VLAN资源,同时也只能实现基础的隔离操…

金和OA jc6 Upload 任意文件上传漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

移动端开发进阶之蓝牙通讯(二)

移动端开发进阶之蓝牙通讯(二) 蓝牙广播是一种无线通讯技术,通过无线电波传输数据; 在蓝牙低功耗(BLE)协议中,广播通信是其重要组成部分,主要有两类使用场景: 单一方向的…

基本BGP配置试验 :配置 IBGP 和 EBGP

一、预习: BGP:Border Gateway Protocol 没有精妙的算法,但能承载大量的路由,它不生产路由,它是路由的搬运工 使用TCP做为传输层协议,端口号179,使用触发式路由更新 1. BGP路由…

喜讯!矩阵起源子公司通过“国家高新技术企业”认定,引领数据库行业科技创新!

近日,全国高新技术企业认定管理工作领导小组办公室,公布了《上海市认定机构2023年认定报备的第二批高新技术企业备案公示名单》,矩阵起源子公司矩智原力(上海)信息科技有限公司(以下简称“矩智原力”&#…

2024年【北京市安全员-C3证】复审考试及北京市安全员-C3证证考试

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-C3证复审考试考前必练!安全生产模拟考试一点通每个月更新北京市安全员-C3证证考试题目及答案!多做几遍,其实通过北京市安全员-C3证模拟考试题很简单。 1、【多选题】《…

vue前端开发自学,插槽练习,同时渲染父子组件的数据信息

vue前端开发自学,插槽练习,同时渲染父子组件的数据信息! 如果想在slot插槽出口里面,同时渲染出来,来自父组件的数据,和子组件自身的数据呢。又有点绕口了。vue官方给的解决办法是。需要借助于,父组件的自定义属性。 …

利用低代码技术,企业怎样开拓数字化转型新路径?

近年来,随着技术的发展和市场竞争的加剧,企业数字化转型已成为一种趋势。许多企业已经完成了线上协作办公的初步转型,这主要得益于像钉钉、企微等发展完善的平台,只需将员工全部拉入这些平台,就能实现线上协作办公。 然…

2024java开发学习路线

文章目录 第一阶段【JAVA基础】第二阶段【数据库jdbc】第三阶段【JavaWeb】第四阶段【框架】第五阶段【微服务】第六阶段【常用中间件】第七阶段【查缺补漏】 别问,问就是Java已死!这是在2023年疫情解封后,市场经济低迷的情况下,有…

编码技巧:如何在Golang中高效解析和生成XML

编码技巧:如何在Golang中高效解析和生成XML 引言Golang中的XML基础解析XML文件生成XML文件错误处理和调试高级技巧和最佳实践总结 引言 在当今数据驱动的编程世界中,有效地处理各种数据格式是每个开发人员必备的技能之一。其中,XML&#xff…

快速高效处理长图:按指定高度切长图的方法,提升设计品质

在现代视觉传达设计中,长图作为一种常见的表现形式,被广泛应用于各种场景。如何快速高效地处理长图,使其符合设计要求和用户体验,成为设计师们面临的一大挑战。现在来看“办公提效工具”如何按指定高度切长图,提升设计…

Python: locals()详细解释

locals() 是一个内置函数,用于返回当前局部作用域的字典。这个字典包含了当前函数或模块中所有局部变量的名称和值。具体来说: locals()返回值:一个字典,包含了当前局部作用域的所有局部变量。 这个函数在不同的上下文中有不同的…

SpringBoot项目的两种发布方式(jar包和war包)

SpringBoot项目的两种发布方式&#xff08;jar包和war包&#xff09; 在springboot入门和项目示例这个项目和application.yml配置端口号和访问url路径基础上进行修改 1、使用jar包方式发布 1.1、在pom.xml中添加一个SpringBoot的构建的插件 <build><plugins>&l…

Openlayer【四】—— 控件

控件 控件是一个可见的小部件&#xff0c;其 DOM 元素位于 屏幕。它们可以涉及用户输入&#xff08;按钮&#xff09;&#xff0c;也可以仅供参考; 位置是使用 CSS 确定的。默认情况下&#xff0c;它们位于 容器&#xff0c;但可以使用 任何外部 DOM 元素。 其中ol/control是…