我正在使用AVAudioEngine录制用户的声音,同时对声音应用一些实时效果。
由于我需要用户能够在会话期间听到自己的声音,我已将我的AVAudioEngine图表连接起来如下所示:
inputNode - >音频效果节点 - > mainMixerNode(点击安装在这里) - > outputNode
我还在mainMixerNode上安装了一个节点,以拉出已处理的语音并将其保存到缓冲区中。
当我插入耳机时,所有这些工作都很好。但是,当我在录制过程中将耳机拔掉一半时,我会遇到许多尖锐的回声和反馈。我想这是因为语音被发送到输出进行播放,从而加强了用户的原始输入语音。
如果在录制过程中中途将耳机拔出,是否有一种方法可以最大限度地减少反馈?我想过动态断开mainMixerNode,以便在拔出时语音不会路由到输出,但我不确定是否有更好的方法。
理想情况下,我希望在每次录制会话结束时都有一个音频缓冲区,无论用户在会话中插入和拔出耳机多少次。
有什么想法?提前谢谢!
答案 0 :(得分:0)
插入耳机,或使用外接扬声器(或AirPlay),或将拇指放在iDevice扬声器上。
答案 1 :(得分:0)
使用其他节点将音量更改为0,然后连接到outputNode。
audioEngine.connect(mainMixerNode, to: otherNode, format: yourFormat)
otherNode.volume = 0
audioEngine.connect(otherNode, to: outputNode, format: yourFormat)