当我在Edge中加载下面的网页时,它告诉我计算机上有8种声音可用。但是只有2个是操作语音[4]和语音[7]。在firefox中,只有一种可用且可操作的声音[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个可用。如何修改程序,以便仅加载将在计算机上运行的声音?
任何建议表示赞赏。
谢谢
新编辑。
我找到了一个包含response from Islam Elshobokosy的相关问题。他提交了以下代码段:
speechSynthesis.onvoiceschanged = function() {
var voices = this.getVoices();
console.log(voices);
};
当我单击“堆栈溢出”页面上的关联按钮以运行该代码时,它产生的结果显示了计算机上仅有的两种正常运行的声音。它没有给其他6。
我的问题是: 1.此代码如何过滤掉我的网页(如上)找到的6种无关的声音? 2.如何将这样的内容合并到我的网页中?