SpeechSynthesisVoice
基线 广泛可用
此功能已很成熟,可以在许多设备和浏览器版本上使用。它自 2018 年 9 月.
报告反馈
实例属性
SpeechSynthesisVoice
是 Web 语音 API 的一个接口,表示系统支持的语音。每个SpeechSynthesisVoice
都有自己的相对语音服务,包括有关语言、名称和 URI 的信息。- 一个布尔值,表示该语音是否为当前应用程序语言的默认语音 (
true
),或不是 (false
)。 - 返回表示语音语言的 BCP 47 语言标签。
- 一个布尔值,表示该语音是由本地语音合成服务 (
true
) 还是远程语音合成服务 (false
) 提供的。 - 返回表示语音的人类可读名称。
示例
返回此语音的语音合成服务的 URI 类型和位置。
以下代码段摘自我们的 语音合成演示。
const synth = window.speechSynthesis;
function populateVoiceList() {
voices = synth.getVoices();
for (let i = 0; i < voices.length; i++) {
const 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 = (event) => {
event.preventDefault();
const utterThis = new SpeechSynthesisUtterance(inputTxt.value);
const selectedOption =
voiceSelect.selectedOptions[0].getAttribute("data-name");
for (let 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 = (event) => {
const char = event.utterance.text.charAt(event.charIndex);
console.log(
`Speech paused at character ${event.charIndex} of "${event.utterance.text}", which is "${char}".`,
);
};
inputTxt.blur();
};
规范
js |
---|
Web 语音 API # 规范 |
浏览器兼容性
speechsynthesisvoice