2012-03-25 3 views
1

ではありません。これは、この質問の外れた問題です:flac: "ERROR: input file has an ID3v2 tag" (it doesn't)。私は最初の問題を解決しましたが、それは私が持っていた1つの問題を解決しなかったので、ここで別にそれを紹介します。JavaがRubyスクリプトを実行中にエラーを受け取りました。端末は

私は音声ファイルを(近似した)テキストに変換するためにspeech2textというRubyの宝石を使用しています。コマンドラインで呼び出すとうまくいきます(Mac Terminal)。ただし、次の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 

私はルビー、ジャワによるライブラリの故に私の軽量使用について何も知りません。私はここで何が起こっているのかは分かりませんが、ターミナルから全く同じ方法で実行されたときに動作することがわかります。誰かがこれを引き起こしているかもしれない考えを持っていますか?

+0

Hmm。パスtmp/audio ...は、実際にはJava Eclipseプロジェクトのフォルダ内にあります。それは他のプログラムのために働いたが、正しいかもしれない - それはRubyが歓迎ではないかもしれないということかもしれない。私はそれを確認します、ありがとう! – mtrc

+0

OK、完全なパスが機能しませんでした。私は間違った道でそれを走らせることをテストしました、そして、それはおそらくそれを排除することができるので、別のエラーを投げました。 – mtrc

答えて

0

また、端末を捨てて、JRubyを試すこともできます。これは通常のRuby VMと同じくらい速く、Javaとの統合が容易です。

+0

今、考えがあります。素晴らしいライブラリを見て、私は見てみましょう。ありがとう! – mtrc

+0

これはそれ自体が困難であることが証明されています。 speech2textは宝石です(私は信じています)が、私はRubyにはあまりにも不自然なので、実行するために必要なJavaコードの記述方法はわかりません。 'irb'ではサンプルRubyコードを実行できますが、Rubyスクリプトを実際に作成すると初期インポートを認識できないため、さらに複雑です。挫折! – mtrc

+0

私はいくつかのより良いリソースを見つけました。これが道のりだと私は言いたいと思います。私は元の問題を解決することはできませんが、この答えは私に解決策をもたらしました。ありがとう! – mtrc

0

jslint.js(node.js用)を実行しようとすると、同様の問題が発生しました。私は実際にbashを最初に実行した方がいいですし、そのように私のコマンドで書くことはできましたが、それでも私が思い出したように問題がありました。

基本的に問題は、使用可能な環境設定がロードされていない場合、Javaでの実行が失敗することです。これは解決すべき厳しいものです。

+0

私は実際にターミナルを走らせ、そのように物をポンピングするというアイデアが気に入っています!どのように恐ろしい、ちょっと、しかしそれが動作すれば私はそれを試してみましょう! – mtrc

+0

これは難しいことですが、理論的にはうまくいきましたが、プロセスによって開始されたプロセスのストリームを取得する方法はありません。 – mtrc

関連する問題