我正在使用 AVAudioEngine 录制用户的声音,同时对声音应用一些实时效果。
由于我需要用户能够在会话期间听到自己的声音,因此我将 AVAudioEngine 图连接起来如下所示:
inputNode -> 音效节点 -> mainMixerNode (点击安装在这里) -> outputNode
我还在 mainMixerNode 上安装了一个节点抽头,以提取处理后的语音并将其保存到缓冲区中。
当我插入耳机时,所有这些都可以正常工作。但是,当我在录制过程中中途拔下耳机时,我会体验到很多尖锐的回声和反馈。我猜这是因为语音被发送到输出进行播放,这反过来又加强了用户的原始输入语音。
如果在录音过程中耳机被拔掉,有没有什么好的方法可以减少反馈?我曾想过动态断开 mainMixerNode 的连接,以便在拔出时声音不会路由到输出,但我不确定是否有更好的方法。
理想情况下,我希望在每个录制会话结束时都有一个音频缓冲区,无论用户在会话中插入和拔出耳机多少次。
有什么想法吗?提前致谢!