如何在 iPhone 内置麦克风上禁用 AEC、AGC 和 HPF
Posted
技术标签:
【中文标题】如何在 iPhone 内置麦克风上禁用 AEC、AGC 和 HPF【英文标题】:How to disable AEC, AGC and HPF on Iphone built in microphones 【发布时间】:2021-07-01 11:13:57 【问题描述】:目前正在开发一个基于 android 和 ios 的移动声音分析项目。该项目正在 Unity 中开发。 Android 版本可以正常运行,但在 iOS 上,它只能在较旧的设备(iphone 5、iphone 6)上运行。从 iPhone 8 开始,苹果增加了 麦克风输入上的回声消除 (AEC)、自动增益控制 (AGC) 和高通滤波器 (HPF)。我们的应用程序分析麦克风输入并计算输入的分贝 (db) 以及我们用于迷你游戏的值。 Apple 的 3 项功能的问题在于,它会在达到某个分贝阈值后切断输入,而且它只是没有记录更高的分贝或音高。
我想在 iPhone 版本上禁用这些功能或以某种方式绕过它们,但到目前为止我还没有找到任何可行的解决方案。我想到了什么:
-
将项目从 Unity 构建到 Xcode。
将一些 swift 代码放入 Xcode 中构建的项目中,这将在应用程序启动时禁用这些麦克风功能(如果可能的话?)。
我发现了这个问题 - link - 答案似乎很好,但我无法实现它,因为我没有使用任何本机 Xcode 音频引擎(如 AVAudioRecorder、AVFAudio 等),而是我' m 使用 Unity 的音频解决方案。
所以我的问题是:是否可以在 Unity 项目中使用 Swift 禁用上述 iPhone 麦克风功能,而不使用任何 Xcode/Swift 音频引擎?
我想指出,如果我们使用外部麦克风,该应用程序适用于所有新 iPhone 设备。
【问题讨论】:
***.com/questions/58472683/… @Shadowrun 我已经遇到过,但这不是 Unity 构建项目的解决方案(阅读我的完整问题,我什至引用了该链接)。 【参考方案1】:所以我的问题是:是否可以禁用上述 在 Unity 项目中使用 Swift 的 iPhone 麦克风功能,无需使用 任何 Xcode/Swift 音频引擎?
是的,这是可能的。你应该写iOS native plug-in。
在你的 C# 类中创建外部方法:
[DllImport ("__Internal")]
private static extern void AudioUnitSetProperty();
然后在你的 .mm 类中:
extern "C" void AudioUnitSetProperty()
/* your code here */
【讨论】:
感谢哈米德的提示!但是您并没有真正回答主要问题,如何禁用这些麦克风功能?我应该在这些函数中使用哪些代码来实现这一点?以上是关于如何在 iPhone 内置麦克风上禁用 AEC、AGC 和 HPF的主要内容,如果未能解决你的问题,请参考以下文章