【发布时间】:2019-07-24 15:54:34
【问题描述】:
为了本着this tutorial 的精神对有声读物的语音施加更大的控制,尽管我没有完全遵循它,但我尝试发送较小的字符串片段,例如单独的块中的短语。语音合成器将每个话语排入队列并一个接一个地说出它们。从理论上讲,这应该可以让您更好地控制,让语音听起来不那么机械化。
我可以让合成器按顺序说出这些块,但是每个块之间有很长的延迟,所以这听起来比同时发送所有文本要糟糕得多。
有没有办法加快排队速度,让话语一个接一个地说出,没有延迟?
将属性:utt.preUtteranceDelay 和 utt.postUtteranceDelay 设置为零秒似乎没有任何效果
这是我的代码:
phraseCounter = 0
func readParagraph(test: String) {
let phrases = test.components(separatedBy: " ")
for phrase in phrases {
phraseCounter = phraseCounter+1
let utt = AVSpeechUtterance(string:phrase)
let preUtteranceDelayInSecond = 0
let postUtteranceDelayInSecond = 0
utt.preUtteranceDelay = TimeInterval.init(exactly:preUtteranceDelayInSecond)!
utt.postUtteranceDelay = TimeInterval.init(exactly:postUtteranceDelayInSecond)!
voice.delegate = self
if (phraseCounter == 2) {
utt.rate = .8
}
voice.speak(utt)
}
}
【问题讨论】:
标签: ios swift avfoundation avspeechsynthesizer