SpeechSynthesis в Android-Chrome: не может изменить английский голос с американского английского - PullRequest
0 голосов
/ 24 октября 2018

Я использую API синтеза речи на Android-Chrome.Проблема в том, что, хотя доступно 4 голоса на английском языке, браузер всегда использует американский английский, независимо от того, какой код указывает.Я могу использовать другие языки, например французский, но не другие английские голоса, например en-AU, GB или IN.

Этот код фильтрует британские английские голосовые объекты из массива getVoices и использует первый, чтобы произнести слово 'tomato».Проблема в том, что слово всегда произносится как «to-may-lo», а не «to-mar-to», что означает, что мой текст не рифмуется как следует.

Отображается использованный голосовой объекти (на телефонах, которые я пробовал) - ГБ.

HTML ...

<!DOCTYPE html>
<html lang="en-GB">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Let's not call the whole thing off</title>
        <script src="tomato.js" defer></script>
    </head>
    <body>
        <div id="tomato" lang="en-GB">Tomato</div>
        <div id="platform"></div>
    </body>
</html>

И скрипт ...

var platform = document.getElementById("platform");
var tomato = document.getElementById("tomato");

var voices = [];
var voicesGB = [];
voices = speechSynthesis.getVoices();
speechSynthesis.onvoiceschanged = function() {
    voices = speechSynthesis.getVoices();
    voicesGB = voices.filter(voice => /en(-|_)GB/.test(voice.lang));
};

function speak(word) {
    var msg = new SpeechSynthesisUtterance();
    msg.default = false;
    msg.text = word;
    msg.voice = voicesGB[0];
    msg.lang = voicesGB[0].lang;
    window.speechSynthesis.speak(msg);
    for (var p in msg.voice) {
        platform.innerHTML += p + ': ' + msg.voice[p] + '<br>\n';
    }
}

tomato.addEventListener("click",() => {speak('tomato');});

И jsbin: https://jsbin.com/xefukemuga/edit?html,js,output Запустите это в Android Chrome и коснитесь слова «помидор».

Я искал все и пробовал различные исправления.Как вы контролируете, какой голос использует Android-Chrome?

...