I am using AVSpeechSynthesizer to speak some message in SwiftUI. Below is my View:
let speechSynthesizer = AVSpeechSynthesizer()
var body: some View {
ScrollView{
VStack {
displayImage()
Spacer()
displayClassifyingOrError()
if !isClassifying {
displayClassifiedItems()
.onAppear(){
for item in classifier.classifiedItems {
let message = "(item.item) should go to (item.bin)"
print("Speaking message: (message)")
speak(message)
}
}
}
Spacer()
backButton()
}
.onAppear {
classifyImage()
checkESP32Connection()
speak("test message")
}
.navigationBarBackButtonHidden(true)
}
}
func speak(_ text: String) {
let utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
speechSynthesizer.speak(utterance)
}
The problem is that the app is speaking the “test message” and also it is printing the correct message to be spoken (example: item x should go to y bin), but not speaking the message. I have tries adding delay but then also it is not working. Any idea what is going wrong?
3