如何停止所有 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();
}
希望对你有用!
我刚才用 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();
}
希望对你有用!