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

How can I stop all VBS Text-To-Speech?

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

一切正常,但用户键入响应的速度比文字转语音完成说话的速度快。这会导致备份,当用户输入消息时,机器人的响应只会被添加到 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(只显示相关代码)

try {
    //textSpeech.vbs is executed with sayString as an argument
    Runtime.getRuntime().exec( "wscript \"" + path + "\" \"" + sayString + "\"");
} catch( IOException e ) {
    System.out.println(e);
    System.exit(0);
}

VBS 只有一个线程,这意味着一旦您启动了一个进程,处理器就会停在该行并且不会继续处理您的代码,直到该进程完成。

在vbs里面你什么也做不了。但是,幸运的是,您可以在 java.

进行此操作

当用户再次开始输入时,您从 java:

终止运行时进程
Process rp = Runtime.getRuntime()
             .exec( "wscript \"" + path + "\" \"" + sayString + "\"");

// whenever user starts typing{
if(user.isTyping()){
  rp.destroy();
}

希望对你有用!