2012-03-25 64 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