Когда я запускаю загрузку веб-страницы ниже в Edge, она говорит мне, что на моем компьютере доступно 8 голосов.Но только 2 являются операционными голосом [4] и голосом [7].В Firefox есть только один доступный и работающий, voice [0].
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width">
<title>Speech synthesiser</title>
<script>
var synth = window.speechSynthesis;
function populateVoiceList() {
var voiceSelect = document.getElementById("voicesAvailable");
voiceSelect.innerHTML = '';
voices = synth.getVoices();
for(i = 0; i < voices.length ; i++) {
var option = document.createElement('option');
option.textContent = voices[i].name + ' (' + voices[i].lang + ')';
voiceSelect.appendChild(option);
}
}
</script>
</head>
<body onload="populateVoiceList()">
<h1>speech test 1</h1>
<form id="myForm">
<select id="voicesAvailable">
<option>Choose a voice</option>
</select>
</form>
</body>
</html>
В браузере Microsoft Edge, похоже, применяется географический фильтр для ограничения голосов.Таким образом, хотя в раскрывающемся списке размещено 8 имен, фактически доступны только 2.Как мне изменить программу так, чтобы я загружал только те голоса, которые будут работать на компьютере?
Любой совет приветствуется.
Спасибо
Новое редактирование ..
Я нашел связанный вопрос, содержащий ответ от Ислама Эльшобокосы .Он отправил следующий фрагмент кода:
speechSynthesis.onvoiceschanged = function() {
var voices = this.getVoices();
console.log(voices);
};
Когда я нажал соответствующую кнопку на странице переполнения стека, чтобы запустить этот код, он дал результат, который выявил только два работающих голоса на моем компьютере.Это не дало другой 6.
Мой вопрос сейчас: 1. Как этот код отфильтровывает 6 несоответствующих голосов, которые находит моя страница веб-страницы (выше)?2. Как мне добавить что-то подобное на мою веб-страницу?