打开 AKMicrophone 在两个耳机通道上工作
Turn AKMicrophone work on both headphones channels
我遇到了一个简单的问题,在 google 中找到答案并非易事(至少对我而言)。使用 AudioKit 4.4
,我正在尝试制作一个麦克风,我可以从立体声耳机的两个声道中听到输出。我正在尝试手动将音频格式设置为 AudioKit.format
和 AKSettings.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.channelCount = 2
之前的 AKSettings
在此问题中没有任何作用。但是我完全不明白,我做错了什么?我敢肯定,这将是一个简单的解决方案。
所以,我找到了答案 - 它是 class 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
。如果有人可以尝试此方法,请对此答案发表评论。
我遇到了一个简单的问题,在 google 中找到答案并非易事(至少对我而言)。使用 AudioKit 4.4
,我正在尝试制作一个麦克风,我可以从立体声耳机的两个声道中听到输出。我正在尝试手动将音频格式设置为 AudioKit.format
和 AKSettings.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.channelCount = 2
之前的 AKSettings
在此问题中没有任何作用。但是我完全不明白,我做错了什么?我敢肯定,这将是一个简单的解决方案。
所以,我找到了答案 - 它是 class 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
。如果有人可以尝试此方法,请对此答案发表评论。