Java 如何停止所有VBS文本到语音转换?
不久前,我用java制作了一个非常简洁的聊天机器人。最近,我发现我可以使用VBS大声朗读文本。我用我的发现让聊天机器人真正说话,而不是仅仅打印响应 这一切都很好,但用户键入响应的速度比“文本到语音”完成对话的速度要快。这会导致备份,当用户输入消息时,bot的响应只会被添加到tts队列中,并且在第一个响应完成读取之前不会被说出 调用读取响应的脚本时,我希望在读取响应之前停止所有语音。我不知道该怎么做,非常感谢你的帮助。谢谢 textSpeech.vbsJava 如何停止所有VBS文本到语音转换?,java,vbscript,text-to-speech,Java,Vbscript,Text To Speech,不久前,我用java制作了一个非常简洁的聊天机器人。最近,我发现我可以使用VBS大声朗读文本。我用我的发现让聊天机器人真正说话,而不是仅仅打印响应 这一切都很好,但用户键入响应的速度比“文本到语音”完成对话的速度要快。这会导致备份,当用户输入消息时,bot的响应只会被添加到tts队列中,并且在第一个响应完成读取之前不会被说出 调用读取响应的脚本时,我希望在读取响应之前停止所有语音。我不知道该怎么做,非常感谢你的帮助。谢谢 textSpeech.vbs //I want all speech to
//I want all speech to be stopped here
Dim sapi
Set sapi=CreateObject("sapi.spvoice")
//speaks the string passed to script
sapi.Speak Wscript.Arguments(0)
Chatbot.java(仅显示相关代码)
VBS只有一个线程,这意味着一旦您启动一个进程,处理器将停止在该行,并且在进程完成之前不会在代码中前进 在vbs内部,你什么都做不了。但是,为了我们的运气,您可以在java上实现这一点 当用户再次开始键入时,您将从java终止运行时进程:
Process rp = Runtime.getRuntime()
.exec( "wscript \"" + path + "\" \"" + sayString + "\"");
// whenever user starts typing{
if(user.isTyping()){
rp.destroy();
}
我希望它对你有用
Process rp = Runtime.getRuntime()
.exec( "wscript \"" + path + "\" \"" + sayString + "\"");
// whenever user starts typing{
if(user.isTyping()){
rp.destroy();
}