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

3
我正在开发一个卡拉OK应用程序,用户可以在听音乐时录制自己的声音。当用户使用耳机时,一切都很好——他可以在耳机中听到音乐和自己的声音,同时唱歌。然后我们记录下他的纯净声音,并将其与播放混合。
问题出现在用户不使用耳机时。然后我们通过扬声器播放音乐AVAudioSessionCategoryPlayAndRecord并同时进行录制。在最终的录音中,我们有用户的声音和从扬声器播放的声音混合在一起。问题在于,播放的音量非常大,覆盖了用户的声音。起初我认为这是正常的行为,因为扬声器靠近麦克风,所以我无能为力。
然而,当我在 Garage Band 上尝试同样的事情时,它会降低扬声器的播放音量,使得声音更容易被听到。
我也尝试过 Instagram(你可以在播放来自 Spotify 的音乐时录制),我注意到大约在1秒钟后,播放的音量就会降低,我们可以更清楚地听到声音。
我认为这不是后处理,因为它会非常复杂,所以也许有一个选项可以让"iOS处理它"。
要明确的是——它不会在录制过程中降低播放音量——而是在听最终的视频时"完成"。
我使用AVCaptureSession进行录制,使用进行播放。
感谢您提前提供任何想法/技巧/建议!
问候
2个回答

2

1
iOS无法“仅处理”此功能,没有“过滤音乐”的功能。它不是实时进行,而是稍后或延迟进行处理,这强烈暗示它们正在进行一些后期处理。我不是机器学习专家,但我认为如果您只使用均衡器和噪声门,就可以获得此效果。提取人声会很困难,但您肯定可以改善它。Instagram可能需要那一秒钟来识别声音频率,以便知道如何EQ信号。

谢谢你的回答。然而,我真的不确定它是否是某种后期处理。我们在Logic上尝试了EQ和其他滤镜,甚至手动调整一次录音也无法正确区分声音。iPhone在通话过程中使用这种机制-它试图消除所有背景噪音,以便声音更加清晰可听。 - Dev_IL
尝试消除所有背景噪音。降噪正是你所要做的事情。 有另一个与此非常相似的问题,网址为https://stackoverflow.com/questions/49507343/how-to-reduce-noise-while-recording-with-audiokit?rq=1,在那里的评论中,有人链接了这段代码。 https://github.com/comyar/TuningFork 如果你找到了神奇的“从声音中删除音乐”的函数调用LMK,我也会发现它非常有用;)。 - Tom Schulz
考虑一下在 Garageband 工作的团队——这些人是声音方面的专家。 - Tom Schulz
再次感谢您的回复。对我来说最有趣的事情是Instagram的这个案例 - 它能够减少其他应用程序音乐的音量(但在录制后)。我认为它可能使用了:https://developer.apple.com/documentation/avfoundation/avaudiosession/categoryoptions/1616618-duckothers 我没有测试过,但它可能只会在录制期间降低音量而不是之后。尽管如此,看起来似乎没有什么我可以做来解决这个问题。 - Dev_IL
啊,我能理解你为什么会这样想。鸭式处理的一个很好的例子是电影中角色说话时。可能会有火灾、枪声、引擎声等等,但当角色说话时,这些其他声音通道(想象一下混音器)的音量会降低,以便你听到角色的声音。这是一种播放技术而不是录制技术。 - Tom Schulz
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接