2012-03-25 62 views
1

这是这个问题的分叉问题:flac: "ERROR: input file has an ID3v2 tag" (it doesn't)。我已经解决了最初的问题,但这并没有解决我遇到的一个问题,所以我将在此单独介绍它。Java接收到执行Ruby脚本的错误;终端不是

我使用称为speech2text的Ruby gem将音频文件转换为(近似)文本。在命令行上调用它可以正常工作(Mac终端)。但是,下面的Java代码:

String[] cmd = {"speech2text", "tmp/audio/pop-test-audio.wav"}; 

    ProcessBuilder builder = new ProcessBuilder(cmd); 
    builder.redirectErrorStream(true); 
    Process process = builder.start(); 

只接收来自过程流这回:

/Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_inspector.rb:50:in `initialize': undefined method `first' for nil:NilClass (NoMethodError) 
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_splitter.rb:77:in `new' 
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_splitter.rb:77:in `initialize' 
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_to_text.rb:15:in `new' 
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/lib/speech/audio_to_text.rb:15:in `to_text' 
from /Library/Ruby/Gems/1.8/gems/speech2text-0.3.4/bin/speech2text:11 
from /usr/bin/speech2text:19:in `load' 
from /usr/bin/speech2text:19 

我不知道什么红宝石,因此我的轻量级应用通过Java库的。我真的不知道这里发生了什么,但我知道它在终端以完全相同的方式执行时工作。有没有人知道可能会导致这种情况?

+0

嗯。路径tmp/audio ...实际上在Java Eclipse项目的文件夹中。它适用于其他程序,但你可能是对的 - 可能是Ruby不那么受欢迎。我会检查它,谢谢! – mtrc 2012-03-25 16:37:54

+0

好吧,完整路径无法使用。我测试了它在不正确的路径上运行,并且抛出了一个不同的错误,所以我们可以排除这个错误。 – mtrc 2012-03-25 16:40:55

回答

0

您也可以沟通终端并尝试JRuby。它与普通的Ruby VM一样快,并且更容易与Java集成。

+0

现在有一个想法。看起来很棒的图书馆,我会看看。谢谢! – mtrc 2012-03-25 18:43:25

+0

这本身已证明有困难。 speech2text是一个宝石(我相信),但我对Ruby非常不熟悉,我不知道如何编写必要的Java代码来执行它。 在'irb'中,我可以运行示例Ruby代码,但实际上编写一个Ruby脚本时,它无法识别最初的导入,所以还有其他复杂性。令人沮丧! – mtrc 2012-03-26 16:35:56

+0

我发现了一些更好的资源,我不得不说,我认为这是要走的路。虽然我无法解决原来的问题,但这个答案让我找到了一个解决方案。谢谢! – mtrc 2012-03-26 22:46:24

0

我有类似的问题试图运行jslint.js(对于node.js)。实际上我的确更好地运行bash,然后以这种方式在我的命令中打印文本,但即使如此,我还记得有些问题。

基本上问题是,如果没有加载可用的环境设置,用Java执行事情可能会失败。这可能是一个难以解决的问题。

+0

好的。我喜欢实际运行终端并通过这种方式抽取东西的想法!多么可怕,有点,但如果它的工作,我会尝试它! – mtrc 2012-03-25 16:41:14

+0

好的,这已经证明很困难 - 虽然理论上有效,但我无法弄清楚如何获得流程启动的流程的流(如果你明白我的意思),那么这可能不是选择。 – mtrc 2012-03-25 18:41:45