我正在創建一個基於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身份運行此腳本? 另外,是否有另一種方法讓我的紅寶石腳本做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當中
問題是你爲什麼要以root身份運行這個腳本。 pulseaudio正在用戶空間中運行。你應該爲root運行它,或者更好地運行你的腳本作爲用戶。如果腳本在整個文件系統中檢測到新文件,並且想要大聲說出來,則無法阻止您從自己的用戶運行該文件 –
腳本是否應該以根用戶身份運行,但root用戶有當非root用戶沒有問題時,會遇到alsa問題。 –
我的腳本需要root權限它的一個基本腳本,提醒我文件更改然後掃描它的簽名L1k3 an AntiVirus;> –