我有一个解析文本字符串的循环。除非一行以“<”开头该行以文本到语音阅读。
for i in text {
switch i.characters.first {
case "<"? :
print("<")
default:
readText(String(i))
sleep(5)
}
}
所说的一些线路很短,而其他线路很长。我不想开始阅读一条线,除非之前已完成。如何检测线何时完成读取?
答案 0 :(得分:4)
您应该使用AVSpeechSynthesizerDelegate
。
1:在viewDidLoad()
let synthesizer = AVSpeechSynthesizer()
synthesizer.delegate = self
2:扩展您的视图控制器以符合AVSpeechSynthesizerDelegate
协议并实现speechSynthesizer(_:didFinish:)
方法
extension MyViewController: AVSpeechSynthesizerDelegate {
func speechSynthesizer(synthesizer: AVSpeechSynthesizer, didFinishSpeechUtterance utterance: AVSpeechUtterance) {
print("speech finished")
}
}