到目前为止,我已经尝试了堆栈溢出上的所有方法和例程,以使TTS使用lang的语音值:"hi-IN",名称:"Google हिन्दी" voiceURI:"Google हिन्दी",但到目前为止没有运气。 我在getVoices((数组中显示的21种语言列表中观察到的一件事 Microsoft 大卫桌面 - 英语(美国(和 Microsoft Zira 桌面 - 英语(美国( 将本地服务属性设置为 true。大卫的默认值为 true。其余所有 19 个条目都将两个值都设置为 false。这是没有得到所需的语言(印地语(语音的原因吗?是否需要任何其他设置或插件?任何帮助意愿将不胜感激。
我想,我遇到了这个问题。Windows系统应具有所需的语言以及安装的语音。否则它将不起作用。我在从设置安装语言时遇到一些问题,但一旦完成并成功测试,就会更新。
下面是一个基本示例:
// Load voices
let voices = [];
if (speechSynthesis.onvoiceschanged !== undefined) {
speechSynthesis.onvoiceschanged = () => {
voices = speechSynthesis.getVoices()
};
}
voices = speechSynthesis.getVoices();
// Function to build and speak utterance
const speak = () => {
const msg = new SpeechSynthesisUtterance('1, 2, 3');
msg.voice = voices.find(v => v.lang === 'hi-IN');
msg.lang = 'hi-IN';
msg.onerror = (e) => {console.log('Error', e)};
speechSynthesis.cancel();
speechSynthesis.speak(msg);
}
// Speak upon clicking button
document.addEventListener('DOMContentLoaded', () => {
document.querySelector('#speak').addEventListener('click', () => {
speak();
});
});
<!DOCTYPE html>
<html>
<head>
<title>57990014</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="57990014.js"></script>
</head>
<body>
<div>
<button type="button" id="speak">Speak</button>
</div>
</body>
</html>
它会说英语吗?尝试使用此修改后的朗读功能:
const speak = () => {
const msg = new SpeechSynthesisUtterance('1, 2, 3');
msg.onerror = (e) => {console.log('Error', e)};
speechSynthesis.cancel();
speechSynthesis.speak(msg);
}