录制来自AirPod麦克风的音频

Vip*_*er8 5 ios swift

我正在尝试记录和语音识别通过我的蓝牙AirPods麦克风传来的音频。

我尝试了所有发现但没有运气的东西。我可以通过内置麦克风进行录音,但是一旦我将音频类别设置为蓝牙,它就会崩溃。

这是我的代码的当前版本:

askSpeechPermission()

var request = SFSpeechAudioBufferRecognitionRequest()
var listOfInputs = AVAudioSession.sharedInstance().availableInputs

do {
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryRecord, mode: AVAudioSessionModeDefault, options: AVAudioSessionCategoryOptions.allowBluetooth)
} catch {

}

let node = audioEngine.inputNode
let recordingFormat = node.outputFormat(forBus: 0)

node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { buffer, _ in
    self.request.append(buffer)
}
Run Code Online (Sandbox Code Playgroud)

这就是由此导致的崩溃错误。

***由于未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'所需条件为假:format.sampleRate == hwFormat.sampleRate'

Osm*_*man 2

您是否尝试过检查您的采样率?要修改您的采样率,您可以使用

let fmt = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 1, interleaved: true)
Run Code Online (Sandbox Code Playgroud)

然后你就可以按照你的格式

node.installTap(onBus: 0, bufferSize: 1024, format: fmt) { buffer, _ in
    self.request.append(buffer)
}
Run Code Online (Sandbox Code Playgroud)