javascript - Web Speech API - SpeechSynthesisUtterance onmark 事件不会触发

标签 javascript text-to-speech

使用 SSML 时,我无法在 Chrome 或 Edge 中触发“onmark”事件。
我在 Chrome 和 Edge 中尝试过这个,并根据标准编写了代码 https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/TTS/DMAC.TTS.SSML.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <input id="btnSpeak" type="button" onclick="Speak(); return false;" value="Speak" />
        </div>
        <div id="output"></div>
    </form>
</body>

<script>
    var synth = window.speechSynthesis;
    var voices = null;
    function Speak() {
        var utterance = new SpeechSynthesisUtterance();
        utterance.onboundary = function (event) {
            document.getElementById('output').innerHTML += 'onboundary Event: ' + event.toString() + "<br/>";
        };
        utterance.onmark = function (event) {
        document.getElementById('output').innerHTML += 'onmark Event: ' + event.toString() + "<br/>";
        }
        utterance.text = '<mark name="w1"/>Hello <mark name="w2"/>my <mark name="w3"/>name <mark name="w4"/>is <mark name="w5"/>John.';
        utterance.lang = 'en-US';
        utterance.voice = voices[0];
        synth.speak(utterance);
    };
    window.speechSynthesis.onvoiceschanged = function () {
        voices = synth.getVoices();
    };
</script>
</html>

最佳答案

对于基于远程 tts 服务的语音,onboundary 事件似乎没有在 Chrome 上正确触发。检查您打算使用的声音的 localService 属性,仅选择 localService = true voices。
在 Edge 上,所有语音都正确触发了边界事件。
奇怪的是,Chromium 团队将这个已知问题标记为“wontfix”,
https://bugs.chromium.org/p/chromium/issues/detail?id=521666

关于javascript - Web Speech API - SpeechSynthesisUtterance onmark 事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69309051/

相关文章:

javascript - 图表太大。如何减小 vue js 中图表的大小?

php - 如何创建对表单的自动更新响应

javascript - 使用 codeigniter 进行 JQuery ajaxfileupload

javascript - 运行 'detox test' 时找不到模块@jest/reporters

text-to-speech - Twilio <Say> 动词中是否有魔法字符

javascript - SpeechSynthesisUtterance 脚本,带有播放、暂停、停止按钮以及语言和语音选择

javascript - 相同的 Controller ,不同的模板,一个新变量

python - IBM-Watson 文本转语音抛出 "403:Forbidden"错误

ios - iOS 10.3文本语音转换可在模拟器上运行,但不能在设备上运行

java - TTS : Speak fails