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

时间:2017-05-16 07:52:36

标签: ios swift siri sirikit

  

' com.apple.coreaudio.avfaudio',原因:'必填条件为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)


}

1 个答案:

答案 0 :(得分:0)

错误告诉您,您已经在该总线上安装了水龙头,并且您无法再使用其他水龙头。

当您最初调用listen()时,请在总线上安装tap。 然后你调用stopListening()并停止识别,但你没有做任何关于点击的事情。 然后当你再次调用listen()时,你试图再次安装tap - 这会产生错误。

你可以在stopListening()时添加一些东西来删除TapOnBus - 这意味着当你再次开始听时你可以重新添加它。