onBoundary 事件在 Ubuntu 20.04 及更高版本的 Chrome 中不会触发

问题描述 投票:0回答:1

一个好例子比长篇大论更好,对吧?

utter = new SpeechSynthesisUtterance()
utter.onboundary = console.log
utter.lang = 'en-US'
utter.text = 'This is a sentence'
window.speechSynthesis.speak(utter)

在 Chrome 版本 109.0.5414.74(官方版本)(64 位)上,在 Ubuntu 22.04 上,边界事件永远不会被触发。

警告:出于某种原因,上面的代码片段根本无法在 Chrome 上运行,但如果我将其复制到开发工具中的控制台,它就可以运行。但边界事件仍然没有被触发。

它对你有用吗?

编辑:在对不同的浏览器和操作系统进行调查后,这似乎是仅在 Chrome/Chromium 上发生的错误,并且仅在 Linux 下发生。

google-chrome ubuntu text-to-speech ubuntu-22.04 webspeech-api
1个回答
0
投票

Ubuntu 上的 Chrome 不会触发

boundary
事件,因为平台上提供的所有
SpeechSynthesisVoice
都是基于网络的。您可以看到这正在对返回的数组运行快速过滤器:

speechSynthesis.getVoices().filter(({ localService }) => localService)

这将返回一个空数组

[]
,因为所有声音都是由远程语音合成器提供的。

这是一个已知问题,相关错误已被标记为 WontFix。我引用评论7的言论(强调我的):

并非所有语音引擎都支持边界事件。

Mac OS X、Windows 和 Chrome OS 上的本机语音合成均支持单词级别的边界事件。

基于网络的语音合成,Android语音合成目前不支持这些。目前没有立即修复这些问题的计划,因为上游 API 实际上根本不会公开它们

不幸的是,您无能为力,因为平台根本不支持字级别的边界事件。

© www.soinside.com 2019 - 2024. All rights reserved.