2014-09-12 66 views
0

我想從Ruby運行PocketSphinx。我所做的是從Ruby運行一個終端命令。像這樣:不能從Ruby運行PocketSphinx

cmd = "pocketsphinx_continuous \ 
     -lm /usr/local/share/pocketsphinx/model/lm/en_US/hub4.5000.DMP \ 
     -dict /usr/local/share/pocketsphinx/model/lm/en_US/cmu07a.dic\ 
     -infile ~/Path/FileName.wav" 
output = `#{cmd}` 
puts output 

如果有文件輸入,這會很好地工作。但是,當我嘗試處理流式音頻時,例如從麥克風講話時,我只刪除了「-infile」行。在這種情況下,它不再起作用。 PocketSphinx進程,但它通常不會像「Ready」一樣顯示。

僅供參考,我使用的是Ubuntu 14.04和Ruby 2.0。

你對發生了什麼有什麼想法嗎?

回答

1

這是因爲閱讀micrphone輸入假定您應該手動結束該過程。有兩種選擇:在超時時向進程發送SIGINT或從SWIG接口編譯Ruby庫。您可以通過pocketsphinx瞭解更多關於Python interface的後期閱讀內容,以及看看sources

此外,請參閱此comprehensive answer關於在Ruby中使用CMU Sphinx。

+0

謝謝亞歷山大!我通過使用exec(cmd)而不是#{}來解決這個問題,並且它工作正常。但我仍然想知道「發送SIGINT」在超時時處理的含義。有沒有更具體的指導?感謝名單! – 2014-10-01 21:46:09