Я использую AVAudioEngine для записи входного сигнала с микрофона, а также различных звуковых эффектов в один файл. Во время записи звук воспроизводится через динамики через outputNode движка. Однако это вызывает странный эффект для пользователей, записывающих с помощью гарнитуры, поскольку они могут слышать собственный голос, воспроизводимый через динамики / наушники. Поэтому я хочу выводить только звук звуковых файлов через динамики, а не звук, исходящий из микрофона.
Однако я не нашел способа добиться этого с помощью AVAudioEngine. Моя последняя попытка заключалась в подключении узлов звуковых файлов к основному микшеру и их воспроизведению с помощью outputNode микшера, а затем подключению микрофона ко второму микшеру. Затем mainMixer отправляет свой вывод (звук из звуковых файлов) в этот микшер, на который я установил кран, для записи звука в мой файл.
Однако узлы микшера имеют только один выход, что означает, что звук через динамики вообще не воспроизводился, поскольку основной микшер был изменен так, чтобы направлять его вывод на второй микшер, а не на outputNode.
Вот моя компоновка двигателя:
soundfileNode ----> mainMixer ---> outputNode (speaker)
|
|
v
inputNode (mic) --> secondaryMixer ---> tap (write to file)
Как я могу решить свою проблему? Любые идеи?
Обновлять:
Теперь я использую AVAudioConnectionPoint для разделения вывода mainMixer. Однако звуковые файлы воспроизводили (и записывали) звук с искажениями, с большим количеством потрескивания и шума. Это происходит только тогда, когда я устанавливаю на мой вторичный микшер кран для записи в выходной файл. Кто-нибудь еще испытал это?