js 文字转语音 api SpeechSynthesisUtterance

简介: js 文字转语音 api SpeechSynthesisUtterance

SpeechSynthesisUtterance基本介绍


SpeechSynthesisUtterance.lang是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等


官方文档地址(https://developer.mozilla.org/zh-CN/docs/Web/API/SpeechSynthesisUtterance


SpeechSynthesisUtterance基本属性

SpeechSynthesisUtterance.lang 获取并设置话语的语言

SpeechSynthesisUtterance.pitch 获取并设置话语的音调(值越大越尖锐,越低越低沉)

SpeechSynthesisUtterance.rate 获取并设置说话的速度(值越大语速越快,越小语速越慢)

SpeechSynthesisUtterance.text 获取并设置说话时的文本

SpeechSynthesisUtterance.voice 获取并设置说话的声音

SpeechSynthesisUtterance.volume 获取并设置说话的音量

SpeechSynthesisUtterance.text基本方法

speak() 将对应的实例添加到语音队列中

cancel() 删除队列中所有的语音.如果正在播放,则直接停止

pause() 暂停语音

resume() 恢复暂停的语音

getVoices 获取支持的语言数组. 注意:必须添加在voiceschanged事件中才能生效


使用demo

9.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <label for="voices">语言:</label>
        <select name="voice" id="voices">
            <option value="">请选择</option>
            <!-- <option value="Google_SC">Google 普通话(中国大陆)</option>
            <option value="Kangkang_SC">Microsoft Kangkang - Chinese (Simplified, PRC)</option> -->
        </select>
    </div>
    <div>
        <label for="rate">语速:</label>
        <input id="rate" name="rate" type="range" min="0" max="3" value="1" step="0.1">
    </div>
    <div>
        <label for="pitch">音调:</label>
        <input id="pitch" name="pitch" type="range" min="0" max="2" step="0.1">
    </div>
    <div>
        <textarea id="text" name="text"></textarea>
    </div>
    <div>
        <button onclick="startAudio()">点击播放语音</button>
    </div>
    <div>
        <button onclick="stopAudio()">点击结束语音</button>
    </div>
    <div>
        <button onclick="pauseAudio()">点击暂停语音</button>
    </div>
    <div>
        <button onclick="resumeAudio()">恢复暂停的语音</button>
    </div>
</body>
<script>
    let utterance = new SpeechSynthesisUtterance() // 创建 语音对象
    // 获取元素对象
    let dom_voices = document.querySelector('#voices')
    const options = document.querySelectorAll('[type="range"], [name="text"]')
    options.forEach(e => e.addEventListener('change', handleChange))
    // voiceschanged 事件
    speechSynthesis.addEventListener('voiceschanged', () => {
        let voices = speechSynthesis.getVoices();
        // 根据系统语音创建选项
        voices.forEach(e => {
            const option = document.createElement('option')
            option.value = e.lang
            option.text = e.name
            dom_voices.appendChild(option)
        })
    })
    // 发生改变时触发
    function handleChange(e) {
        // console.log(this.name, this.value);
        utterance[this.name] = this.value
    }
    function startAudio() {
        utterance.lang = dom_voices.selectedOptions[0].value // 设置语言
        speechSynthesis.speak(utterance);
    }
    // 点击结束语音
    function stopAudio() {
        speechSynthesis.cancel(utterance)
    }
    function pauseAudio() {
        speechSynthesis.pause(utterance)
    }
    function resumeAudio() {
        speechSynthesis.resume(utterance);
    }
</script>
</html>
相关文章
|
2月前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
1月前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
49 12
|
2月前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
2月前
|
JavaScript 前端开发 API
Vue.js 3:探索组合式API带来的新变革
Vue.js 3:探索组合式API带来的新变革
|
2月前
|
JavaScript 前端开发 API
Vue.js 3中的Composition API:提升你的组件开发体验
Vue.js 3中的Composition API:提升你的组件开发体验
|
2月前
|
JavaScript 前端开发 API
Vue.js 3:深入探索组合式API的实践与应用
Vue.js 3:深入探索组合式API的实践与应用
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
传感器 XML JavaScript
使用JavaScript在HaaS EDU K1上实现文字显示
当前HaaS EDU K1已经支持通过JS轻应用方式进行开发调试了,这块开发板带着OLED屏,而底层的AliOS Things已经支持图形库,所以可以通过轻应用的开发方式,尝试进行GUI相应的开发。
使用JavaScript在HaaS EDU K1上实现文字显示
|
2月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
36 1
JavaScript中的原型 保姆级文章一文搞懂
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
118 2