gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:05 27 4
gpt4 key购买 nike

我知道你可以使用委托(delegate)方法来判断 AV 语音何时结束

 extension MyViewController: AVSpeechSynthesizerDelegate {

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

}

但您如何判断语音是否正在进行且尚未结束?

现在,我开始演讲

voice.speak(utt)
//do something

我想在对方说话时结束之前做点什么。仅仅在 voice.speak(utt) 下方放一行 do something 似乎不起作用。我认为这是由于竞争条件。我不能确定它会在语音被触发后立即触发,并且在话语完成后委托(delegate)方法触发之前触发。

完成集团无济于事,因为我想在话语完成之前做一些事情。那么我怎样才能在话语发生时做某事,换句话说,在话语开始的准确时刻开始做某事?

最佳答案

how can you tell if speech is ongoing...

从 AVSpeechSynthesizer 实例的 isSpeaking 方法检索指示合成器是否正在说话的 bool 值。

...and has not yet finished?

通过 AVSpeechSynthesizerDelegate protocoldidStart 方法检测开始这将提供有关的话语。

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

All these elements应该可以帮助您根据需要从 AVSpeech 和 AVUtterance 中检测正在进行的语音

关于ios - 在 Swift 中检测来自 AVSpeech 和 AVUtterance 的正在进行的语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com