Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何停止所有VBS文本到语音转换?_Java_Vbscript_Text To Speech - Fatal编程技术网

Java 如何停止所有VBS文本到语音转换?

Java 如何停止所有VBS文本到语音转换?,java,vbscript,text-to-speech,Java,Vbscript,Text To Speech,不久前,我用java制作了一个非常简洁的聊天机器人。最近,我发现我可以使用VBS大声朗读文本。我用我的发现让聊天机器人真正说话,而不是仅仅打印响应 这一切都很好,但用户键入响应的速度比“文本到语音”完成对话的速度要快。这会导致备份,当用户输入消息时,bot的响应只会被添加到tts队列中,并且在第一个响应完成读取之前不会被说出 调用读取响应的脚本时,我希望在读取响应之前停止所有语音。我不知道该怎么做,非常感谢你的帮助。谢谢 textSpeech.vbs //I want all speech to

不久前,我用java制作了一个非常简洁的聊天机器人。最近,我发现我可以使用VBS大声朗读文本。我用我的发现让聊天机器人真正说话,而不是仅仅打印响应

这一切都很好,但用户键入响应的速度比“文本到语音”完成对话的速度要快。这会导致备份,当用户输入消息时,bot的响应只会被添加到tts队列中,并且在第一个响应完成读取之前不会被说出

调用读取响应的脚本时,我希望在读取响应之前停止所有语音。我不知道该怎么做,非常感谢你的帮助。谢谢

textSpeech.vbs

//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();
}