Swift中的采样率导致AVAudioEngine崩溃

时间:2019-05-15 16:37:48

标签: ios swift avaudioengine sfspeechrecognizer

我已经开始崩溃,这是初始化记录并发生以下错误:

[avae] AVAEInternal.h:70:_AVAE_Check: required condition is false: [AVAudioIONodeImpl.mm:911:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]

这似乎是tricky error,有些人也AudioKit也知道。

在这种情况下,似乎与使用48k而不是44.1k的采样率有关。但是,就我而言,使用音频引擎,我根本没有设置任何采样率。

我的代码主要是用于记录的样板。崩溃发生在以下行:

inputNode.installTap(onBus: 0, bufferSize: 4096, format: recordingFormat) { (buffer, when) in
print("got here")//never gets here

在使用音频引擎进行录制时,有人可以建议如何解决此问题吗?

谢谢您的建议。

修改

这就是我创建recordingFormat的方式:

let recordingFormat = inputNode.outputFormat(forBus: 0)

这是在调试器中的recordingFormat的样子。它似乎设置为44.1k:

po recordingFormat
<AVAudioFormat 0x282b1e580:  1 ch,  44100 Hz, Float32>

inputNode看起来像这样:

po inputNode
<AVAudioInputNode: 0x280a0eb70>

(lldb) p inputNode
(AVAudioInputNode) $R4 = 0x0000000280a0eb70 {
  AVFoundation.AVAudioIONode = {
    baseAVAudioNode@0 = <extracting data from value failed>

  }
}  

编辑2:

该问题似乎与Apple将输入格式更改为explained here的48k有关:

这说明了不匹配:

    print("wrong rate---> session rate: \(AVAudioSession.sharedInstance().sampleRate) input rate: \(recordingFormat.sampleRate)")

然而this fix using avaudioconverter似乎很复杂。其他人如何处理呢?

0 个答案:

没有答案