在Swift中检测来自AVSpeech和AVUtterance的正在进行的语音

时间:2019-03-18 02:45:39

标签: ios avspeechutterance

我收集到您可以使用委托方法来告诉AV语音何时结束

 extension MyViewController: AVSpeechSynthesizerDelegate {

    func speechSynthesizer(synthesizer: AVSpeechSynthesizer, didFinishSpeechUtterance utterance: AVSpeechUtterance) {
            print("speech finished")
        }

    }

但是您如何判断演讲是否正在进行并且 还没有结束?

现在,我以

开始讲话
voice.speak(utt)
//do something

我想在对方说before时说些什么,他们说完了。仅在voice.speak(utt)下方添加一行内容似乎无效。我认为这是由于比赛条件造成的。我不能确定它是在触发语音后立即触发,还是在发话完成之后在委托方法触发之前触发。

补全集团将无济于事,因为我想在话语完成之前做点什么。那么,如何在发声时做些事情,换句话说,就是在发声的确切时刻开始做某事?

1 个答案:

答案 0 :(得分:1)

  

您如何判断演讲是否正在进行...

从AVSpeechSynthesizer实例的isSpeaking方法中获取指示合成器是否正在讲话的布尔值。

  

...还没有完成?

借助AVSpeechSynthesizerDelegate protocoldidStart方法检测起点,该方法将提供相关的语音。

此外,如果您想确切知道发声的位置,请使用willSpeakRangeOfSpeechString协议的AVSpeechSynthesizerDelegate

All these elements应该可以帮助您根据需要检测来自AVSpeech和AVUtterance的语音