java批处理时间间隔_在Java中运行连续批处理

我有一个批处理文件,它执行收听麦克风并将其转换为文本的操作(我正在使用口袋狮身人面像).

我用来运行批处理文件的命令是pocketsphinx_continuous.exe -dict< dict name> -lm -hmm.批处理文件启动并继续监听麦克风.每当我们说完一个句子时,它会在命令提示符下将其转换为文本.由于这是持续运行,我们通过Ctrl-C终止此任务.

我试图将其变成一个独立的Java应用程序.我想通过Java运行这个批处理文件,所以我使用了所有参数的Runtime.getRuntime().exec(“cmd / c start pocketsphinx_continuous.exe …”).但奇怪的是,它在单独的命令提示符中启动批处理,但会立即退出.我尝试使用process.waitfor(),但它只是开始执行批处理然后终止.我没有调用process.destroy,所以我无法弄清楚它为何退出批处理过程.

另一个问题是,由于批处理文件连续运行,在每个口语句子被转录后,我希望在我的Java应用程序中获得输出.我知道我可以将批处理重定向到一个文件然后读取文件,只是想知道是否有更直接的过程.你能不能帮我弄清楚我犯了什么错误.

解决方法:

如果它立即退出,您可能需要获取退出代码(Process.waitFor())并检查错误流中的错误日志.

此外,如果您可以发布一些代码,我们可能会提供帮助.通常,这些问题是由于路径或命令字符串配置不正确造成的.

可能的解决方法是使用Java 1.5中的ProcessBuilder:

// Note the lack of "cmd \c" - you shouldn't need to run it in a cmd window!

ProcessBuilder pb = new ProcessBuilder("pocketsphinx_continuous.exe",

"dict", "1121.dic",

"-lm", "1121.lm",

"-hmm", "hub4/hmm");

Process p = pb.start();

// TODO for you:

// 1. Create Threads to handle the input

// 2. Store the Process instance so that you can call p.destroy() later.

// 3. If interested, have a Thread doing p.waitFor() to get the exit code.

正如Joachim Sauer在评论中提到的那样,Javaworld article解释了许多与Process API相关的问题,因此请仔细阅读.我没有机会将JDK7中的改进发挥到Process API,而且看起来甲骨文正在为JDK8(JEP 102)再次改进它.

标签:runtime-exec,sphinx,java,cmusphinx

来源: https://codeday.me/bug/20190902/1794029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值