1

我使用 Novocaine 框架https://github.com/alexbw/novocaine,如果我从麦克风暂停输入单元(但输出正在工作),然后再次播放,结果我得到回声。在苹果文档中,我看到了语音处理 I/O 音频单元属性 - kAUVoiceIOProperty_DuckNonVoiceAudio。我尝试:

UInt32 zero = 0;
CheckError( AudioUnitSetProperty(inputUnit,
                                 kAUVoiceIOProperty_DuckNonVoiceAudio,
                                 kAudioUnitScope_Global,
                                 kInputBus,
                                 &zero,
                                 sizeof(UInt32)), "ERROR");

在方法 setupAudio
结果我有

ERROR (-10879)

在文档中我没有找到描述。一般来说,如何在 iOS 中为 audioUnits 实现回声消除?我认为问题可能不在此属性中(因为默认情况下应该启用它).. 我发现这篇很棒的文章 - http://atastypixel.com/blog/developing-loopy-part-2-implementation/作者说的是相关信号和他们的减法..在这种情况下,我认为我需要自适应滤波器,但如果可以为 iOS 实现?

有任何想法吗?

提前致谢

4

1 回答 1

1

我找到了为什么会发生此错误的答案:在 Novocaine AudioComponentDescription init 中:

inputDescription.componentSubType = kAudioUnitSubType_RemoteIO;

但在我的情况下是正确的:

inputDescription.componentSubType = kAudioUnitSubType_VoiceProcessingIO;

经过一些实验,我得出结论,在使用 kAudioUnitSubType_VoiceProcessingIO echo disable 但不完全之后。可能是我没有正确使用它。

于 2012-11-04T12:42:16.557 回答