2017-07-18 75 views
1

我正在编写一个应用程序来为学生阅读随机研究问题。Swift - 重置/重新启动SpeechSynthesizer完成后

的基本流程是:

  • 随机生成的问题
  • 文本分配到SpeechUtterrance
  • 与SpeechSynthesizer
  • 获取学生的答案玩SpeechUtterance
  • 检查它
  • 生成新的随机问题
  • 重复

一切正常,但我不能让它读取多个问题。它会说第一个,接受一个答案,但我不能读它来阅读随后的话语。

didFinish运行后,我可以调用重置SpeechSynthesizer/SpeechUtterance的方法吗?

+0

所以我提到我抓住了学生的答案。我使用SFSpeechRecognizer来做到这一点。经过一些测试后,如果我不使用语音识别器,则可以读取随后的话语,没有问题。我的猜测是AVSpeechSynthesizer和SFSpeechRecognizer之间存在一些我缺少的相互作用,如果这有助于任何人缩小范围? –

回答

0

所以我使用SFSpeechRecognizer和AVSpeechSynthesizer,并启动录音机,切断音频通道播放音频。

我不得不改变

try audioSession.setCategory(AVAudioSessionCategoryRecord)

try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)

而且解决了我的问题。