【问题标题】:How to disable AEC, AGC and HPF on Iphone built in microphones如何在 iPhone 内置麦克风上禁用 AEC、AGC 和 HPF
【发布时间】:2021-07-01 11:13:57
【问题描述】:

目前正在开发一个基于 Android 和 iOS 的移动声音分析项目。该项目正在 Unity 中开发。 Android 版本可以正常运行,但在 iOS 上,它只能在较旧的设备(iphone 5、iphone 6)上运行。从 iPhone 8 开始,苹果增加了 麦克风输入上的回声消除 (AEC)、自动增益控制 (AGC) 和高通滤波器 (HPF)。我们的应用程序分析麦克风输入并计算输入的分贝 (db) 以及我们用于迷你游戏的值。 Apple 的 3 项功能的问题在于,它会在达到某个分贝阈值后切断输入,而且它只是没有记录更高的分贝或音高。

我想在 iPhone 版本上禁用这些功能或以某种方式绕过它们,但到目前为止我还没有找到任何可行的解决方案。我想到了什么:

  1. 将项目从 Unity 构建到 Xcode。
  2. 将一些 swift 代码放入 Xcode 中构建的项目中,这将在应用程序启动时禁用这些麦克风功能(如果可能的话?)。

我发现了这个问题 - link - 答案似乎很好,但我无法实现它,因为我没有使用任何本机 Xcode 音频引擎(如 AVAudioRecorder、AVFAudio 等),而是我' m 使用 Unity 的音频解决方案。

所以我的问题是:是否可以在 Unity 项目中使用 Swift 禁用上述 iPhone 麦克风功能,而不使用任何 Xcode/Swift 音频引擎?

我想指出,如果我们使用外部麦克风,该应用程序适用于所有新 iPhone 设备。

【问题讨论】:

标签: ios swift iphone xcode unity3d


【解决方案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 */
}

【讨论】:

  • 感谢哈米德的提示!但是您并没有真正回答主要问题,如何禁用这些麦克风功能?我应该在这些函数中使用哪些代码来实现这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多