打开两个耳机通道上的AKMicrophone工作

时间:2019-04-24 13:08:12

标签: ios swift audiokit

我遇到了一个简单的问题,在Google上找到答案并不容易(至少对我而言)。我正在与AudioKit 4.4一起工作,试图制作一个麦克风,可以在立体声耳机的两个通道中听到来自该麦克风的输出。我正在尝试将音频格式手动设置为AudioKit.formatAKSettings.channelCount,但是在耳机中,我只能在左声道听到麦克风的声音。我想念的是什么?

以下是我当前设置的简化代码:

    AKSettings.bufferLength = .long
    AKSettings.fixTruncatedRecordings = true
    AKSettings.defaultToSpeaker = true
    AKSettings.ioBufferDuration = 0.002
    AKSettings.channelCount = 2
    AKSettings.enableRouteChangeHandling = false
    let format = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 2)
    AudioKit.format = format ?? AudioKit.format

    let mic = AKMicrophone()
    AudioKit.output = mic
    try? AudioKit.start()

如您所见,我只是为音频会话初始化AKSettings属性,并创建一个麦克风,该麦克风连接到AudioKit引擎输出。我怀疑AKSettings之前的AKSettings.channelCount = 2在此问题中没有任何作用。但是我一点也不明白,我做错了什么?我敢肯定,这将是一个简单的解决方案。

1 个答案:

答案 0 :(得分:1)

所以,我找到了答案-它是类AKStereoFieldLimiter

let mic = AKMicrophone()
let monoToStereo = AKStereoFieldLimiter(mic, amount: 1)
let micMixer = AKMixer(monoToStereo)
AudioKit.output = micMixer

此外,AudioKit 4.7.1中可能有一个更简单的解决方案-初始化AKMicrophone(with format: AVAudioFormat?),但是由于我正在使用AudioKit 4.4,因此无法检查它。如果有人可以尝试这种方法,请在此答案的评论中留下反馈。