gTTS Python脚本在后台获取tcgetattr():设备的ioctl不适当

时间:2018-06-22 22:05:13

标签: python text-to-speech raspbian

我正在使用 gTTS for Python在树莓派3上开发应用程序:

from gtts import gTTS
import os
import threading


def greet_thread(word):
    tts_thread = threading.Thread(target = greet, args=[word])
    tts_thread.start()
def greet(word):
    tts = gTTS(text=word, lang='es')
    tts.save("words.mp3")
    print 'Reproduciendo audio'
    os.system("mpg321 -q presilence.mp3")
    os.system("mpg321 -q words.mp3")

如果我直接从外壳运行python脚本,这将非常有效。但是,如果我使用以下命令在后台执行python脚本:

python -u script.py > log.txt 2>&1 &

我在日志中收到此错误:

tcgetattr(): Inappropriate ioctl for device

,不知道为什么。我认为这是从后台进程调用的方式,但不知道如何解决。感谢您的关注和帮助

1 个答案:

答案 0 :(得分:1)

问题在于该程序需要使用执行GUI的同一用户来执行。因此,如果要在命令外壳中执行它,请避免使用“ root”用户。

就我而言,我也需要程序在启动时执行。所以我用“自动启动”代替了crontab来解决了这个问题

  1. 导航到〜/ .config / lxsession / LXDE-pi
  2. nano自动启动
  3. 编辑文件:

    @lxpanel --profile LXDE-pi

    @pcmanfm --desktop --profile LXDE-pi

    //您的script.sh

    //或@python script.py

    @xscreensaver-不飞溅

    @ point-rpi

  4. 保存并退出

  5. 重新启动