Search code examples
javascriptspeech-recognitionspeech-synthesiswebspeech-api

web speech api - speech synthesis .lang property not working


im trying to use web speech api to transcript a word in Portuguese, i set the property to 'pt-BR' ( unfortunately Portuguese - european is not supported) but, always replies in english.

Can someone help?

Thanks

code:

        <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>

Solution

  • Seems like Chrome broke recently. I had code working, now its not.

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

    As a work-around, you can set the .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);
    

    Perhaps the API changed as before when a female/male voice were both available it was not possible to pick one in particular. I still set lang for other browsers (or older chromes).