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 |