gTTS Ausführungszeit
Verfasst: Samstag 20. Juni 2020, 16:08
Hallo Zusammen,
ich habe folgendes Problem:
Die Funktion speak(text) braucht im Schnitt 5,7 Sekunden zur Ausführung. Ich habe nun die Anforderung, zwei Zeiten (Syszeit und die Zeit einer SQL Datenbank) miteinander zu vergleichen. Wenn beide gleich sind, soll die Funktion speak(text) aufgerufen werden.
Nun ist es aber so, wenn zum Beispiel die Uhrzeit 14.00.00 == 14.00.00 ist, wird zwar die Funktion genau um 14.00.00 aufgerufen, allerdings höre ich das Ergebnis eben (aufgerunden) erst 6 Sekunden später. Irgendwie gibt es für Windows nur gtts, wirkliche Alternativen dazu habe ich nicht gefunden. Für mich wäre es auch ok, wenn es eine andere Engine wäre, die mir das Ergebnis sofort ausgibt. Kennt ihr da was adäquates zu gtts?
Falls es doch gtts sein muss, wäre halt die Frage, wie ich es trotzdem bewerkstellige, dass die Funktion zweitversetzt ausgeführt wird. Ich habe mal an ein künstiches delay gedacht..aber das wird schnell zu kompliziert für mich. Oder gibt es vielleicht die Möglichkeit, die Funktion quasi vorzuladen, und dann ad hoc abzurufen und sofort das Ergebnis zu bekommen? Vielleicht als Thread oder so? Da wäre ich für eure Ideen sehr dankbar. VG, m.g.o.d
ich habe folgendes Problem:
Die Funktion speak(text) braucht im Schnitt 5,7 Sekunden zur Ausführung. Ich habe nun die Anforderung, zwei Zeiten (Syszeit und die Zeit einer SQL Datenbank) miteinander zu vergleichen. Wenn beide gleich sind, soll die Funktion speak(text) aufgerufen werden.
Nun ist es aber so, wenn zum Beispiel die Uhrzeit 14.00.00 == 14.00.00 ist, wird zwar die Funktion genau um 14.00.00 aufgerufen, allerdings höre ich das Ergebnis eben (aufgerunden) erst 6 Sekunden später. Irgendwie gibt es für Windows nur gtts, wirkliche Alternativen dazu habe ich nicht gefunden. Für mich wäre es auch ok, wenn es eine andere Engine wäre, die mir das Ergebnis sofort ausgibt. Kennt ihr da was adäquates zu gtts?
Falls es doch gtts sein muss, wäre halt die Frage, wie ich es trotzdem bewerkstellige, dass die Funktion zweitversetzt ausgeführt wird. Ich habe mal an ein künstiches delay gedacht..aber das wird schnell zu kompliziert für mich. Oder gibt es vielleicht die Möglichkeit, die Funktion quasi vorzuladen, und dann ad hoc abzurufen und sofort das Ergebnis zu bekommen? Vielleicht als Thread oder so? Da wäre ich für eure Ideen sehr dankbar. VG, m.g.o.d
Code: Alles auswählen
def speak(text):
tts = gTTS(text=text, lang='en')
filename = r"C:\Users\Marc\SINGLECHANNEL_ALARMING_TOOL\export.mp3"
tts.save(filename)
playsound.playsound(filename)
if os.path.exists(r"C:\Users\Marc\SINGLECHANNEL_ALARMING_TOOL\export.mp3"):
os.remove(r"C:\Users\Marc\SINGLECHANNEL_ALARMING_TOOL\export.mp3")