Search code examples
google-chromespeech-synthesis

Female voice in google chrome speechSynthesis


Im using this exact code in both the scenarios.

        var msg = new SpeechSynthesisUtterance();
        var voices = window.speechSynthesis.getVoices();
        msg.voice = voices[1];
        msg.text = "hello world";
        msg.lang = 'en-US';
        speechSynthesis.speak(msg);

If I run this in the chrome console I get a female voice. But if I put the exact code in an index.html and run it, it plays a male voice. Could any one please clarify why this difference occurs. Thanks in advance.


Solution

  • Found the Root cause. Getting the list of voices in speechSynthesis of Chrome (Web Speech API)

    The calls are async, so when I try to run in index.html the voices array is empty. As I suggested when I run this and then use the speak it works fine.

        var msg;
        var voices;
        var timer = setInterval(function() {
            voices = speechSynthesis.getVoices();
            console.log(voices);
            if (voices.length !== 0) {
                msg = new SpeechSynthesisUtterance();
                msg.voice = voices[0];
                speechSynthesis.speak(msg);
                msg.lang = 'en-US';
                clearInterval(timer);
            }
        }, 200);
        timer();
        speechSynthesis.speak("hello world");