【问题标题】:web speech api - speech synthesis .lang property not working网络语音 api - 语音合成 .lang 属性不起作用
【发布时间】:2016-01-29 18:34:01
【问题描述】:

我尝试使用网络语音 api 用葡萄牙语转录一个单词,我将属性设置为“pt-BR”(不幸的是,不支持葡萄牙语 - 欧洲语),但总是用英语回复。

有人可以帮忙吗?

谢谢

代码:

        <script type="text/javascript"> 
            var synth = window.speechSynthesis;
            function falatarea(){
                var utteranceY = new SpeechSynthesisUtterance();
                    utteranceY.text = "teste";
                    utteranceY.lang = "pt-BR";
                    utteranceY.voice = "pt-BR";
                    window.speechSynthesis.speak(utteranceY);
                    }
        </script>

【问题讨论】:

    标签: javascript speech-recognition speech-synthesis webspeech-api


    【解决方案1】:

    Chrome 最近好像坏了。我有代码工作,现在不行了。

    https://code.google.com/p/chromium/issues/detail?id=582455

    作为一种解决方法,您可以设置 .voice

    voices = window.speechSynthesis.getVoices()
    
    var utterance = new SpeechSynthesisUtterance("lo que practico");
    
    utterance.voice = voices[3];
    utterance.lang = voices[3].lang;
    
    window.speechSynthesis.speak(utterance);
    

    也许 API 像以前一样发生了变化,当时女性/男性声音都可用,因此无法特别选择一个。我仍然为其他浏览器(或旧版 chrome)设置 lang。

    【讨论】:

    • 感谢您的回复!我尝试了此代码,但收到此错误:“未捕获的 TypeError:无法读取未定义的属性 'lang'”。我也这样做了:stackoverflow.com/questions/21513706/… 但也不工作......
    • 代码假设至少返回 4 个声音,其中 voices[3] 是您需要自己的逻辑来选择合适的声音。
    • 是的,我使用了语音[15],它是 pt-BR,我认为问题在于将语音放入数组中。它不工作......
    • 现在,在我的企业 PC 上,语音来自 PT-PT(实际上这是新的),但在我的 PC 上,语音来自 EN-EN。谷歌一定是在他的语音系统上做点什么……
    • Android 与 PC 上的 Google Chrome 有不同的语音列表,也许 Mac/PC 也有差异。你必须编写代码来嗅探并找到你想要的(我有一个首选语言值列表,然后选择第一个可用的)。
    猜你喜欢
    • 2014-10-03
    • 2015-09-14
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多