- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用浏览器 api speechSynthesis.resume() 我正在尝试在 android chrome 上恢复暂停的语音
我已经在 mac os mojave 上的 chrome 桌面版本 78.0.3904.97 上测试了下面的代码,它在演讲暂停后恢复演讲没有任何问题。但是同样的代码无法在android chrome 77.x和78.x版本上恢复语音
重现步骤
这是 Chrome 中的错误吗?
<!DOCTYPE html>
<html>
<head>
<title>Parcel Sandbox</title>
<meta charset="UTF-8" />
</head>
<body>
<button id="play">Play</button>
<button id="pause">Pause</button>
<button id="resume">Resume</button>
<div id="data"></div>
<script>
const play = document.getElementById("play");
const pause = document.getElementById("pause");
const resume = document.getElementById("resume");
play.addEventListener("click", function() {
document.getElementById("data").innerText = "play";
var utterance = new SpeechSynthesisUtterance(
"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"
);
utterance.lang = "en-US";
speechSynthesis.cancel();
speechSynthesis.speak(utterance);
});
pause.addEventListener("click", function() {
document.getElementById("data").innerText = "pause";
speechSynthesis.pause();
});
resume.addEventListener("click", function() {
document.getElementById("data").innerText = "resume";
speechSynthesis.resume();
});
</script>
</body>
</html>
最佳答案
是的,这是一个错误:https://github.com/mdn/browser-compat-data/issues/4500
状态是固定的,所以它可能会在测试版或开发版或 Chronium 中工作。
就目前而言,当您暂停 speechSynthesis 时,其暂停状态不会更新,并且所有进一步的发言命令都将放入待处理队列,给人的印象是 speechSynthesis 已完全停止工作。您的代码通过在每个“说出”命令之前的“取消”行避免了这种情况。
顺便说一句,你想让这段代码在 Firefox 中工作吗?
编辑:希望您不要介意,我稍微更改了您的代码并添加了一个“状态”按钮来演示此错误。状态按钮显示发言、暂停和待定状态。
点击'Play'然后'Status':speaking 是true,paused 是false,pending 是false。然后单击“暂停”和“状态”。在 Windows 中讲 true 和 paused true,pending false。但是在 Andriod 中,状态分别为 true、false、false。所以 resume 不能做任何事情,因为 paused 是错误的。
此后,如果您再次点击“播放”,语音就会进入待处理队列,因此状态为真、假、真。
<!DOCTYPE html>
<html>
<head>
<title>Parcel Sandbox</title>
<meta charset="UTF-8" />
</head>
<body>
<button id="play">Play</button>
<button id="pause">Pause</button>
<button id="resume">Resume</button>
<button id="status">Status</button>
<button id="ssCancel">Cancel</button>
<div id="data"></div>
<script>
const play = document.getElementById("play");
const pause = document.getElementById("pause");
const resume = document.getElementById("resume");
const status = document.getElementById("status");
const ssCancel = document.getElementById("ssCancel");
const data = document.getElementById("data");
play.addEventListener("click", () => {
data.innerText = "play";
var utterance = new SpeechSynthesisUtterance(
"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"
);
utterance.lang = "en-US";
//speechSynthesis.cancel();
speechSynthesis.speak(utterance);
});
pause.addEventListener("click", () => {
data.innerText = 'pause';
speechSynthesis.pause();
});
resume.addEventListener("click", () => {
data.innerText = "resume";
speechSynthesis.resume();
});
status.addEventListener('click', () => {
data.innerText = `
Speaking: ${speechSynthesis.speaking},
Paused: ${speechSynthesis.paused},
Pending: ${speechSynthesis.pending}.`;
});
ssCancel.addEventListener('click', () => {
speechSynthesis.cancel();
});
</script>
</body>
</html>
(为了更好地显示错误,我注释掉了您的取消行并添加了一个单独的取消按钮)
关于javascript - 在 chrome android 上使用 speechSynthesis.resume() 恢复暂停的语音不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58953882/
大家早上好 我仍在为不识字的人做问卷调查。为此,我正在使用文本转语音应用程序(感谢@JO3-W3B-D3V) 问题是调查问卷将以多种语言开发,这意味着文本到语音应用程序也必须支持多种语言。 Speec
我想创建一个与过去的 GoBarbara.com 类似的页面。文本字段的内容将从文本转换为语音。 因此,我想使用 SpeechSynthesis API (javaScript),它在触发 intro
我尝试用 javascript 实现一个小网页,允许从两个 mp3 之间的文本播放 specchsynthesis 部分。 至于无论出于何种原因,口语部分的 onend 语句不起作用,我想创建一个递归
在 Web Speech API Specification 上给出的示例 speechSynthesis.speak(SpeechSynthesisUtterance('Hello Worl
我正在尝试使用 speechSynthesis API 进行试验在Eric's blog的帮助下. This fiddle工作正常,意味着有 no issue with the audio devic
我无法使用 Dart SpeechSynthesis 类构建 SpeechSynthesis 对象。 Dart 编辑器提示:“类 'SpeechSynthesis' 没有默认构造函数”。 最佳答案 这
我正在使用Speech Synthesis API在 Google Chrome v34.0.1847.131 上。该 API 从 v33 开始在 Chrome 中实现。 文本转语音在大多数情况下都有
public boolean playing=false; private void prepareTTSEngine() { try { synthesi
SpeechSynthesis API在 Firefox 上不会说普通话。不支持吗?我在文档中找不到列表。我尝试了几种不同的语言 tags . Fiddle : var msg = new Speec
当我在 Chrome 中运行 speechSynthesis.getVoices() 时,我得到了一个可能的声音列表。该列表会因计算机和 Chrome 版本而异。 有什么方法可以扩展支持并添加更多声音
我正在尝试构建一个可启动的网络应用程序。因此,我的用户需要应用程序在后台运行,以跟踪时间、地理位置并使用 window.speechSynthesis.speak 发布进度公告。 我需要它在手机 sl
我正在使用 React,这里有一些 TTS(文本到语音)的代码。它在 Windows 和 macOS 以及某些版本的 iOS 设备上完美运行。 但对于某些 iOS 设备,设置语音不起作用。 {
我尝试使用 Google speechSythesis(网络语音 API),它给我的声音比我预期的要少。在 chrome 中,我有 22 个声音,但在其他浏览器中,我有 3 个声音,有什么办法可以增加
下面的简要页面不起作用。具体来说,“window.speechSynthesis.speak(msg)”在按下按钮之前不起作用。如果按钮已被按下,则“Hello”消息将起作用。如果没有,则对“wind
我正在尝试使用 SpeechSynthesis API。它适用于桌面浏览器和移动 Chrome,但不适用于移动 Safari。 const msg = new SpeechSynthesisUtt
我尝试用 javascript 编写测试代码,同时尝试记录和读出一个随机数。对于文本到语音,我使用 SpeechSynthesisUtterance 和 window.speechSynthesis:
用于扩展 (https://developer.chrome.com/extensions/tts) 和 SpeechSynthesis (https://developer.mozilla.org/
这个问题在这里已经有了答案: Getting the list of voices in speechSynthesis (Web Speech API) (13 个答案) 关闭 3 年前。 我正在
我想在 Chrome 中使用 window.SpeechSynthesis 的 cancel 方法,切断一个话语并开始一个新的话语(这样你就不必听到仍在队列中的所有话语) var test = new
我正在开发一个需要在网络浏览器中使用文本转语音的应用程序。我正在为此使用 HTML5 语音合成。在 Google Chrome 上,代码运行良好,使用 |getVoices()| 列出了所有可用的语音
我是一名优秀的程序员,十分优秀!