use*_*314 5 ios swift avaudioengine sfspeechrecognizer
我已经开始遇到以前没有发生的崩溃,因为记录的初始化有错误:
[avae] AVAEInternal.h:70:_AVAE_Check: required condition is false: [AVAudioIONodeImpl.mm:911:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它似乎与使用 48k 而不是 44.1k 的采样率有关。但是,就我而言,使用音频引擎,我根本没有设置任何采样率。
我的代码主要是用于记录的样板。崩溃发生在以下行:
inputNode.installTap(onBus: 0, bufferSize: 4096, format: recordingFormat) { (buffer, when) in
print("got here")//never gets here
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议在使用音频引擎进行录音时如何解决这个问题?
感谢您的任何建议。
编辑
这就是我创建记录格式的方式:
let recordingFormat = inputNode.outputFormat(forBus: 0)
Run Code Online (Sandbox Code Playgroud)
这就是调试器中的 RecordingFormat 的样子..它似乎设置为 44.1k:
po recordingFormat
<AVAudioFormat 0x282b1e580: 1 ch, 44100 Hz, Float32>
Run Code Online (Sandbox Code Playgroud)
inputNode 看起来像这样:
po inputNode
<AVAudioInputNode: 0x280a0eb70>
(lldb) p inputNode
(AVAudioInputNode) $R4 = 0x0000000280a0eb70 {
AVFoundation.AVAudioIONode = {
baseAVAudioNode@0 = <extracting data from value failed>
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2:
该问题似乎与 Apple 将输入格式更改为 48k 有关,如此处所述:
这说明了不匹配:
print("wrong rate---> session rate: \(AVAudioSession.sharedInstance().sampleRate) input rate: \(recordingFormat.sampleRate)")
Run Code Online (Sandbox Code Playgroud)
然而,这个使用 avaudioconverter 的修复看起来非常复杂。其他人如何处理这个问题?
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |