如何以root用户身份运行ruby-espeak?

时间:2012-10-06 23:19:05

标签: ruby text-to-speech alsa

我正在创建一个基于ruby的应用程序,我希望它能说一些文字。到目前为止我正在使用espeak:

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

当我以普通用户身份运行时,它可以工作,但我需要这个脚本以root身份运行。当它以root身份运行时,我得到:

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(文本转语音)吗?

补充:我甚至尝试过节日,即使是普通用户也没有任何反应。

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

(宝石清单)红宝石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当中

2 个答案:

答案 0 :(得分:1)

这个技巧有点俗气,但是如果你拥有一台Mac就行了。

make可以使用'say'命令从命令行说出来。人机工程学;

$ say 'hello world' 

会让电脑说出这些话。此命令也可以通过Ruby发送;

%x( say 'hello world' ) 

答案 1 :(得分:0)

找到解决方案运行su而不是sudo,它可以工作(“espeak”) 感谢您的帮助StackoverFlow社区;>