目前正在研究在 javascript 中使用 SAPI 对象将一些文本渲染为语音的实现。
我有基本代码,其工作原理如下:
VoiceObj = new ActiveXObject("Sapi.SpVoice");
VoiceObj.Speak("hello world");
我现在正在寻找一种方法来更改用于 TTS 的语音。通过在线查看 SAPI 文档,我成功获得了一个包含可用语音的对象,并且可以通过索引选择它们。
voices = VoiceObj.GetVoices();
VoiceObj.Voice = voices.Item(1);
console.log(VoiceObj.Voice.GetDescription());
这将正确地拉回语音,并在注销时给出语音的名称。当我在更改语音后尝试拨打
.Speak
时,问题就出现了。 JavaScript 只会抛出 Automation server can't create object
错误并且听不到任何语音。
这是改变声音的正确方法吗?我找不到任何其他可用的方法来实现这一点。
var voiceObj = new ActiveXObject("Sapi.SpVoice");
//voiceObj.Speak("hello world");
var voices = voiceObj.GetVoices();
var i,n=voices.Count;
var v; //VoiceObj.Voice
for(i=0; i<n; i++){
console.log("Item "+i);
var v=voices.Item(i);
console.log(v.GetDescription());
}
var voiceObj = new ActiveXObject("Sapi.SpVoice");
//voiceObj.Speak("hello world");
var voices = voiceObj.GetVoices();
var i,n=voices.Count;
var v; //VoiceObj.Voice
for(i=0; i<n; i++){
console.log("Item "+i);
var v=voices.Item(i);
console.log(v.GetDescription());
}
你能把它做成.vbs吗