在iOS 16 beta中,AVSpeechSynthesisVoice.speechVoices()可能会返回空数组。这是因为Apple在此版本中对AVSpeechSynthesisVoice类进行了更改。
为了解决这个问题,使用以下代码:
if #available(iOS 16.0, *) { let voices = [ AVSpeechSynthesisVoice(identifier: AVSpeechSynthesisVoiceIdentifierAlex), AVSpeechSynthesisVoice(identifier: AVSpeechSynthesisVoiceIdentifierSamantha), AVSpeechSynthesisVoice(identifier: AVSpeechSynthesisVoiceIdentifierVictoria), AVSpeechSynthesisVoice(identifier: AVSpeechSynthesisVoiceIdentifierKaren) ] speechSynthesizer = AVSpeechSynthesizer() speechSynthesizer.delegate = self } else { let voices = AVSpeechSynthesisVoice.speechVoices() speechSynthesizer = AVSpeechSynthesizer() speechSynthesizer.delegate = self }
这样,如果运行在iOS 16 beta或更高版本,则使用该数组中列出的语音合成声音。否则,就使用AVSpeechSynthesisVoice.speechVoices()方法来获取系统可用的语音合成声音。
请注意,以上代码仅为示例。可以根据需要添加更多语音合成声音,并根据需要调整代码。