微信小程序语音播放功能的实现

article/2025/10/24 1:27:52

1.想要实现微信的语音播放需要在微信公众号后台下载微信同声传译插件,可以去微信服务平台搜索此插件并下载,指定对应的小程序号就行了。

2.下载完在 微信小程序后台--设置--第三方设置-- 插件管理-- 进入 微信同声传译详情 复制插件AppID 到 app.json 进行配置:

app.json:

"plugins": {"WechatSI": {"version": "0.3.5","provider": "wx069ba97219f66d99"}}

wxml:

<view class="wrap"><textarea class='content' placeholder='请输入内容' value='{{content}}' bindinput='content'></textarea><view class='box'><button class="btn start" size="mini" bindtap='start'>开始</button><button class="btn" size="mini" bindtap='end'>结束</button></view>
</view>

js

//引入插件:微信同声传译
const plugin = requirePlugin('WechatSI');
//创建内部 audio 上下文 InnerAudioContext 对象。
const innerAudioContext = wx.createInnerAudioContext();
Page({data: {content: '',//内容src:'', //},onReady(e) {innerAudioContext.onError(function (res) {console.log(res);wx.showToast({title: '语音播放失败',icon: 'none',})}) },// 手动输入内容content(e) {//   console.log(e);this.setData({content: e.detail.value,})},// 文字转语音start (e) {var that = this;var content = this.data.content;plugin.textToSpeech({lang: "zh_CN",tts: true,content: content,success: function (res) {console.log(res);console.log("succ tts", res.filename);that.setData({src: res.filename})that.yuyinPlay();},fail: function (res) {console.log("fail tts", res)}})},//播放语音yuyinPlay(e) {if (this.data.src == '') {console.log(暂无语音);return;}// console.log("正在播放");innerAudioContext.autoplay = trueinnerAudioContext.src = this.data.src //设置音频地址innerAudioContext.play(); //播放音频},// 结束语音end (e) {innerAudioContext.pause();//暂停音频},})

wxss:

.wrap {margin-top:300rpx;height: 200px;}.content {border: 1px solid #ccc;margin: 0 auto;padding: 10rpx 10rpx 70rpx;}.btn {width: 100px;height: 70rpx;border: 1px solid #eee;background: #fff;color: #606267;margin-left: 100px;}.box{width: 300px;/* border: 1px solid red; */}.start{margin-left: 40px;}

PS:长文本处理,由于语音播放文本限制为:1000字节。需要进行分段处理

// 点击朗读readlongText() {//同声传译一次最多1000字节,长文本按300字进行截断,然后按照朗读速度估算300字的时间,延迟下一次读取,正常300字/1分17秒let arrText = this.data.content.replace(/\r/g, ",").replace(/\n/g, ",").replace(/\s+/g, ",").replace(/#/g, ",");console.log(arrText, arrText.length) //获取全文+总数字//     arrText= arrText.replace(/[`:_.~!@#$%^&*() \+ =<>?"{}|, \/ ;' \\ [ \] ·~!@#¥%……&*()—— \+ ={}|《》?:“”【】、;‘’,。、]/g,// ''); //去除标点符号if (arrText.length < 300) {// 总数字小于300,直接转为语音this.read(arrText)} else {// 总数字大于300,拆分成多个段落const num = Math.ceil(arrText.length / 300)const time = 75for (let i = 0; i < num; i++) {const text = arrText.substr(0 + i * 300, 300) //全文分成多个300字的段落console.log(text)setTimeout(() => {this.read(text)}, time * 1000 * i); //每隔1分17秒读一段}}},// 文字转语音read(content) {var that = this;plugin.textToSpeech({lang: "zh_CN",tts: true,content: content,success: function (res) {// console.log(res);// console.log("succ tts", res.filename);that.setData({src: res.filename})that.yuyinPlay();},fail: function (res) {console.log("fail tts", res)}})},//播放语音yuyinPlay(e) {if (this.data.src == '') {console.log(暂无语音);return;}// console.log("正在播放");innerAudioContext.autoplay = trueinnerAudioContext.src = this.data.src //设置音频地址innerAudioContext.play(); //播放音频},// 结束语音end(e) {innerAudioContext.pause(); //暂停音频},


http://chatgpt.dhexx.cn/article/YOi8Tu8p.shtml

相关文章

浅谈微信小程序的功能定位和使用场景

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;浙江某公司软件工程师&#xff0c;负责开发管理公司OA、CRM业务系统&#xff0c;全栈领域优质创作者&#xff0c;CSDN学院、蓝桥云课认证讲师&#xff0c;开发过20余个前后端分离实战项目&#xff0c;主要发展方向为Vue…

微信小程序 - 一键复制功能

用到了微信支付的复制功能&#xff0c;简单记录一下(上图上代码) 底下数据是测试用&#xff0c;并不真实 功能就是 点击复制按钮 复制支付单号 直接在某个地方(文本、按钮、图片等都行)绑定个点击事件bindtap"copyBtn" 把你需要复制的内容传到后台去data-ordernum&qu…

微信小程序怎么开通支付功能?

对于一些想通过小程序卖货的企业商家来说&#xff0c;在申请小程序后需要同时开通微信支付功能&#xff0c;才能在小程序上进行交易。那么关于微信小程序怎么开通支付功能&#xff0c;下面给大家说一说。 一、注册非个人主体的小程序账号 不管你是通过公众号后台快速注册还是…

微信小程序——评论功能

1.前端数据渲染 <view class"list"><view>{{goodsitem.id}}</view><view>{{goodsitem.name}}</view><view>{{goodsitem.price}}</view><view>{{goodsitem.desc}}</view> </view><view><view&…

微信小程序扫码功能

扫码功能有两个实现形式&#xff1a; 1.做一个扫码按钮,调用微信自带api&#xff08;wx.scanCode &#xff09; wx.scanCode({ success(res) { //res.path 可以打印出来&#xff0c;包含所有参数 }) 2.就是直接通过微信的扫一扫&#xff0c;获取参数 如果本地测试的话参照如下图…

Java中获取数组长度

Java中获取数组长度 方法&#xff1a; 使用数组属性length来获取数组长度 代码&#xff1a; public class ArrayLength {public static void main(String[] args) {String[][] data new String[2][5];System.out.println("第一维数组的长度&#xff1a;"data.len…

字符数组的长度

1、char指针引导的字符数组&#xff1a; strlen返回字符数组的长度&#xff0c;包括空格。 #include<iostream> #include<cstring> using namespace std; int main() {const char* p "hell o"; //因为"hell o"是常量型的&#xff0c;所以要…

MATLAB 元胞(cell)全解

矩阵中的元素都是数字或字符&#xff0c;而元胞的元素可以说数字&#xff0c;字符&#xff0c;矩阵&#xff0c;字符串&#xff0c;是一个元素多元化的矩阵。 元胞的建立 使用{}手动输入以元胞来依次对元素赋值 使用{}索引&#xff0c;创建各元胞元素 注意此法与法…

2021美赛A题元胞自动机解法(M奖)

距离比赛已经整整一年了&#xff0c;今天突然想整理一下以前比赛的代码&#xff0c;所以下面是回忆着写的&#xff0c;可能有错误的地方&#xff0c;欢迎大家指正。 主要是建了下面3个模型&#xff0c;一一说明&#xff1a; Model I 首先要建立多种真菌存在下的分解速率模型…

matlab 导入元胞,MATLAB导入xls文件以及cell的使用方法

使用matlab读入.xls的文件时候可以用[T,TXT,RAW]xlsread("filename.xls")导入也可以使用import data 的办法手动导入文件。但是我比较倾向于自动化程度比较高的前者&#xff0c;毕竟有时候导入的文件数量是几百个手动导入不科学。xlsread返回的参数有三个&#xff0c…

万能存储器:C++中的元胞数组的基本操作

目录 万能存储器&#xff1a;C中的元胞数组 什么是元胞数组&#xff1f; 元胞数组怎么用&#xff1f; 代码示例 Decltype是什么&#xff1f;该如何使用&#xff1f; Tuple_cat是什么&#xff1f;该如何使用&#xff1f; Tuple_size是什么&#xff1f;如何使用&#xff1f…

Matlab:元胞(cell)

一般来说&#xff0c;Matlab矩阵中的元素都是数值或字符&#xff0c;而元胞的元素可以是数值&#xff0c;字符&#xff0c;矩阵&#xff0c;字符串&#xff0c;是一个元素多元化的矩阵。 一、cell的创建 (1).类似于创建一般矩阵&#xff0c;直接使用C {A B D E}这种形式&…

matlab 向量化编程cellfun函数使用方法

cellfun 常用于向量化编程&#xff0c;比for循环要快 对元胞数组中的每个元胞应用函数 语法 A cellfun(func,C) A cellfun(func,C1,…,Cn) A cellfun(___,Name,Value) [A1,…,Am] cellfun(___) 说明 A cellfun(func,C) 将函数 func 应用于元胞数组 C 的每个元胞的内容&a…

元胞自动机CA+生命游戏代码

1、元胞自动机 元胞自动机(Cellular Automaton&#xff0c;复数为Cellular Automata&#xff0c;简称CA&#xff0c;也有人译为细胞自动机、点格自动机、分子自动机或单元自动机)。是一时间和空间都离散的动力系统。散布在规则格网 (Lattice Grid)中的每一元胞(Cell)取有限的离…

【元胞自动机】基于元胞自动机模拟晶体生长matlab源码

1.元胞 元胞又可称为单元。或基元&#xff0c;是元胞自动机的最基本的组成部分。元胞分布在离散的一维、二维或多维欧几里德空间的晶格点上。\ 每一个元胞都有一个状态&#xff0c;例如下方中间的元胞状态是有一只小虫子&#xff0c;其他元胞的状态是没有小虫子。但如果虫子移动…

复杂网络实验4:一维元胞自动机(matlab)

一.思路 一维元胞自动机 一维元胞自动机的意思是&#xff0c;当前元胞的状态&#xff0c;只能被左右元胞的状态影响&#xff0c;而不能被上下元胞影响&#xff08;能上下就是二维了&#xff09; 为什么普通一维元胞自动机&#xff08;只有当前元胞和左右两个邻居&#xff09…

Matlab和C/C++元胞数组cell相关操作总结

元胞数组cell 1 Matlab中元胞数组cell的操作1.1 数组与元胞数字相互转换&#xff1a;mat2cell、cell2mat1.1.1 mat2cell使用形式实例一&#xff1a;划分数组并以元胞数组形式返回子数组实例二&#xff1a;按行划分数组 1.1.2 cell2mat使用形式实例一&#xff1a;将元胞数组转换…

Windows访问Macbook共享文件夹

1.条件&#xff1a;macbook与windows在同一局域网内 2.设置MacBook共享文件夹 (1).左上角系统偏好设置 (2)点击文件共享 (3).选择共享文件目录 (4).选择该目录使用的用户 (5).设置共享权限权限 3.windows访问共享文件&#xff1a; (1).winr (2).输入:192.168.0.100是MacB…

win11本机和虚拟机共享文件夹

本来想在本机win11系统上装一个Oracle数据库&#xff0c;可是一直停在数据库安装向导进不去&#xff0c;果断选择在虚拟机中装一个win10试试是不是win11系统的问题&#xff0c;在装完系统之后发现&#xff0c;win10的本机和虚拟机共享1文件夹的方式和之前不一样&#xff0c;然后…

VirtualBox 共享文件夹 挂载点设置

step 1 主机设置 选中虚拟机->设置->共享文件夹&#xff0c;做如下设置&#xff1a; 建议选中“自动挂载”和“固定分配”。 step 2 虚机设置 step 1设置好后&#xff0c;打开虚机&#xff0c;进入文件浏览器&#xff0c;即可看到挂载的目录&#xff1a; 同时&#xff0…