SpeechSynthesisVoice - 表示系统支持的声音
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
SpeechSynthesisVoice
是 Web Speech API 的接口,表示系统支持的声音。每个 SpeechSynthesisVoice
都有自己的相对语音服务,包括有关语言,名称和 URI 的信息。
属性
SpeechSynthesisVoice.default
只读
一个 Boolean
,表示语音是否为当前应用语言的默认语音。
SpeechSynthesisVoice.lang
只读
返回指示语音语言的 BCP 47 语言标记。
SpeechSynthesisVoice.localService
只读
一个 Boolean
,表示语音是由本地语音合成器服务(true
)还是由远程语音合成器服务(false
)提供的。
SpeechSynthesisVoice.name
只读
返回代表语音的人类可读名称。
SpeechSynthesisVoice.voiceURI
只读
返回此语音的 URI 类型和语音合成服务的位置。
实例
以下摘录摘自我们的语音合成器实例。
function populateVoiceList() {
voices = synth.getVoices();
for(i = 0; i < voices.length ; i++) {
var option = document.createElement('option');
option.textContent = voices[i].name + ' (' + voices[i].lang + ')';
if(voices[i].default) {
option.textContent += ' -- DEFAULT';
}
option.setAttribute('data-lang', voices[i].lang);
option.setAttribute('data-name', voices[i].name);
voiceSelect.appendChild(option);
}
}
populateVoiceList();
if (speechSynthesis.onvoiceschanged !== undefined) {
speechSynthesis.onvoiceschanged = populateVoiceList;
}
inputForm.onsubmit = function(event) {
event.preventDefault();
var utterThis = new SpeechSynthesisUtterance(inputTxt.value);
var selectedOption = voiceSelect.selectedOptions[0].getAttribute('data-name');
for(i = 0; i < voices.length ; i++) {
if(voices[i].name === selectedOption) {
utterThis.voice = voices[i];
}
}
utterThis.pitch = pitch.value;
utterThis.rate = rate.value;
synth.speak(utterThis);
utterThis.onpause = function(event) {
var char = event.utterance.text.charAt(event.charIndex);
console.log('语音在 "' + event.utterance.text + '" 的第 ' + event.charIndex + ' 个字符处暂停,字符是 "' + char + '"。');
}
inputTxt.blur();
}
规范
规范 | 状态 | 备注 |
---|---|---|
Web Speech API SpeechSynthesisVoice 的定义 |
草稿 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 33 | ≤18 | 49 | 不支持 | 21 | 7 |
default | 33 | 14 | 49 | 不支持 | 21 | 7 |
lang | 33 | 14 | 49 | 不支持 | 21 | 7 |
localService | 33 | 14 | 49 | 不支持 | 21 | 7 |
name | 33 | 14 | 49 | 不支持 | 21 | 7 |
voiceURI | 33 | 14 | 49 | 不支持 | 21 | 7 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 4.4.3 | 33 | 未知 | 62 61 — 62 | 未知 | 不支持 | 7 |
default | 4.4.3 | 33 | 未知 | 62 61 — 62 | 未知 | 不支持 | 7 |
lang | 4.4.3 | 33 | 未知 | 62 61 — 62 | 未知 | 不支持 | 7 |
localService | 4.4.3 | 33 | 未知 | 62 61 — 62 | 未知 | 不支持 | 7 |
name | 4.4.3 | 33 | 未知 | 62 61 — 62 | 未知 | 不支持 | 7 |
voiceURI | 4.4.3 | 33 | 未知 | 62 61 — 62 | 未知 | 不支持 | 7 |