ios - Siri 实现应用程序出现崩溃原因由于未捕获的异常而终止应用程序

标签 ios swift siri sirikit

'com.apple.coreaudio.avfaudio', reason: 'required condition is false: _recordingTap == nil

代码崩溃

1.  
guard let inputNode = audioEngine.inputNode else {
        fatalError("Audio engine has no input node")
    }  
2.  
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, when) in
        self.recognitionRequest?.append(buffer)
}

当尝试重新初始化 Siri 时,它崩溃了

我们在听写后也有文本听写,我想从语音中捕获文本。第一次没问题,但第二次就在第 2 行崩溃了

下面给出的语音听写功能

func getSpeech(asSpeach:String)
{
    print("===================")

    let audioSession  = AVAudioSession.sharedInstance()
    do {
        try audioSession.overrideOutputAudioPort(.speaker)
    } catch {
        print(error.localizedDescription)
    }


    /// <#Description#>
    let synthesizer = AVSpeechSynthesizer()
    let utterance = AVSpeechUtterance(string: asSpeach)
    utterance.rate = AVSpeechUtteranceDefaultSpeechRate
    utterance.volume = 1.0
    utterance.pitchMultiplier = 1.0
    synthesizer.delegate=self
    synthesizer.speak(utterance)

    //        synthesizer.rSpeaking(at: .word)


}

最佳答案

该错误告诉您该总线上已经安装了一个分接头,并且不能安装另一个分接头。

当你调用listen()时,最初你在总线上安装了tap。 然后,您调用 stopListening() 并停止识别,但不对点击执行任何操作。 然后,当您再次调用 Listen() 时,您将尝试再次安装水龙头 - 这会产生错误。

当您 stopListening() 时,您可以向 removeTapOnBus 添加一些内容 - 这应该意味着您可以在再次开始监听时将其重新添加回来。

关于ios - Siri 实现应用程序出现崩溃原因由于未捕获的异常而终止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43995478/

相关文章:

javascript - 调整 UIWebView 文本的大小

ios - 当用户未登录 iCloud 时,我可以在使用 CloudKit 的应用程序中使用订阅吗?

Swift:确保 urlSession.dataTask 在传递结果之前在我的函数中完成

Swift 2 - catch 22 可选类型的值未展开

ios - 将数据推送到 Siri

ios - UILabel隐藏文本问题

IOS Testflight 即使在更新到新版本后也会加载我的应用程序的旧代码

ios - 游戏在快速从后台恢复后退出暂停状态

performance - 语音识别,例如 Siri

ios - 是否可以让 Siri 开始对话?