0

私はPythonで楽しく運動するためのDIY仮想アシスタントを作成しています。スレッドで engine.say を使用し、メイン プログラムで再度使用しようとすると、問題が発生します。

私はすでに pyttsx ドキュメント (engine.stop()、engine.endLoop() など) から engine.endLoop() およびその他の可能なソリューションを使用しようとしましたが、それでも機能しませんでした。asyncio に関するいくつかの回答を見てきました。しかし、pipを使用するとインストールできず、問題が解決するかどうか確信が持てません。

機能:

def portport():

        ser = serial.Serial('COM4',9600)
        raw_data = ser.read(9)
        msg = str(raw_data[3:8])
        print msg
        ser.close()
        return msg

def Comm_Connection():

    print("CommConns started")

    while True:
        global conn

        try:
            conn, addr = SERVER.accept()
            Live_Conns.append(conn)

            Server_Send = "Connection established successfully"
            Server_Send = pickle.dumps(Server_Send)
            Live_Conns[-1].send(Server_Send)

            temp = conn.recv(1024)
            Server_Receive = pickle.loads(temp)

            Live_Name.append(Server_Receive)

            Connections = (Live_Name[-1], "Connected")

            engine.say(Connections)
            engine.runAndWait()

        except socket.error as socketerror:
            continue
        except socket.timeout:
            continue

「メイン」プログラム:

Server_Up = threading.Thread(target = Comm_Connection)
Server_Up.start()

while True:  
    engine = pyttsx.init()  

    time.sleep(7)
    engine.say("Goodmorning")
    engine.runAndWait() 

そして、私が得るエラー:

Raise RuntimeError('run loop already started')

RuntimeError: 実行ループは既に開始されています

4

2 に答える 2