在播放音乐时录制语音-过滤扬声器输入(iOS)

时间:2018-09-21 10:51:34

标签: ios avcapturesession audiokit

我正在开发一个 Karaoke应用,在其中您可以在听音乐的同时录制语音。当用户使用耳机时,一切都很棒-他可以边唱歌边听音乐,也可以戴着耳机听自己讲话。然后,我们记录了他的纯净声音,可以将其与播放混合。 用户不使用耳机时会发生问题。然后,我们通过扬声器AVAudioSessionCategoryPlayAndRecord播放音乐并同时录制。在最终录音中,我们将用户的声音和扬声器的播放混合在一起。问题在于播放的音量很大,并且正在“覆盖”用户的声音。首先,我认为这是正常现象,因为说话者离microphone很近,所以我无能为力。 但是,当我在Garage Band上尝试相同的操作时,它以某种方式降低了扬声器的播放效果,使声音更可听。 我也在Instagram上尝试过(您可以在播放音乐的同时进行录音,例如从Spotify播放),我注意到大约1秒钟之后。播放的音量正在减小,我们可以更精确地听到声音。 我不认为这是后期处理,因为它会非常复杂,因此也许有一个选项可以让“ iOS处理”。 需要明确的是-它不会降低录制过程中的播放速度-在收听最终视频时会“完成”。

我使用AVCaptureSession进行录制,并使用AudioKit Player进行播放。

在此先感谢您的任何想法/提示/建议!

致谢

2 个答案:

答案 0 :(得分:1)

iOS无法“处理”,没有“滤除音乐”功能。它没有启用它的功能,但是后来还是延迟了一段时间,这一事实强烈暗示他们正在做一些后期处理。我不是机器学习专家,但我认为,如果您仅使用均衡器和噪声门,您将获得这种效果。提取无菌盖是很难的,但是您当然可以改善它。 Instagram可能会花一秒钟的时间来确定语音频率在哪里,从而知道如何均衡信号。

答案 1 :(得分:0)

好吧,所以我问Apple TS,响应正是我想要的:https://developer.apple.com/documentation/avfoundation/avaudiosession/mode/1616455-voicechat您只需要在AVAudioSession中设置此模式,系统就会处理它device’s tonal equalization is optimized for voice