uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)

news2024/9/20 10:54:22

    语音播报的实现的方法有很多种,我这里介绍集中不引用百度、阿里或者迅飞的API的实现方式。

一、采用new SpeechSynthesisUtterance的方式

废话不多说直接上代码

data() {
	return {
		utterThis:null,
	}
},


//方法使用

this.utterThis = new SpeechSynthesisUtterance('');
this.utterThis.pitch = 1; // 音高
this.utterThis.rate = 1; // 语速
this.utterThis.volume = 1; // 音量
this.utterThis.lang = 'zh-CN';
this.utterThis.text =  "要播报的文本内容";
window.speechSynthesis.speak(this.utterThis); //开始朗读

方法的结束事件

this.utterThis.onend = () => {  //结束事件   
	window.speechSynthesis.cancel()   //注销合成方法
}

二、采用speak-tts插件的方式

1、安装speak-tts

npm install speak-tts

2.使用

import Speech from 'speak-tts'  //引入


初始化调用
this.speechInit();


speechInit(){
	this.speech = new Speech();
	this.speech.setLanguage('zh-CN');
	this.speech.init().then(()=>{
		console.log('语音播报初始化完成')
	})
},


this.speech.speak({text:item.newsContent}).then(()=>{
	this.speech.cancel(); //播放结束后调用
})

三、微信小程序可以采用微信提供的插件

1、添加插件 

2.由于我用的是uni-app,所以manifest.json添加配置

"mp-weixin" : {
        "appid" : "这个是小程序的appid",
        "setting" : {
            "urlCheck" : true,
            "es6" : true,
            "minified" : true,
            "postcss" : false
        },
        "optimization" : {
            "subPackages" : true
        },
        "usingComponents" : true,
        "plugins" : {
            "WechatSI" : {
                "version" : "0.3.5",
                "provider" : "填写刚才申请的appid"
            }
        }
    },

3.项目中使用

//条件编译  引入插件

// #ifdef MP-WEIXIN
var plugin = requirePlugin("WechatSI")
let manager = plugin.getRecordRecognitionManager()
// #endif
// #ifdef MP-WEIXIN
let _this=this 
plugin.textToSpeech({
	lang: "zh_CN",
	tts: true,
	content: playword,
	success: function(res) {
		_this.src = res.filename //这个就是生成成功的音频
		_this.smallRoutine(item,playword,index);
	},
	fail: function(res) {}
})
// #endif


//然后利用uni.createInnerAudioContext() 进行播放
//如果不会使用  请移步 https://uniapp.dcloud.net.cn/api/media/audio-context.html#createinneraudiocontext
this.innerAudioContext = uni.createInnerAudioContext()
this.innerAudioContext.pause();
this.innerAudioContext.volume = 1
this.innerAudioContext.src = this.src
this.innerAudioContext.play()
this.innerAudioContext.onEnded(()=>{
	//监听结束事件  做自己的处理逻辑
})

 4.如果合成音频不能播放可进行开发文档状态码查询 。(有时候可能文字过长无法合成报错,我这里可以提供一种思路,文字截取一段一段的) 

比如:(全部代码就不贴了)

let strlength =this.contentTxt.slice().length;
if(strlength>200){
	this.playAllNum=Math.ceil(strlength / 200); 
	playword = this.contentTxt.slice(0,200) 
}else{
	this.playAllNum=1; 
	playword =this.contentTxt
}

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

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

相关文章

地下水管三维可视化综合管控平台提升政府服务质量

随着当前互联网技术数据的快速发展和增长,总数越来越大,结构越来越复杂。如果你想更清楚、更快地理解和理解数据,传统的二维平面图数据图性能不能满足需求。 什么是三维可视化? 三维可视化是一种利用计算机技术,再现三维世界中的…

命令模式(Command)

别名 动作(Action)事务(Transaction) 定义 命令是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中&#xff0c…

(1)深度学习学习笔记-数据操作和处理

文章目录 前言一、张量操作二、csv文件数据操作数据预处理(读入csv文件作为pytorch能处理的) 来源 前言 张量的一些处理和操作 csv文件数据操作 一、张量操作 [:,1]表示全部行 第二列 [:]是全取 [1:3,1:]:1:3表示1~3的…

Node.js搭建Https服务

要搭建一个接收HTTPS请求的Node.js服务器,可以按以下步骤操作: 1. 初始化项目和安装依赖: bashnpm init -y npm install expresslatest npm install httpslatest 2. 生成证书文件: 这里按照自己的需求 去买ssl证书 或者获取免费证书 直接百度 阿里云获取免费证书等关键词即可…

Prefix-Tuning 阅读笔记

《Prefix-Tuning: Optimizing Continuous Prompts for Generation》 核心思想: 微调的时候,把预训练好的大transformer固定住不训练,在大transformer前面拼接几个token的参数,只训练前面这几个token的参数。 为什么有效 因为虽…

金融科技领先者Broadridge选择CloudBees CI来加速软件交付

Broadridge公司是全球金融科技领先者,通过丰富客户参与度、控制风险、优化效率和创造收入增长的解决方案为客户推动业务转型。 借助CloudBees CI,Broadridge为所有使用Jenkins的开发团队提供了集中管理和自助服务的体验。Broadridge能够不断为客户提供新…

vue 中node-sass和sass版本问题解决

先开始使用 “node-sass”: “^7.0.1” “sass-loader”: “^10.0.5” 然后使用npm install报错 后面百度,搜到了是因为 node-sass和sass-loader版本不对应造成。 然后修改版本,增加sass引用 “node-sass”: “^7.0.1” “sass-loader”: “^7.3.1”, “…

Mysql实现按月份查询挂号统计数据(聚合函数的使用)

最近公司要实现一个通过年月来查询每个月的挂号统计(当日挂号,预约挂号),因为医院每个月都要来问我们这边一次,每次都去数据库查询太麻烦了,所以就需要开发一个查询挂号统计的接口。 前面用了很多种方法,要…

计算机中的逻辑运算(与、或、非、异或、同或、与非、或非)

计算机中的逻辑运算又被称作为“布尔运算”,分别为:与、或,非,异或。此外在门电路中还有:同或、与非、或非。共七种。 这七种逻辑运算中,只有 逻辑非运算 是一元逻辑运算(一个运算操作数&#…

微信公众号接收事件推送XML数据包解析成实体对象

1.从request获取推送xml包 String callBackXml testNoticeService.formatNoticeParams(request); public static String formatNoticeParams(HttpServletRequest request){try(ByteArrayOutputStream output new ByteArrayOutputStream();InputStream input request.getIn…

微服务 springcloud 11 sleuth 链路跟踪,sleuth + zipkin 链路分析

随着系统规模越来越大,微服务之间调用关系变得错综复杂,一条调用链路中可能调用多个微服务,任何一个微服务不可用都可能造整个调用过程失败 spring cloud sleuth 可以跟踪调用链路,分析链路中每个节点的执行情况 01.微服务中添加 …

如何使用UpdraftPlus迁移备份网站到新网站?

这个问题是关于将您的站点克隆或迁移到新的网站URL的问题。如果您想克隆一个站点进行测试,或者在新版本上线之前移动到新主机并进行测试,以及许多其他类似情况,迁移尤其有用。 在下面的示例中,我们迁移到一个完全新的 WordPress …

搭建Hadoop高可用框架分布式集群

搭建Hadoop高可用框架分布式集群 一.基础配置 1.创建虚拟机,修改虚拟机的主机名 2.修改网络配置 master:192.168.6.200 slave1:192.168.6.201 slave2:192.168.6.202 3.互ping测试 4.sudo授权 5.安装vim编辑器 6.配置网络映射 master配置映射 master向slave1传递映…

MATLAB 之 Simulink系统的仿真与分析

这里写目录标题 一、Simulink 系统的仿真与分析1. 设置仿真参数1.1 Solver 参数设置1.2 Data lmport/Export 参数设置 2. 运行仿真与仿真结果分析2.1 运行仿真2.2 仿真结果分析 一、Simulink 系统的仿真与分析 系统的模型建立之后,选择仿真参数和数值算法&#xff…

LabVIEW自适应屏幕分辨率的两种方法

文章目录 前言一、方案1:组合缩放1、举例2、验证 二、方案2:分隔栏匹配窗格1、举例2、验证 前言 前阵子做的一个项目是在显示器分辨率为 2560*1600,缩放选项为 150% 的笔记本上开发的,但是当 vi 文件在另一台显示器分辨率为 1920…

ThingsBoard IoT Gateway 专栏 分享 前言

最近有朋友询问tb-gateway相关的问题,于是抽业余时间查看了一下官方文档,并做了一些尝试和案例。接下来我会将这些分享给大家。这也是一个系列,将会和我的ThingsBoard专栏放在一起。 ThingsBoard IoT Gateway 能够帮助你将连接到传统和第三方…

一次Android APK打包的报错

打包的时候报了一个错 没有记下来 但是解决方法是 打开Window-> Package Manager 移除这个(这个是Unity的广告组件

杰西·利弗莫尔股票大作手操盘术策略

文章目录 上升趋势演变多次回撤回升,区间震荡向上突破,恢复上升趋势前期回升高点下挫,趋势逆转警告信号向下突破,确认下降趋势 下降趋势演变多次回升回撤,区间震荡向下突破,恢复下降趋势前期回撤低点反弹&a…

mysql-大数据的上传(load data)

文章目录 1. 大批量数据的上传如果使用insert语句就会很慢,可以使用load data的方式 1. 大批量数据的上传如果使用insert语句就会很慢,可以使用load data的方式 如下,我建立了一个这样的数据表, 2. 我要将以下数据插入数据表&am…

基于FPGA的RC滤波器设计实现

目录 简介: 传递函数 FPGA代码实现 总结 简介: RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍;RC滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻容元件易得,所以在工程测…