AVAudioEngine Input Mic Tap влияет на Music PlayerNode - SWIFT

Я создаю приложение, которое позволяет пользователю говорить в микрофон во время воспроизведения музыки (аналогично караоке). Мне удалось заставить это работать с помощью AudioEngine с несколькими входами, входящими в микшер. Однако, когда микрофон включен, качество звука музыки также теряется. Это почти звучит так, как будто музыку платят через микрофон. Я полагаю, это связано с тем, что микрофон и музыка имеют разные форматы AVAudioFormats, но я не могу найти формат, который работает для микрофона, кроме:

var format = AVAudioFormat(commonFormat: AVAudioCommonFormat.PCMFormatFloat32, sampleRate: 8000.0, channels:AVAudioChannelCount(2), interleaved: false)

где мой формат вывода музыки просто

mixer.outputFormatForBus(0)

который звучит ясно, когда микрофон отключен.

Стоит отметить, что я также использую категорию AvAudioSessionCategory:

session.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions:AVAudioSessionCategoryOptions.AllowBluetooth, error: nil)

У меня закончились идеи относительно того, что я делаю неправильно. Любая помощь приветствуется!


person Paul Lehn    schedule 30.03.2015    source источник


Ответы (1)


Вам нужно больше узнать о вашем коде, в основном о том, как вы настроили ввод и вывод в AVAudioSession.

Не знаю из вашего описания, какова ваша настройка ввода или вывода. Для iPhone у вас есть 3 входных микрофона (передний, задний и нижний) и 2 выхода (приемник (ухо) и динамик (внизу)). Если вы настроили вход на нижний микрофон, то, скорее всего, выход настроен на приемник, который предназначен для поднесения к уху.

person scott4arrows    schedule 25.05.2015