Соедините 2 разных ярлыка для преобразования текста в речь (swift3)

Используя функцию "речь в текст", я легко могу произнести одну метку. Но я хочу, чтобы высказывание2 было присоединено к высказыванию. Я хочу, чтобы высказывание было произнесено первым, а затем, когда оно закончится, произнесение произнесения2 произойдет сразу после этого.

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

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

1 ответ

Решение

Я думаю, что самый простой способ справиться с этой ситуацией, это объединить две строки с space,

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

Я хочу, чтобы сначала произносилось высказывание, а затем, когда оно закончено, чтобы высказывание2 было произнесено сразу после него.

Для произнесения двух высказываний нет необходимости объединять их: самое важное, что нужно помнить, - это сохранять свое 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)
}

Следуя этому обоснованию, вы можете:

  • Добавляйте задержки до и после выступления во время выступления.
  • Сделайте столько высказываний, сколько хотите.

Каждое из высказываний будет помещено в очередь синтезатора речи и будет произноситься в том порядке, в котором оно было получено.

Другие вопросы по тегам