如何知道文本到语音任务是否已迅速完成

时间:2016-08-26 15:52:56

标签: swift

我有一个解析文本字符串的循环。除非一行以“<”开头该行以文本到语音阅读。

        for i in text {

            switch i.characters.first {

            case "<"? :

                print("<")

            default:

                readText(String(i))

                sleep(5)

            }

        }

所说的一些线路很短,而其他线路很长。我不想开始阅读一条线,除非之前已完成。如何检测线何时完成读取?

1 个答案:

答案 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")
    }

}