Registriert seit: 01.03.2016
Version(en): 2010
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
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
(22.03.2017, 17: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?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 01.03.2016
Version(en): 2010
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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 01.03.2016
Version(en): 2010
@ 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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 01.03.2016
Version(en): 2010
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.