vue实现文字转语音的组件,class类封装,实现项目介绍文字播放(2024-04-17)

1、项目界面截图

2、封装class类方法(实例化调用)

// 语音播报的函数
export default class SpeakVoice {constructor(vm, config) {let that = thisthat._vm = vmthat.config = {text: '春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!',volume: 1, // 声音音量:1,范围从0到1rate: 1,   // 设置语速:1,范围从0到100labelData:{name:''},...config}that.synth = window.speechSynthesis // 启用文本that.instance = new SpeechSynthesisUtterance()that.instance.lang = "zh-CN"; // 使用的语言:中文that.status = '初始化'that.isload = false;that.initVoice();}// 初始化initVoice(){let that = thisif(that.isload){return false}else{that.isload = truethat.instance.text = that.config.text; // 文字内容: 测试内容that.instance.volume = that.config.volume;that.instance.rate = that.config.rate;that.instance.onstart = e => {that.status = '开始播放'}that.instance.onend = e => {that.status = '结束播放'}that.instance.onpause = e => {this.status = "暂停播放"}}/*let speech = that.getSpeechVoices();speech.then((voices) => {voices = voices.filter(item => (item.lang.indexOf('zh-') > -1 && item.localService));if (voices.length === 0) {console.error('没有可用的中文语音!');  //中文包可以调试多种语言包切换}else {//实例化播报内容that.instance.lang = "zh-CN"; // 使用的语言:中文that.instance.text = '测试内容'; // 文字内容: 测试内容that.instance.volume = 1that.instance.rate = 1that.instance.voice = voices[0]that.synth.speak(that.instance); // 播放}});*/}// 语音开始handleSpeak() {this.synth.speak(this.instance); // 播放}// 语音队列重播handleReply() {this.handleCancel();this.handleSpeak()}// 语音队列删除 , 删除队列中所有的语音.如果正在播放,则直接停止handleCancel() {this.synth.cancel(this.instance);}// 语音暂停, 暂停语音该次语音播放handleStop() {this.synth.pause(this.instance);}// 恢复暂停的语音handleResume(){this.synth.resume(this.instance) //恢复暂停的语音}//获取语言包数据, 这个接口需要一点时间,改成异步的getSpeechVoices() {let that = thisreturn new Promise(function (resolve, reject) {let id;id = setInterval(() => {if (that.synth.getVoices().length !== 0) {resolve(that.synth.getVoices());clearInterval(id);}}, 10);})}destory () {this.handleCancel()}
}// 语音删除重播
export function handleReturnStop(e,callBack) {const synth = window.speechSynthesis; // 启用文本const msg = new SpeechSynthesisUtterance(); // 表示一次发音请求。其中包含了将由语音服务朗读的内容,以及如何朗读它(例如:语种msg.text = e;msg.lang = "zh-CN";synth.cancel(msg); // 删除队列中所有的语音.如果正在播放,则直接停止debuggercallBack && callBack()
}// 语音停止
export function handleStop(e) {const synth = window.speechSynthesis; // 启用文本const msg = new SpeechSynthesisUtterance(); // 表示一次发音请求。其中包含了将由语音服务朗读的内容,以及如何朗读它(例如:语种msg.text = e;msg.lang = "zh-CN";synth.pause(msg); // 暂停语音该次语音播放
}//这个接口获取数据需要一点时间,改成异步的
export function setSpeech() {return new Promise(function (resolve, reject) {let synth = window.speechSynthesis;let id;id = setInterval(() => {if (synth.getVoices().length !== 0) {resolve(synth.getVoices());clearInterval(id);}}, 10);})
}

3、实例化父组件

<i title="播放" class="el-icon-microphone" @click="actMicroFun"></i>import SpeakVoice from './speak-voice.js'actMicroFun () {let speakVoice = new SpeakVoice();speakVoice.handleReply();
}

4、关于语音api解析

属性设置
SpeechSynthesisUtterance.lang 获取并设置话语的语言
SpeechSynthesisUtterance.pitch 获取并设置话语的音调(值越大越尖锐,越低越低沉)
SpeechSynthesisUtterance.rate 获取并设置说话的速度(值越大语速越快,越小语速越慢)
SpeechSynthesisUtterance.text 获取并设置说话时的文本
SpeechSynthesisUtterance.voice 获取并设置说话的声音
SpeechSynthesisUtterance.volume 获取并设置说话的音量函数设置
speechSynthesis.speak() 将对应的实例添加到语音队列中
speechSynthesis.cancel() 删除队列中所有的语音.如果正在播放,则直接停止
speechSynthesis.pause() 暂停语音
speechSynthesis.resume() 恢复暂停的语音
speechSynthesis.getVoices() 获取支持的语言数组.

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

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

相关文章

微信小程序前端获取OpenID和session_key

微信小程序前端获取OpenID和session_key code2Session: https://api.weixin.qq.com/sns/jscode2session?appidAPPID&secretSECRET&js_codeJSCODE&grant_typeauthorization_code wx.login({success: (res) > {console.log(res.code) //拿到codeuni.request({u…

docker搭建Medusa

Medusa 是一个为 Apache Cassandra 和 Scylla 数据库设计的数据备份工具&#xff0c;它支持多种存储后端&#xff0c;包括本地存储和云存储服务&#xff0c;如 Google Cloud Storage 和 Amazon S3。Medusa 使得数据库备份和恢复过程更加灵活和可靠。 功能介绍 高性能备份&…

开展在即!中银富登邀您共赴雄安2024数字城市展览会(雄安建博会)

中银富登村镇银行&#xff1a;雄安新区金融创新的领航者 在即将举办的2024雄安数字城市建设展览会上&#xff0c;中银富登村镇银行将以其在金融创新和普惠金融服务领域的卓越表现&#xff0c;成为展会的一大亮点。作为雄安新区首家全国性银行业金融机构总部&#xff0c;中银富…

DolphinScheduler 调度工作流报错 Host key verification failed.

文章目录 出现问题错误原因及解决方法1.SSH 免密登录配置失败、失效2.不存在该租户 建议 出现问题 在执行调度任务时&#xff0c;失败了&#xff0c;查看日志发现错误 —— Host key verification failed. 错误原因及解决方法 1.SSH 免密登录配置失败、失效 这种情况就检查…

请求的数据类型{ }{[ ]} 解析

一、案例区别 1.1源码 var saveInBrowserDeviceInfoStr localStorage.getItem(SaveInBrowserDeviceInfo); var saveInBrowserDeviceInfo;if (saveInBrowserDeviceInfoStr) {console.log(存放在浏览器的设备信息&#xff08;字符串&#xff09;&#xff1a; saveInBrowserDe…

黄仁勋最新访谈:GPU性能的革命性提升与AI未来

近期&#xff0c;英伟达CEO黄仁勋与美国CNBC知名主持人、股评人吉姆克莱默&#xff08;Jim Cramer&#xff09;在《Mad Money》节目中展开了一场关于技术未来和人工智能的对话。访谈里&#xff0c;黄仁勋不仅提到了英伟达在过去八年中将AI算力性能提高1000倍&#xff0c;还预言…

程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务

程序中调用DB过程要注意这种情况&#xff1a; 有些存储过程需要执行比较久&#xff0c;在数据库中直接跑本身没有出错&#xff0c;但从程序中调用该存储过程会由于超时进入程序异常处理&#xff0c;这时数据库后台依然在跑着该存储过程&#xff0c;如果该存储过程中有启用事务…

Linux:如何删除指定时间之前修改的文件

1、与文件有关的时间 在说明如何删除符合这种要求的文件之前&#xff0c;先来看看与文件有关的有哪些时间 简名全名中文名含义atimeaccess time访问时间文件中的数据最后被访问的时间mtimemodify time修改时间文件中的数据最后被修改的时间ctime change time变化时间文件的元…

对装饰器模式的理解

目录 一、场景二、面对场景中的新需求&#xff0c;我们怎么办&#xff1f;1、暴力法&#xff1a;直接修改原有的代码。2、子类继承法&#xff1a;既然要增强行为&#xff0c;那我搞一个子类&#xff0c;覆写不就完事了&#xff1f;3、装饰器模式 三、对装饰器模式的思考1、从代…

Rust---泛型(Generics)

目录 泛型和多态泛型参数泛型的使用结构体中使用枚举中使用方法中使用函数中使用为特定的类型参数提供特定的方法实现泛型和多态 泛型允许在编写代码时使用抽象类型来代替具体类型,可以在不同的数据类型上工作,同时避免代码重复。通过泛型,我们可以编写一次代码,然后在需要…

AI编程工具助手

随着人工智能技术的发展&#xff0c;AI编程工具助手应运而生。 AI编程工具助手通过利用人工智能技术&#xff0c;尤其是机器学习和自然语言处理&#xff0c;来辅助软件开发过程中的代码编写、调试、优化等工作。这些工具通过提供代码补全、代码生成、代码审查、性能优化等功能…

Linux中进程和计划任务

一.程序 1.什么是程序 &#xff08;1&#xff09;是一组计算机能识别和执行的指令&#xff0c;运行于电子计算机上&#xff0c;满足人们某种需求的信息化工具 &#xff08;2&#xff09;用于描述进程要完成的功能&#xff0c;是控制进程执行的指令集 二.进程 1.什么是进程…

Go 单元测试之HTTP请求与API测试

文章目录 一、httptest1.1 前置代码准备1.2 介绍1.3 基本用法 二、gock2.1介绍2.2 安装2.3 基本使用2.4 举个例子2.4.1 前置代码2.4.2 测试用例 一、httptest 1.1 前置代码准备 假设我们的业务逻辑是搭建一个http server端&#xff0c;对外提供HTTP服务。用来处理用户登录请求…

eNSP 静态路由综合实验

eNSP静态路由综合实验涉及的知识点包括但不限于&#xff1a;IP地址配置、环回地址配置、合理进行子网汇总、缺省路由、空路由接口、浮动静态路由、ACL表规则撰写、动态NAT网络地址转换、端口映射、远程登陆等。在实验过程中&#xff0c;可能需要根据给定的拓扑结构和要求&#…

Flume配置案例@Source:端口,Channel:内存,Sink:控制台

vim /opt/module/flume/job/port_to_console.conf ------------------------- 在nc-flume-log.conf文件中添加如下内容。 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1# Describe/configure the source a1.sources.r1.type netcat a1.so…

XGB-26:model

切片树模型|Slice tree model 当XGBoost中的 booster 参数设置为 gbtree 或 dart 时&#xff0c;算法构建了一个由多棵树组成的树模型。这个树模型可以被切片成多个子模型&#xff0c;每个子模型包含原始模型中一部分树。这个切片过程允许创建更小、更专业的模型&#xff0c;专…

每日OJ题_01背包④_力扣1049. 最后一块石头的重量 II

目录 力扣1049. 最后一块石头的重量 II 问题解析 解析代码 滚动数组优化代码 力扣1049. 最后一块石头的重量 II 1049. 最后一块石头的重量 II 难度 中等 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从…

数字乳腺癌组织病理学图像分类的Vision Transformer及其变体

Vision Transformer作为一种基于自注意力机制的高效图像分类工具被提出。近年来出现了基于Poolingbased Vision Transformer (PiT)、卷积视觉变压器(CvT)、CrossFormer、CrossViT、NesT、MaxViT和分离式视觉变压器(SepViT)等新模型。 它们被用于BreakHis和IDC数据集上的图像分…

软件项目管理 - PERT 图

文章目录 1 概述1.1 PERT 图1.2 基础概念 2 相关计算2.1 最早时刻2.2 最迟时刻2.3 关键路径2.4 松弛时间 1 概述 1.1 PERT 图 PERT&#xff1a;Program Evaluation and Review Technique&#xff08;项目评估与评审技术&#xff09; PERT 图是一个有向图&#xff0c;图中的箭…