加入 2 个不同的标签进行文本到语音的转换 (swift3)

Join 2 different labels for text to speech conversion (swift3)

使用语音转文本功能,我可以轻松地读出一个标签。但我希望将 utterance2 加入 utterance。我希望先说 utterance,然后在完成后立即说 utterance2。

     let utterance = AVSpeechUtterance(string: dptext.text!)
     let utterance2 = AVSpeechUtterance(string: dptext2.text!)

     let synthesizer = AVSpeechSynthesizer()
     synthesizer.speak(utterance)

我认为处理这种情况最简单的方法是将两个字符串与space组合起来。

let combineString = dptext.text! + " " + dptext2.text!
let utterance = AVSpeechUtterance(string: combineString)
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)

I want utterance to be spoken first then when it is finished for utterance2 to be spoken right after.

没有必要将要说的两个话语连接起来:要记住的最重要的事情是保留您的AVSpeechSynthesizer实例,直到完整的语音完成.

let synthesizer = AVSpeechSynthesizer()

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    
    let utterance = AVSpeechUtterance(string: dptext.text!)
    let utterance2 = AVSpeechUtterance(string: dptext2.text!)
    
    synthesizer.speak(utterance)
    synthesizer.speak(utterance2)
}

根据这个原理,您可以:

  • 在说话时添加 pre/post 延迟。
  • 想说多少就说多少。

每个话语都将放入语音合成器队列中,并按照收到的顺序朗读。