Я полагаю, вы можете использовать метод делегата, чтобы сказать, когда AV-речь закончилась
extension MyViewController: AVSpeechSynthesizerDelegate {
func speechSynthesizer(synthesizer: AVSpeechSynthesizer, didFinishSpeechUtterance utterance: AVSpeechUtterance) {
print("speech finished")
}
}
Но как вы можете определить, продолжается ли речь и не закончена ли * * ?
Прямо сейчас я начинаю речь с
voice.speak(utt)
//do something
Я хотел бы что-то сделать, пока человек говорит before
Они заканчивают. Просто поставить строку, сделать что-то ниже voice.speak(utt)
, похоже, не работает. Я думаю, что это связано с состоянием гонки. Я не могу быть уверен, что он сработает, как только сработает голос, и до того, как сработает метод делегата после завершения произнесения.
Блок завершения не поможет, потому что я хочу сделать что-то до того, как произнесено высказывание. Так как же я могу что-то сделать, когда произнесено высказывание, другими словами, начать что-то делать в тот самый момент, когда начинается высказывание?