2

Ruby ベースのアプリケーションを作成していますが、テキストを読み上げたいと思っています。これまでespeakを使用しています:

fork{exec ("espeak 'New file located #{timelog.hour} #{timelog.min}' \" > /dev/null")}

通常のユーザーとして実行すると機能しますが、このスクリプトをルートとして実行する必要があります。ルートとして実行すると、次のようになります。

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

このスクリプトを root として実行できないのはなぜですか? また、Ruby スクリプトに TTS (Text To Speech) を実行させる別の方法はありますか?

追加: Festival を実行しても、通常のユーザーでも何も起こりませんでした。

require "rubygems"
require "festivaltts4r"
"I'm talking".to_speech

(宝石一覧) ruby​​ 1.9

bigdecimal (1.1.0)
clickatell (0.8.2)
espeak-ruby (0.4.0)
festivaltts4r (0.2.0)
ffi (1.1.5)
hoe (3.1.0)
io-console (0.3)
json (1.5.4)
minitest (2.5.1)
nice-ffi (0.4)
rake (0.9.2.2)
rdoc (3.9.4)
ruby-sdl-ffi (0.4)
rubygame (2.6.4)
sms_fu (1.1.2)
tts (0.3.0)

OS:OpenSuse

4

2 に答える 2

1

このトリックは少し安っぽいですが、Mac を所有している場合はうまくいくはずです。

make は、'say' コマンドを使用して、コマンド ラインから何かを言うことができます。エルゴ;

$ say 'hello world' 

コンピューターにその言葉を言わせます。このコマンドは、Ruby から次の方法で送信することもできます。

%x( say 'hello world' ) 
于 2013-09-25T14:36:27.363 に答える
0

解決策が見つかりました sudo の代わりに su を実行すると、動作します (「espeak」)。

于 2012-10-07T12:10:48.977 に答える