gtts pause einbauen

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
toper3902

Hallo zusammen,
mit diesem Programm speichere ich den Inhalt einer Liste in einer Audiodatei.

Code: Alles auswählen

import sys

from gtts import gTTS


text = ["hallo","2","4"]
mytext = str(text)
print(mytext)
language = "de"
myobj = gTTS(text=mytext, lang=language, slow=False)
myobj.save("test.mp3")
Meine Frage:
Wie schaffe ich es dass zwischen den Wörtern, also den einzelnen Teilen der Liste eine Pause entsteht.

z.B.
Hallo (2 Sekunden pause) 2 ...
ArtooDetoo
User
Beiträge: 60
Registriert: Dienstag 4. Dezember 2018, 16:57

Mal ganz naiv: Hast du probiert da ein oder mehrere Leerzeichen zwischen einzufügen, wie z. B. ["Hallo', ' ', 'Welt']?
toper3902

Ja, habe sämtlich Zeichen ausprobiert:
/ ... \n "" u.s.w
Aberentweder passiert nichts oder das Zeichen wird ausgesprochen
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist erstmal ganz schoen schraeg, dass du einfach eine String-Repraesentation aus deiner Liste machst. Statt da durch

" ".join(text)

einen vernuenftigen String zu bauen.

Und dann muss man wohl SSML benutzen: https://cloud.google.com/text-to-speech/docs/ssml
toper3902

So wie ich das sehe ist das aber nicht für python gedacht oder?
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist fuer GTTS gedacht. Hast du es einfach mal *ausprobiert*? Python ist an dieser Stelle doch nur eine sehr duenne Schicht ueber Server-APIs von Google. Und die verstehen SSML. Welchen Grund hast du anzunehmen, das waere nicht so, wenn du Python benutzt, um damit zu reden?
toper3902

Naja, das ganze funktioniert nicht so wie es da steht. Vielleicht bin ich einfach zu blöd aber dass funktioniert so bei mir nicht
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was funktioniert nicht? Was machst du? Ich sehe nichts von SSML in dem Code den du bisher gepostet hast. Darum weiss ich auch nicht, woran es liegt. An dir, oder an der Python Bibliothek.
toper3902

Wie genau muss das ganze denn aussehen.
Könntest du mal einen Beispielcode posten?
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Also gerade noch behauptest du, du haettest etwas probiert. Und jetzt kannst du das nicht zeigen, aber ich soll dir was programmieren? Aha. Ich komm mir jetzt etwas verarscht vor, aber gut.

Code: Alles auswählen

mytext = """<speak>
  Here are <say-as interpret-as="characters">SSML</say-as> samples.
  I can pause <break time="3s"/>.
  I can play a sound
  <audio src="https://www.example.com/MY_MP3_FILE.mp3">didn't get your MP3 audio file</audio>.
  I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>.
  Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line.
  Or I can even speak in digits. The digits for ten are <say-as interpret-as="characters">10</say-as>.
  I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>.
  Finally, I can speak a paragraph with two sentences.
  <p><s>This is sentence one.</s><s>This is sentence two.</s></p>
</speak>"""
Diesen text statt deinem, den ich so aus der Seite, die ich dir genannt habe, kopiert habe, einfach mit gtts verarbeiten, so wie du es bisher schon machst.
toper3902

Dann ließt er mir aber nur die ganzen Zeilen vor und führt keine Befehle oder so aus.
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was soll das heissen? Macht er die Pause? Macht er keine Pause? Was genau liest er dir vor?

Du musst echt an deiner Art, hier Fragen zu stellen und Probleme zu beschreiben arbeiten. Wir sind nicht dazu da, dir deine Probleme ohne auch nur einen Hauch von Eigeninitiative deinerseits zu loesen.
toper3902

Er lißt mir alles vor also :
größerals break time istgleich ...
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Bibliothek scheint selbst tokenisieren zu wollen. Was du mal probieren kannst ist, zusaetzlich zu deinem Text einen dummen Tokenizer mitzugeben:

Code: Alles auswählen

myobj = gTTS(text=mytext, lang=language, slow=False, tokenizer_func=lambda text: [text])
toper3902

Da verändert sich nichts.
Er erkennt zwar den Befehl, aber es passiert nichts
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann hab' ich auch keine andere Idee mehr.
toper3902

Ok, trotzdem vielen Dank für den Versuch
Antworten