Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Pausenlänge zwischen 2 Sätzen steuern
#1
Hallo liebes Forum,

wie schon gepostet erzeugt der beiliegende Code  aus der Stringzeichenfolge str1 eine Audiodatei im wav-Format.
Doch wie steuere ich die Pausenlänge zwischen den beiden Sätzen?

Dies ist der erste Satz. >> Pause nach Satzende << Dies ist der zweite Satz.


Code:
Sub Erzeugen_einer_WaveDatei()
Dim str1 As String, oFileStream, oVoice
str1 = "Dies ist der erste Satz. Dies ist der zweite Satz."
Set oFileStream = CreateObject("SAPI.SpFileStream")
oFileStream.Format.Type = 39
oFileStream.Open "C:\Work\" & "Audio" & ".wav", 3
Set oVoice = CreateObject("SAPI.SpVoice")
'Individuelle Einstellung, je nach vorhandenen Sprachmodulen
Set oVoice.Voice = oVoice.getvoices.Item(1)
Set oVoice.AudioOutputStream = oFileStream
oVoice.Speak str1
oFileStream.Close
End Sub
Antworten Top
#2
Hi,

(22.03.2017, 16:30)Josefine Baker schrieb: Doch wie steuere ich die Pausenlänge zwischen den beiden Sätzen?

Dies ist der erste Satz. >> Pause nach Satzende << Dies ist der zweite Satz.

vielleicht, indem du die beiden Sätze als getrennte Strings übergibst und das Makro zwei Mal aufrufst mit einer Wartezeit dazwischen?
Antworten Top
#3
Hallöchen,

der Punkt ist eventuell, wie man eine Wartezeit programmiert. Ich habe hier mal meinen Test der Unterschiede von zwei Varianten, Sleep und Application.Wait. Da kann man sich das passende raus nehmen.

Code:
' Auslösung einer Wartezeit,
' Vergleich API und VBA Application
' Deklarierung der API-Funktion
Private Declare Sub Sleep _
       Lib "kernel32" (ByVal dwMS As Long)
'
' Deklarierung der API-Funktion GetTickCount
' zusätzlich im Beispiel zur Prüfung der Dauer !
Private Declare Function GetTickCount _
       Lib "kernel32" () As Long
'
Sub Beispiel2a()
' Argumente der API-Funktion Sleep
' Dauer in Millisekunden
'Variablendeklaration
'Long
Dim loStartTime As Long
 'Startzeit aus System holen
 loStartTime = GetTickCount
 'zwei Sekunden warten
 Sleep 1200
 'Laufzeitmeldung
 MsgBox "Laufzeit Beispiel2a: " & _
         GetTickCount - loStartTime & _
         " Millisekunden"
End Sub
'
Sub Beispiel2b()
' VBA-Funktion Application.Wait
'Variablendeklaration
'Long
Dim loStartTime As Long
 'Startzeit aus System holen
 loStartTime = GetTickCount
 'zwei Sekunden warten
 Application.Wait (Now() + TimeValue("00:00:02"))
 'Laufzeitmeldung
 MsgBox "Laufzeit Beispiel22b: " & _
        GetTickCount - loStartTime & _
        " Millisekunden"
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo André,

vielen Dank für Dein Interesse an meiner Frage. Die Sleep und die Application-Methode sind mir beide bekannt. Aber ich kann mir beim besten Willen nicht vorstellen, wie es damit funktionieren könnte.
Der Ausgabestream (Sprachausgabe) wird ja sofort in die Sprachaufnahme umgeleitet und dann als wave Datei ausgegeben. Von "außen" sehe ich da keine Möglichkeit, wie ich da etwas anhalten,
stoppen oder verzögern könnte. Ich stelle mir vor, dass eine mögliche Lösung irgendwie mit den Funktionen und Methoden der im Code auftauchenden Objekte gelöst werden könnte.
Leider finde ich dazu im gesamten Netz nichts bzw. nichts was funktioniert (hat). Das Thema ist sehr schwierig.
Antworten Top
#5
Hallo Josefine,

das geht, wenn Du die zwei Sätze in zwei Audios tust.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
@ André

Zitat:... das geht, wenn Du die zwei Sätze in zwei Audios tust.

Das ist ja gerade nicht möglich! Es geht letztendlich doch darum, eine beliebige Anzahl von Sätzen, die durch eine frei programmierbare
Pausenlänge voneinander getrennt sind, als Sprache  in eine Wav-Datei zu schreiben. Im Gegensatz zu Dateien im MP3-Format kann man Wav-Dateien
ja nicht so einfach aneinanderheften. Da bei den MP3 Dateien in den Headerdaten ja auch die Abspiellänge steht, ist dies bei Wav Dateien doch etwas
anders. Deshalb sollen hier alle Daten bzw. Sätze, samt einer beliebig wählbaren Pausenlänge als Audio in eine Wav-Datei geschrieben werden.

Wie gesagt, es ist schwer.
Antworten Top
#7
Hallöchen,

dann würde ich entsprechend lange "Pausenfüller" verwenden...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Hallo André,


Zitat:dann würde ich entsprechend lange "Pausenfüller" verwenden...


Du bist ja ein Genie! Hab ich gemacht. Jetzt funktioniert es perfekt.
Thumbs up und Danke.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste