使用语音转文本功能,我可以轻松获得一个要朗读的标签。但我希望将话语 2 连接到话语。我希望先说出话语,然后在完成后立即说出话语 2。
let utterance = AVSpeechUtterance(string: dptext.text!)
let utterance2 = AVSpeechUtterance(string: dptext2.text!)
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
我认为处理这种情况的最简单方法是将两个字符串与space
组合在一起。
let combineString = dptext.text! + " " + dptext2.text!
let utterance = AVSpeechUtterance(string: combineString)
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
无需为要我希望先说出话语,然后在完成后立即说出话语 2。
说出的两个语句进行联接:要记住的最重要的事情是保留AVSpeechSynthesizer
实例,直到完成完整的语音。
let synthesizer = AVSpeechSynthesizer()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let utterance = AVSpeechUtterance(string: dptext.text!)
let utterance2 = AVSpeechUtterance(string: dptext2.text!)
synthesizer.speak(utterance)
synthesizer.speak(utterance2)
}
遵循此基本原理,您可以:
- 在说话时为话语添加前/后延迟。
- 让尽可能多的话语说出你想要的话语。
每个话语都将放入语音合成器队列中,并按接收顺序朗读。