Я реализовал следующий код для проверки вашей проблемы (тестирование под Mojave 10.14.4
, iOS 12.2
, Xcode 10.2.1
и swift 5.0
) :
class SpeechSynthesis: UIViewController {
var synthesizer = AVSpeechSynthesizer()
var playQueue = [AVSpeechUtterance]()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
for i in 1...10 {
let stringNb = "number " + String(i) + " of the speech synthesizer."
let utterance = AVSpeechUtterance(string: stringNb)
playQueue.append(utterance)
}
for utterance in playQueue {
synthesizer.speak(utterance)
}
}
@IBAction func pauseButton(_ sender: UIButton) {
if (synthesizer.isSpeaking == true) {
if (synthesizer.pauseSpeaking(at: .immediate) == true) {
print("PAUSE")
} else {
print("P.R.O.B.L.E.M. when pausing.")
}
}
}
@IBAction func resumeButton(_ sender: UIButton) {
if (synthesizer.isPaused == true) {
if (synthesizer.continueSpeaking() == true) {
print("CONTINUE")
} else {
print("P.R.O.B.L.E.M. when resuming.")
}
}
}
}
Я заметил еще однупроблема с границей .word
, которая не всегда останавливается при срабатывании, но когда это ограничение изменяется на .immediate
, все возобновляется с того места, где оно было приостановлено.
Однако, когда оноредко делает паузу с границей .word
, она всегда возобновляет с того места, где она также остановилась.
Я не знаю, откуда возникла ваша проблема, но с конфигурацией, упомянутой выше, и этим кодомфрагмент, синтезатор речи возобновляет работу с того места, где он остановился .