首页 > 其他分享 >js纯前端实现语音播报,朗读功能

js纯前端实现语音播报,朗读功能

时间:2024-05-21 17:30:47浏览次数:18  
标签:播报 speechSynthesis config js instance window 语音 朗读

实现语音播报要有两个原生API

分别是【window.speechSynthesis】【SpeechSynthesisUtterance】

项目代码

// 执行函数
let voices, timerVoices
timerVoices = setInterval(() => {
    voices = window.speechSynthesis.getVoices()
    if (voices.length) {
        clearInterval(timerVoices)
        console.info("加载浏览器语音包成功")
        initVoice()
    }
}, 17)
 
// 函数
function initVoice(config) {
  window.speechSynthesis.cancel(); //播报前建议调用取消的函数,如有正在播报的话音,播报会任务被塞进入队列,只有等上一个语音结束才会执行下一个语音
  //获取语音包
  let listArr = window.speechSynthesis.getVoices();
  listArr = listArr.filter(item => item.lang.indexOf('zh-') > -1);
  if (listArr.length == 0) {
    console.error('没有可用的中文语音!');
  }
  //实例化播报内容
  let instance = new SpeechSynthesisUtterance();
  instance.text = config.text || '轻轻敲醒沉睡的心灵,慢慢张开你的眼睛,看看忙碌的世界,是否依然孤独的转个不停!'; // 文字内容
  instance.lang = config.lang || "zh-CN"; // 使用的语言:中文
  instance.volume = config.vol || 1; // 声音音量:1
  instance.rate = config.rate || 1; // 语速:1
  instance.pitch = 1; // 音高:1
  window.speechSynthesis.speak(instance); // 播放
  instance.addEventListener("end", () => {});// 监听播报完成状态,播完可以做些其它处理    
}

将函数拷贝到项目中,执行函数即可实现。

下面列出一些常用的执行方法

//获取可用的语音包,如果返回数组是空,则没有可用的语音包。 不同浏览器的语音包数量是不一样的。 
窗口。语音合成。获取语音();
 
//instance是SpeechSynthesisUtterance的实例,绑定了语音包。 将话语添加到话语队列中; 当任何其他话语在它被说出之前排队时,它将被说出。
window.speechSynthesis.speak(instance); 
 
// 取消语音
window.speechSynthesis.cancel();
 
//暂停语音
// window.speechSynthesis.pause();
 
//恢复语音
 window.SpeechSynthesis.resume();

标签:播报,speechSynthesis,config,js,instance,window,语音,朗读
From: https://www.cnblogs.com/leeke98/p/18204607

相关文章

  • tensorflow.js示例笔记 - predict-download-time
    预测下载时间。<!DOCTYPEhtml><html><head><title>predict-download-time</title><style>canvas{border:1pxsolid#d3d3d3;}</style><sc......
  • tensorflow.js示例笔记 - mnist
    使用层来进行数字识别,使用tf.layersapi训练模型识别MNIST数据库中的手写数字。index.html<html><head><title>MNIST</title><metacharset="UTF-8"><metaname="viewport"content="width=device-width,......
  • tensorflow.js示例笔记 - boston-housing
    多元回归,比较不同的房价预测模型。index.html<htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1"><title>Mult......
  • tensorflow.js示例笔记 - iris
    根据鸢尾花的数据对花进行分类,使用神经网络对结构化(表格)数据进行分类。index.html<html><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1"><linkrel="......
  • Jackson 库中@JsonProperty和@JsonAlias注解实现序列化反序列化
    Json序列化一般为实体转化生成的JSON数据中直接包含嵌套对象的属性ObjectMappermapper=newObjectMapper();Bookbook=newBook("LearningJava","Java");Writerwriter=newWriter(110,"Mohit",book);StringjsonWriter=......
  • 聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
    哈喽大家好,我是咸鱼。最近写的一个Python项目用到了jwcrypto这个库,这个库是专门用来处理JWT的,JWT全称是JSONWebToken,JSON格式的Token。今天就来简单入门一下JWT。官方介绍:https://jwt.io/introduction先聊聊TokenToken的意思是令牌,通常用于身份验证。例如,......
  • 微信JSAPI支付
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`微信JSAPI支付日期:2019-3-30阿珏折腾代码浏览:1883次评论:6条前段时间一直在做微信相关的业务,虽说不是什么新技术,但之前一直没有机会接触......
  • JS之打印导出PDF
    我们可以直接调用浏览器的打印功能来实现。1.直接打印直接调用浏览器的打印功能,打印整个页面functionpreview(){window.print();}2.打印指定区域通过开始标记、结束标记来打印,打印局部页面<!--startprint--><div>打印的内容</div><!--end......
  • Springboot Data Jdbc实体类json格式存储
    日常需求中有些需求需要在某字段存储json格式数据,例如日志审计接口传参数据等1.首先我们得保证数据库字段为text或者json2.设置读转换和写转换器importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.core.convert.converter.Converter;importo......
  • 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关
    无法加载文件C:\ProgramFiles\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.micros  原因:现用执行策略是Restricted(默认设置)解决方法:1、使用管理员的身份打开powershell, win+x2、输入set-executionpolicyremotesigned后按y,问题得......