前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【微信小程序】语音播报,文字转语音,《微信同声传译插件》

【微信小程序】语音播报,文字转语音,《微信同声传译插件》

作者头像
sinnoo
发布2022-01-04 16:28:41
6.1K0
发布2022-01-04 16:28:41
举报
文章被收录于专栏:技术人生技术人生

一、demo界面

1.点击语音阅读,可以阅读界面中文字信息【欢迎使用青悦文阅读平台,希望你开心阅读】

2.点击暂停阅读,可以暂停正在进行的阅读

3.按住说话,可以录入语音,并将转化为文字显示在【这里显示您的语音录入内容】

4.后附小程序源码

二、流程

1.首先引入微信小程序的插件【微信同声传译】

在app.json中进行以下配置

代码语言:javascript
复制
  "plugins": {
    "WechatSI": {
      "version": "0.3.4",
      "provider": "wx069ba97219f66d99"
    }
  },

位置在小程序开发文档=》扩展能力=》插件服务

2.在index.js中引入插件

代码语言:javascript
复制
var plugin = requirePlugin("WechatSI")
let manager = plugin.getRecordRecognitionManager()

3.在页面onLoad时,初始化语音监听,在onReady时,初始化语音播放变量

三、源码

1.index.js

代码语言:javascript
复制
// pages/tools/voice/index.js
var plugin = requirePlugin("WechatSI")
let manager = plugin.getRecordRecognitionManager()
const app = getApp()
Page({
  data: {
    content: '欢迎使用青悦文阅读平台,希望你开心阅读',
    text: '这里显示您的语音录入内容',
    auidoSrc: ''
  },
  onReady: function () {
    this.innerAudioContext = wx.createInnerAudioContext();
    this.innerAudioContext.onError(function (res) {
      wx.showToast({
        title: '语音播放初始化失败',
      })
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //识别内容返回时间
    var that = this;
    manager.onRecognize = function (res) {
      console.log("current result", res.result)
    };
    // 识别结束事件
    manager.onStop = (res) => {
      let text = res.result;
      if (text == "") {
        wx.showToast({
          title: '识别内容为空,请说清楚',
        })
        this.setData({
          text: '这里显示您的语音录入内容',
        })
      } else {
        if (text.indexOf('小青') != -1) {
          text = '小青在呢,主人有什么吩咐';
        }
        this.setData({
          text: text,
        });
      }
    };
    //识别错误时间
    manager.onError = function (res) {
      var text = '其他错误';
      if (res.retcode == -30001 || res.retcode == -30012) {
        text = '右上角进行设置';
        that.setData({
          text: '这里显示您的语音录入内容',
        })
      }
      wx.showToast({
        title: text,
        icon: 'none',
        duration: 3000,
      })

    }
  },
  //开始录音
  postData: function () {
    manager.start({ duration: 30000, lang: "zh_CN" })
    this.setData({
      text: '正在聆听...',
    });
    manager.onStart = function (res) {
      //console.log("成功开始录音识别", res)
    }
  },
  stopData: function () {
    manager.stop();
  },
  //阅读文字
  readText: function () {
    var content = this.data.content;
    var that = this;
    plugin.textToSpeech({
      lang: "zh_CN",
      tts: true,
      content: content,
      success: function (res) {
        that.setData({
          auidoSrc: res.filename
        })
        that.readStart();
      },
      fail: function (res) {
        wx.showToast({
          title: '语音转换失败',
        })
      }
    })

  },
  //开始阅读文字
  readStart: function () {
    if (this.data.auidoSrc == '') {
      return;
    }
    this.innerAudioContext.src = this.data.auidoSrc //设置音频地址
    this.innerAudioContext.play(); //播放音频

  },
  //暂停阅读
  readPause: function () {
    this.innerAudioContext.pause();
  }
})

2.index.json

代码语言:javascript
复制
{
  "usingComponents": {}
}

3.index.wxml

代码语言:javascript
复制
<!--pages/tools/voice/index.wxml-->
<view style="text-align:right"> <button class="mini-btn" type="default" size="mini" open-type="openSetting"
    bindopensetting="callback">
    打开设置页</button></view>
<view style="margin-top:20px" data-text="{{content}}">{{content}}</view>
<view style="margin-top:40px"><text>{{text}}</text></view>

<view style="margin-top:200px;text-align:center;">
  <button type="warn" bindtap="readText" size="mini">语音阅读</button>
  <button type="primary" bindtap="readPause" size="mini" style="margin-left:50px;">暂停阅读</button>
  <view style="width:100%;margin-top:40rpx;">
    <button type="primary" bindlongpress="postData" bindtouchend="stopData" style="background-color:#CC812B">
      按住 说话 </button>
  </view>
</view>

4.index.wxss

代码语言:javascript
复制
/* pages/tools/voice/index.wxss */

可直接测试运行。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、demo界面
  • 二、流程
  • 三、源码
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档