SpeechSynthesisUtterance 语音合成
参考链接:https://blog.csdn.net/qq_40571631/article/details/89738575
---
SpeechSynthesisUtterance基本介绍
SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音
SpeechSynthesisUtterance基本属性
SpeechSynthesisUtterance.lang 获取并设置话语的语言
SpeechSynthesisUtterance.pitch 获取并设置话语的音调(值越大越尖锐,越低越低沉)
SpeechSynthesisUtterance.rate 获取并设置说话的速度(值越大语速越快,越小语速越慢)
SpeechSynthesisUtterance.text 获取并设置说话时的文本
SpeechSynthesisUtterance.voice 获取并设置说话的声音
SpeechSynthesisUtterance.volume 获取并设置说话的音量
SpeechSynthesisUtterance监听事件
onstart 开始合成
onend 合成结束
onerror 合成错误
onpause 暂停
onresume 恢复暂停
onboundary 在句子或单词边界
speechSynthesis基本方法
speak()
将对应的实例添加到语音队列中
cancel()
删除队列中所有的语音.如果正在播放,则直接停止
pause()
暂停语音
resume()
恢复暂停的语音
getVoices
获取支持的语言数组. 注意:必须添加在voiceschanged事件中才能生效
使用:
const speak = (word) => { let msg = new window.SpeechSynthesisUtterance(word); // msg.text = word; //播放文案 msg.volume = '1'; // 声音的音量,区间范围是0到1,默认是1。 msg.rate = 1;// 设置播放语速,范围:0.1 - 10之间 正常为1倍播放 msg.pitch = '0'; // 表示说话的音高,数值,范围从0(最小)到2(最大)。默认值为1。 msg.lang = 'zh-cn'; // 使用的语言,字符串, 例如:"zh-cn" msg.voiceURI = 'Google 普通话(中国大陆)'; msg.onend = (event) => { //语音合成结束时候的回调(语音读完后触发) console.log('合成结束'); } msg.onstart = (event) => { console.log('合成开始'); } msg.onerror = (event) => { console.log('onerror'); } msg.onpause = (event) => { console.log('暂停'); } msg.onresume = (event) => { console.log('恢复'); } msg.onboundary = (event) => { console.log('在单词或句子边界'); } window.speechSynthesis.speak(msg); return window.speechSynthesis; } let instance = null; ele.addEventListener('click', () => { instance = speak('123456789') }) pause.addEventListener('click', () => { instance.pause() }) resume.addEventListener('click', () => { instance.resume() }) cancel.addEventListener('click', () => { instance.cancel() })
---
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通