Женский голос в Google Chrome SpeechSynthesis

Я использую этот точный код в обоих сценариях.

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

Если я запускаю это в консоли Chrome, я получаю женский голос. Но если я помещу точный код в index.html и запущу его, он воспроизведет мужской голос. Может ли кто-нибудь объяснить, почему возникает эта разница. Заранее спасибо.


person Nirojan Selvanathan    schedule 25.08.2017    source источник


Ответы (1)


Нашел Первопричину. Получение списка голосов в речиSynthesis of Chrome (API веб-речи)

Вызовы асинхронные, поэтому, когда я пытаюсь запустить index.html, массив voices пуст. Как я и предполагал, когда я запускаю это, а затем использую речь, все работает нормально.

    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");
person Nirojan Selvanathan    schedule 25.08.2017
comment
это нормально работает!!! просто добавление индекса любого голоса, который мы хотим, изменит тип голоса. например: msg.voice = voices[1]; изменится на женский голос Microsoft Zira Desktop - английский (США) - person Amila Viraj; 03.03.2020