- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试用 javascript 编写测试代码,同时尝试记录和读出一个随机数。对于文本到语音,我使用 SpeechSynthesisUtterance
和 window.speechSynthesis
:
function generate(){
for (let i = 0;i<100;i++){
let randomNumber = numberGenerator.generateNumber();
showAndSayIt(randomNumber);
}
}
const showAndSayIt = (m) => {
var msg = new SpeechSynthesisUtterance(m);
console.log(m);
window.speechSynthesis.speak(msg);
}
当我运行这段代码时,我立即得到所有的日志,只有在一切都完成后,我才开始一个接一个地听 100 篇演讲。因此,似乎所有生成的语音都被累积起来,然后当没有其他命令来完成语音生成器时,它会立即吐出所有这些语音。有没有办法改变这种行为并能够以正确的顺序发音?
我已经在 Google Chrome 75 上试过了。
最佳答案
您的分析是正确的,只有在所有 console.logs 完成后才会运行 speak 命令。这是因为,作为 API,speechSynthesis 方法(例如 speak())被放入浏览器的任务队列中,等待调用堆栈清除,即所有 console.logs 都已完成。 Here's a good video .
如果您希望某些事情与进入任务队列的事情同时发生,那么您可以使用事件。在这种情况下,话语有 onstart 和 onend,具体取决于您希望它发生在演讲之前还是之后。
因此,假设您希望 console.log 发生在演讲之前,您可以使用此代码。但是如果你希望它在将 onstart 更改为 onend 之后发生。
const showAndSayIt = (m) => {
const msg = new SpeechSynthesisUtterance(m);
msg.onstart = () => console.log(m);
speechSynthesis.speak(msg);
}
关于javascript - window.speechSynthesis.speak 不会说话,除非没有其他命令不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57765945/
大家早上好 我仍在为不识字的人做问卷调查。为此,我正在使用文本转语音应用程序(感谢@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()| 列出了所有可用的语音
我是一名优秀的程序员,十分优秀!