录制后使用AVAudioEngine阻止声音的语音识别

时间:2016-12-13 00:36:51

标签: ios swift audio swift3 speech-recognition

我正在尝试使用来自their website here的Apple SpeakToMe:使用语音识别和AVAudioEngine 样本。我的问题是,当您停止AVAudioEngine和SpeechRecognizer时,您将无法再使用系统声音。

如何释放AVAudioEngine和SpeechRecognizer,以便在录制停止后声音再次起作用?

要复制此内容:

  • 下载示例代码
  • 将UITextField添加到故事板。
  • 运行项目并输入文本字段(您会注意到您可以听到键入的事件声音)。
  • 然后开始录制并停止录制
  • 再次输入文字字段(现在没有声音)

更新

这只发生在真实设备上 - 而不是在模拟器上。

1 个答案:

答案 0 :(得分:5)

经过数小时的调试后,我遇到了未发布的对象导致问题。在他们的示例代码中,他们不会释放AVAudioSession。这会导致声道被阻挡。

修复方法是使AVAudioSession成为一个属性:

private var audioSession : AVAudioSession?

然后在停止录制时将audioSession.active设置为false:

if let audioSession = audioSession {
    do {
        try audioSession.setActive(false, with: .notifyOthersOnDeactivation)
    } catch {
        // handle error
    }
}