gTTS Ausführungszeit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
m.g.o.d
User
Beiträge: 75
Registriert: Samstag 4. April 2020, 13:17

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

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")
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du diesen Berechnungschritt schon beendet haben willst, wenn es Punkt 14 Uhr ist, dann musst du eben zb 10 Sekunden vorher starten, so dass du sicher bist, dass deine Funktion vorher zurueckkehrt. Und vor dem abspielen so lange warten, bis es 14:00 ist, um die zeitliche Varianz abzufedern. Oder du berechnest die ganzen Texte schon vor, dann kannst du deine Zeit-Logik unangetastet lassen.
m.g.o.d
User
Beiträge: 75
Registriert: Samstag 4. April 2020, 13:17

__deets__ hat geschrieben: Samstag 20. Juni 2020, 16:17 Wenn du diesen Berechnungschritt schon beendet haben willst, wenn es Punkt 14 Uhr ist, dann musst du eben zb 10 Sekunden vorher starten, so dass du sicher bist, dass deine Funktion vorher zurueckkehrt. Und vor dem abspielen so lange warten, bis es 14:00 ist, um die zeitliche Varianz abzufedern. Oder du berechnest die ganzen Texte schon vor, dann kannst du deine Zeit-Logik unangetastet lassen.
Danke, du hast natürlich völlig recht. Das erstellte *.mp3 Objekt kann ich ja jederzeit aufrufen, es muss dann zuvor berechnet werden. Logisch, ich hab da zu kompliziert gedacht :-)

Merci! Problem gelöst
Antworten