gTTS Python Script в фоновом режиме получает tcgetattr (): неподходящий ioctl для устройства

1

Я разрабатываю приложение на моем малине Pi 3, используя gTTS для Python:

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

и не знаю почему. Я думаю, так оно и называется из фонового процесса, но не знаю, как его решить. Спасибо за внимание и помощь

Теги:
raspbian
text-to-speech

1 ответ

1
Лучший ответ

Проблема в том, что программа должна быть выполнена с использованием того же пользователя, который выполняет GUI. Поэтому, если вы собираетесь выполнить его в командной оболочке, не используйте пользователя root.

В моем случае мне нужно, чтобы программа запускалась и при запуске. Поэтому я решил это, используя "автоматический старт" вместо crontab

  1. Перейдите к ~/.config/lxsession/LXDE-pi
  2. nano autostart
  3. Отредактируйте файл:

    @lxpanel --profile LXDE-pi

    @pcmanfm --desktop --profile LXDE-pi

    //ваш скрипт.sh

    //или @python script.py

    @xscreensaver -no-splash

    @Точка-RPI

  4. Сохранить и выйти

  5. перезагружать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню