社区脚本中心 → 浏览:帖子主题
* 帖子主题:HTML5 语音合成 Speech Synthesis API
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:2826
发帖:230
来自:保密
注册:2023-12-09 09:36:49
造访:2026-05-05 13:56:22
[ 第 1 楼 ] 184 回复
文本转语音合成 (TTS)

HTML5中和Web Speech相关的API实际上有两类,一类是“语音识别(Speech Recognition)”,另外一个就是“语音合成(Speech Synthesis)”,这两个名词听上去很高大上,实际上指的分别是“语音转文字”,和“文字变语音”。
H5合成语音示例:

[您可以先修改代码再运行]

2024-04-06 19:45:38 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:2826
发帖:230
来自:保密
注册:2023-12-09 09:36:49
造访:2026-05-05 13:56:22
[ 第 2 楼 ] 185 回复
语音合成Speech Synthesis API

先从最简单的例子说起,如果想让浏览器读出“你好,世界!”的声音,可以下面的JS代码:

var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');
window.speechSynthesis.speak(utterThis);

没错,只需要这么一点代码就足够了,大家可以在自己浏览器的控制台里面运行上面两行代码,看看有没有读出声音。

上面代码出现了两个长长的对象,​​SpeechSynthesisUtterance​​​和​​speechSynthesis​​,就是语音合成Speech Synthesis API的核心。

首先是​​SpeechSynthesisUtterance​​​对象,主要用来构建语音合成实例,例如上面代码中的实例对象​​utterThis​​。我们可以直接在构建的时候就把要读的文字内容写进去:

var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');

又或者是使用实例对象的一些属性,包括:

    ​​text​​ – 要合成的文字内容,字符串。
    ​​lang​​​ – 使用的语言,字符串, 例如:​​"zh-cn"​​
    ​​voiceURI​​ – 指定希望使用的声音和服务,字符串。
    ​​volume​​​ – 声音的音量,区间范围是​​0​​​到​​1​​​,默认是​​1​​。
    ​​rate​​​ – 语速,数值,默认值是​​1​​​,范围是​​0.1​​​到​​10​​​,表示语速的倍数,例如​​2​​表示正常语速的两倍。
    ​​pitch​​​ – 表示说话的音高,数值,范围从​​0​​​(最小)到​​2​​​(最大)。默认值为​​1​​。

因此上面的代码也可以写作:

var utterThis = new window.SpeechSynthesisUtterance();
utterThis.text = '你好,世界!';

不仅如此,该实例对象还暴露了一些方法:

    ​​onstart​​ – 语音合成开始时候的回调。
    ​​onpause​​ – 语音合成暂停时候的回调。
    ​​onresume​​ – 语音合成重新开始时候的回调。
    ​​onend​​ – 语音合成结束时候的回调。

接下来是​​speechSynthesis​​对象,主要作用是触发行为,例如读,停,还原等:

    ​​speak()​​​ – 只能接收​​SpeechSynthesisUtterance​​作为唯一的参数,作用是读合成的话语。
    ​​stop()​​ – 立即终止合成过程。
    ​​pause()​​ – 暂停合成过程。
    ​​resume()​​ – 重新开始合成过程。
2024-04-06 19:45:49 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:2826
发帖:230
来自:保密
注册:2023-12-09 09:36:49
造访:2026-05-05 13:56:22
[ 第 3 楼 ] 186 回复

[您可以先修改代码再运行]

2024-04-06 19:46:09 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:2826
发帖:230
来自:保密
注册:2023-12-09 09:36:49
造访:2026-05-05 13:56:22
[ 第 4 楼 ] 187 回复

[您可以先修改代码再运行]

2024-04-06 19:46:31 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:2826
发帖:230
来自:保密
注册:2023-12-09 09:36:49
造访:2026-05-05 13:56:22
[ 第 5 楼 ] 188 回复

[您可以先修改代码再运行]

2024-04-06 19:46:46 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册? 密码:
评论内容