在使用AVSpeechSynthesizer时,需要确保在主线程上调用startSpeaking方法。如果startSpeaking方法在后台线程上被调用,它可能会无法正常工作。因此,可以使用以下方法确保在主线程上调用startSpeaking方法:
DispatchQueue.main.async {
// 在主线程上调用startSpeaking方法
synthesizer.speak(utterance)
}
在上面的代码示例中,我们将startSpeaking方法放在了DispatchQueue.main.async块中,以确保它在主线程上调用。这可以帮助我们避免AVSpeechSynthesizer不稳定的问题。