微信小程序同声传译 Face2FaceTranslator 开发

腾讯开源了微信小程序的同声传译插件 Face2FaceTranslator ;开发者可以在小程序使用同声传译的功能,以下是本人在项目中做的 demo;我们的小程序是用美团的 mpvue 做的。

Face2FaceTranslator github链接(官方demo)
Face2FaceTranslator 官方开发文档

第一步:配置微信公众平

首先,需要在微信公众平台配置,以下是配置步骤:
打开微信公众平台,点击设置 => 第三方服务 => 添加插件

搜索同声传译,点击添加:

第二步:在代码里添加功能:

以下代码为关键部分代码,因为用 mpvue 开发,所以为 vue 编程风格,开发者可以根据自己情况进行修改。

首先要在 main.js 中配置

// main.js 需要在配置文件中配置插件export default {config: {pages: ['^pages/imSceneDoctor/imSceneDoctor',],window: {backgroundTextStyle: 'light',backgroundColor: "#000",navigationBarBackgroundColor: '#ffffff',navigationBarTitleText: '同声传译 demo',navigationBarTextStyle: 'black'},plugins: {"WechatSI": {"version": "0.0.6","provider": "wx069ba97219f66d99"}}}
}

然后在开发的文件使用 (imSceneDoctor.vue 中关键的代码)。

// imSceneDoctor.vue<template><ul class="footer-box-bottom"><li class="bottom-item" @touchstart='streamRecord(0)' @touchend='streamRecordEnd()'><figure class="bottom-item-content"><img class="bottom-item-image" src="https://m.allinmed.cn/static/image/imScene/picture@2x.png" width="350"height="234"/><figcaption class="bottom-item-description">智能语音</figcaption></figure></li><li class="bottom-item" @touchstart='streamRecord(1)' @touchend='streamRecordEnd()'><figure class="bottom-item-content"><img class="bottom-item-image" src="https://m.allinmed.cn/static/image/imScene/pictures@2x.png"width="350"height="234"/><figcaption class="bottom-item-description">中=>英</figcaption></figure></li><li class="bottom-item" @touchstart='streamRecord(2)' @touchend='streamRecordEnd()'><figure class="bottom-item-content"><img class="bottom-item-image" src="https://m.allinmed.cn/static/image/imScene/pictures@2x.png"width="350"height="234"/><figcaption class="bottom-item-description">英=>中</figcaption></figure></li></ul>
</template><script type="text/ecmascript-6">// 获取**全局唯一**的语音识别管理器**recordRecoManager**const plugin = requirePlugin("WechatSI");const manager = plugin.getRecordRecognitionManager();export default {data() {return {currentTranslateVoice: '', // 当前播放语音路径sendTextContent:'', // 展示的语音内容connectNum: 0,recordType:0, // 录音类型:0,中文录音;1,中文翻译英文;2,英文翻译中文}},onLoad() {this.getRecordAuth();},mounted() {this.initRecord();},methods: {// 权限询问getRecordAuth () {wx.getSetting({success(res) {console.log("succ")console.log(res)if (!res.authSetting['scope.record']) {wx.authorize({scope: 'scope.record',success() {// 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问console.log("succ auth")}, fail() {console.log("fail auth")}})} else {console.log("record has been authed")}}, fail(res) {console.log("fail")console.log(res)}})},/*** 初始化语音识别回调* 绑定语音播放开始事件*/initRecord: function() {//有新的识别内容返回,则会调用此事件manager.onRecognize = (res) => {let currentData = Object.assign({}, this.sendTextContent, {text: res.result,})this.sendTextContent = res.result;}// 识别结束事件manager.onStop = (res) => {let text = res.resultconsole.log('识别结束');console.log(res);this.sendTextContent = res.result;if (this.recordType) {this.translateText(res.result)}}// 识别错误事件manager.onError = (res) => {console.log(res);}// 语音播放开始事件wx.onBackgroundAudioPlay(res=>{const backgroundAudioManager = wx.getBackgroundAudioManager()let src = backgroundAudioManager.srcthis.currentTranslateVoice = src;})},/*** 按住按钮开始语音识别*/streamRecord: function(type) {// 先清空背景音let param;wx.stopBackgroundAudio();this.recordType = type;if (type == 2) {param = 'en_US';} else {param = "zh_CN";}manager.start({lang: param,})},/*** 松开按钮结束语音识别*/streamRecordEnd: function(e) {manager.stop()},/*** 翻译*/translateText: function(text) {let lfrom =  this.recordType === 1 ? 'zh_CN' : 'en_US';let lto = this.recordType === 1 ? 'en_US':'zh_CN';plugin.translate({lfrom: lfrom,lto: lto,content: text,tts: true,success: (resTrans)=>{console.log(resTrans);let passRetcode = [0, // 翻译合成成功-10006, // 翻译成功,合成失败-10007, // 翻译成功,传入了不支持的语音合成语言-10008, // 翻译成功,语音合成达到频率限制]if(passRetcode.indexOf(resTrans.retcode) >= 0 ) {this.sendTextContent = resTrans.result;} else {console.warn("翻译失败", resTrans, item)}},fail: function(resTrans) {console.error("调用失败",resTrans, item)},complete: resTrans => {wx.hideLoading()}})},}}
</script>

备注:
以上只是个小 demo,并且正常运行,然而并没有考虑多种边界情况,如果开发者需要在项目正常使用,也请参考官方demo(上方有 github 地址)。

微信小程序同声传译 Face2FaceTranslator 开发相关推荐

  1. 微信小程序“同声传译”插件(语音识别,语音合成)体验

    本文原文:http://www.happycxz.com/m/?p=383 官方插件上线 微信小程序"同声传译"插件介绍 传送门 遥知之改版 原来使用的是我自己封装的API,现在改 ...

  2. 微信小程序同声传译开发(语音识别、语音输入转文字)开发教程

    微信同声传译插件是微信自研的语音输入,文本翻译等功能的插件封装,用于提供给第三方小程序调用. 1.小程序后台进行配置 在浏览器搜索微信公众平台,微信扫码登录小程序.点击设置->第三方设置-> ...

  3. 微信小程序同声传译使用总结

    最近在做项目中需要使用录音转文字,之前用微信SDK可以直接使用wx.translateVoice({}),但是小程序中没有提供此类方法,没办法只能查资料解决了,看了好多大多是保存当前录音文件掉讯飞接口 ...

  4. 微信小程序图片无法存入云开发数据库,求解决

    微信小程序图片无法存入云开发数据库,求解决 上传图片的js代码片段 上传图片的js代码片段 上传图片的js代码片段,觉得自己代码的没错,也能打印出来上传的图片地址,但是发现并没有存进数据库,求大神指点 ...

  5. 微信小程序上传阿里云视频文件流程及代码

    为了微信小程序客服端实现自拍视频能够分享给多个好友,我们需要把小程序自拍的视频存储到服务器,而阿里云在性能和速度上比较不错,所以我们选择了阿里云作服务器. 第一步.微信小程序项目创建 1. 到http ...

  6. 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决

    目录 问题: 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决 1.上传时没有勾选保护 2.请求的域名没有配置 问题: 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决 1.上传时没有勾选保护 ...

  7. 微信小程序 – 美甲商城项目实战开发全集

    目录: 微信小程序 - 美甲商城项目实战开发全集 ┣━━1.配置和目录结构.mp4 ┣━━2.小程序注册.mp4 ┣━━3.小程序的语句判断.mp4 ┣━━4.组件(视图容器和基本内容).mp4 ┣━ ...

  8. 微信小程序上传文件组件

    微信小程序上传文件 一.说明 该拍照组件带有微信授权相机功能,会结合后端接口,将上传的图片以数组集合的形式传值给父级页面. 注意:组件适用于,单独上传图片,不携带参数,结合后端接口返回路径之后,再调用 ...

  9. uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)

    前言 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能. 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseI ...

  10. php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例

    本文主要和大家分享微信小程序模拟下拉菜单开发实例,希望能帮助到大家. 一.知识点 1.实现动态显示和隐藏某个控件 列表1data:{ open:false }, showitem:function() ...

最新文章

  1. 把view或者div绘制 canvas ,导出图片功能实现完整源码附效果图(兼容H5和小程序)
  2. phoenixframework自动化测试平台架构图
  3. 关于requestAnimationFrame与setInterval的一点差异
  4. log日志显示与写入文件—qt
  5. matlab 删掉空行,在MATLAB中使用XLSWRITE:如何删除空单元格?
  6. 64位 mxcomponent_三菱MX Component 4.16S下载
  7. 【Win10 + Ubuntu 16.04/18.04双系统 + 双硬盘/单硬盘 安装】传统意义双系统
  8. python自动化测试必备知识_2018教你应对Python移动自动化测试面试 面试分析 知识理论 面试技巧...
  9. 案例:WLC HA主WLC进入维护模式
  10. 基于abaqus的各向异性材料的抗拔力学性能分析
  11. 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
  12. Linux操作系统调优工具
  13. 【详解】标识符命名规则及命名规范
  14. android emoji吏上最全的详解
  15. RuntimeError: PytorchStreamReader failed locating file data.pkl: file not found
  16. win7多重引导 linux,如何在Linux和Windows下制作多重引导USB?
  17. 80、20%时间写代码,80%阅读代码。代码写得一坨屎,后患无穷
  18. NetTool v2.0 IP配置工具
  19. MFC面向对象程序设计
  20. 详解printf(各种打印的格式)

热门文章

  1. 各种风格的Android面试题进来了解一下,面试必问
  2. 计算机程序员的英文求职面试,程序员英文面试自我介绍
  3. 天才黑客,阿里安全科学家吴翰清:做对事只能赢一场,跟对人可以赢一生!...
  4. 卖出跨式套利与买入蝶式价差
  5. 什么是第三方支付呢?一文带你入行!
  6. crmeb 一号通使用方法
  7. Word如何插入图片
  8. Bootstrap框架
  9. 机器学习基础-特征工程简析
  10. 计算机无法进行磁盘碎片整理,无法启动win7系统磁盘碎片整理的解决方案