Я уже два дня пытаюсь заставить работать определенный API Google. Были опробованы три различных проекта - один в Perl (который умер очень рано), один в Python (разбился и сгорел при последнем препятствии) и, наконец, один в Ruby. Ruby one на самом деле работает, когда вызывается из командной строки как стандартная команда, т. Е .:
speech2text somefile.wav
Это даже работает, если вы откроете irb
и вставите образец кода, найденный на сайте проекта:
require 'speech'
audio = Speech::AudioToText.new("i-like-pickles.wav")
puts audio.to_text.inspect
Однако файл Ruby .rb с указанным выше параметром не будет работать при выполнении с ruby -rubygems somescript.rb
. Это выходит с этим:
/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 script/test_s2t.rb:6
Попытка использовать двоичный файл командной строки speech2text
из Java в качестве процесса выполнения приводит к тому, что возвращается то же сообщение об ошибке. Оскорбительная строка, на которую он жалуется:
def initialize(file)
self.duration = Duration.new(`ffmpeg -i #{file} 2>&1`.strip.scan(/Duration: (.*),/).first.first)
end
Но идея о том, что там действительно есть проблема, мне кажется маловероятной, учитывая, что она прекрасно работает, когда выполняется либо в irb
, либо через двоичный файл на терминале.
Настоящая проблема здесь в том, что я вообще не знаю Ruby - я работаю на Java, и мне просто нужен этот API для работы. Тот факт, что он запускается в некоторых методах, говорит мне, что я, вероятно, установил его правильно, но если я не могу заставить работать скрипт .rb или заставить его работать внешне, я не могу понять, как его использовать. Мне порекомендовали JRuby, но это может быть слишком сложно для меня, так как кажется, что это потребует ручной установки гема ruby для JRuby, что я не знаю, как это сделать (или, по крайней мере, я не не думаю, что знаю, как это сделать!)
Любые советы по поводу сообщения об ошибке ядра приветствуются, но если вы видите явный шаг в сторону проблемы, дайте мне знать.
РЕДАКТИРОВАТЬ - Это была действительно проблема пути - по крайней мере, на первый взгляд. У Руби были проблемы с поиском нужных файлов, и в результате речь22xt / ffmpeg не получалась довольно неясной. Спасибо!