私は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: 実行ループは既に開始されています