【发布时间】:2019-06-06 13:41:04
【问题描述】:
我正在尝试使用 isSpeaking 属性来完成此操作。但是,它在说出第一个话语后返回 false,因此过早触发所需的代码。
根据Apple Dev DocumentationisSpeaking:
如果合成器正在说话或有话语排队,则返回 true 说话,即使它目前已暂停。如果 合成器已完成其队列中的所有话语,或者如果它 还没有发言权。
所以,我真的不明白为什么当有更多人排队时,它会在一次发言后返回 false。
我也尝试过使用 didFinish utterance 方法,但它也会在第一次发声后触发代码。
有没有办法知道 AVSpeechSynthesizer 何时完成所有排队的话语,如下面的代码示例所示?我是编程新手,所以任何帮助实现这一点都会很棒。谢谢!
var i = 0
while i < array.count {
let utterance = "Let's talk about \(array[i])."
i += 1
speechSynthesizer.speak(utterance) }
【问题讨论】: