vue实现文字转语音的组件,class类封装,实现项目介绍文字播放,不需安装任何包和插件(2024-04-17)

本文主要是介绍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() 获取支持的语言数组.

这篇关于vue实现文字转语音的组件,class类封装,实现项目介绍文字播放,不需安装任何包和插件(2024-04-17)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914485

相关文章

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连