以编程方式关闭 VoiceProcessingIO AGC

Posted

技术标签:

【中文标题】以编程方式关闭 VoiceProcessingIO AGC【英文标题】:Programmatically turn off VoiceProcessingIO AGC 【发布时间】:2013-03-26 18:38:12 【问题描述】:

我正在使用 Apple 的 CoreAudio 框架来录制我的麦克风信号。自动增益控制似乎默认启用:https://developer.apple.com/library/mac/#documentation/AudioUnit/Reference/AudioUnitPropertiesReference/Reference/reference.html

kAUVoiceIOProperty_VoiceProcessingEnableAGC
Indicates whether automatic gain control is enabled (any nonzero value) or disabled (a value of 0). Automatic gain control is enabled by default.
Value is a read/write UInt32 valid on the global audio unit scope.
Available in OS X v10.7 and later.
Declared in AudioUnitProperties.h.

如何以编程方式关闭 CoreAudio 中的 AGC?

【问题讨论】:

【参考方案1】:

假设您使用的是名为 voiceProcessor 的 AUVoiceProcessor 音频单元

UInt32 turnOff = 0;
AudioUnitSetProperty(voiceProcessor,
                     kAUVoiceIOProperty_VoiceProcessingEnableAGC,
                     kAudioUnitScope_Global,
                     0,
                     &turnOff,
                     sizeof(turnOff));

快速解释:这样做是将音频单元上的 属性 设置为 0,在这种情况下禁用 AGC。音频单元通常有两组可控值,分别称为 propertiesparameters。您可以通过使用 AudioUnitSetProperty() / AudioUnitGetProperty()AudioUnitSetParameter() / AudioUnitGetParameter() 相应地设置/获取这些值。

注意:您可能应该检查AudioUnitSetProperty() 返回的OSStatus 代码(如果没有错误,它将等于noErr)。

【讨论】:

AudioUnitSetProperty 已被弃用,还有其他方式吗? developer.apple.com/reference/audiounit/… ? @zevarito 我没有看到它已被弃用,但这对我来说还是失败了 - 返回 OSStatus k​Audio​Unit​Err_Invalid​Property。有什么建议吗? 这仍然是唯一解决此问题的帖子吗?到 2021 年还在为这个问题拉头发。有人吗?

以上是关于以编程方式关闭 VoiceProcessingIO AGC的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式关闭 Discord?

以编程方式关闭 iPhone?

以编程方式锁定或关闭屏幕

如何以编程方式关闭/禁用 NFC?

以编程方式关闭 Android 手机

以编程方式访问 Graphite 数据的最佳方式是啥? [关闭]