如果不想调用第三方的语音包,就可以用以下方法实现,只不过原生API生成语音确实有点僵硬,isIe的方法是判断当前浏览器是否有ActiveXObject 对象,ActiveXObject 一般情况下是只有IE浏览器才有的,如果有就实例化一个对象,调用Speak方法就可以了;如果没有就用SpeechSynthesisUtterance这个HTML5新增的API来操作。
具体代码如下,在使用的地方直接调用playVoice()方法就可以了。
function isIe() {
if (!!window.ActiveXObject || "ActiveXObject " in window) {
return true
} else {
return false
}
}
function playVoice() {
let msg = '这是一个文字转语音的demo'
console.log(isIe())
if (isIe()) {
let voiceObj = new ActiveXObject("Sapi.SpVoice")
voiceObj.Rate = -1
voiceObj.Volume = 60
voiceObj.Speak(msg, 1)
} else {
let speakMsg = new SpeechSynthesisUtterance(msg)
speakMsg.rate = 1
speakMsg.pitch = 1.5
window.speechSynthesis.speak(speakMsg)
}
}