Sub SpeakWithDelay(ts As TTS, PreDelayMs As Int, Text As String, PostDelayMs As Int)
Dim sp As NativeObject
sp = sp.Initialize("AVSpeechUtterance").RunMethod("alloc", Null).RunMethod("initWithString:", Array(Text))
sp.SetField("preUtteranceDelay", PreDelayMs / 1000)
sp.SetField("postUtteranceDelay", PostDelayMs / 1000)
sp.SetField("rate", ts.SpeechRate)
sp.SetField("pitchMultiplier", ts.Pitch)
Dim voice As NativeObject
voice = voice.Initialize("B4IObjectWrapper").RunMethod("getMap:", Array(ts)).RunMethod("objectForKey:", Array("voice"))
If voice.IsInitialized Then
sp.SetField("voice", voice)
End If
Dim no As NativeObject = ts
no.RunMethod("speakUtterance:", Array(sp))
End Sub