【问题标题】:How to disable audio output processing on an htc phone with Android如何在使用 Android 的 HTC 手机上禁用音频输出处理
【发布时间】:2013-09-23 10:44:59
【问题描述】:

我正在尝试在两部不同的手机上测量从扬声器到麦克风的音频路径,一部运行 Android 2.3.5 的 htc Wildfire S 和一部运行 Android 4.0.3 的 htc One X。使用 Eclipse,我编写了一个使用 android.media.MediaPlayer 播放波形文件的应用程序。然而,我的录音显示,像自动增益控制之类的东西被应用于输出,因为响亮的文件被衰减,并且录音的振幅几乎相等,尽管播放的文件各自的振幅差异很大。

如何在输出之前关闭音频数据的任何处理?我想直接控制原始音频输出。

提前致谢。

【问题讨论】:

  • 试试已经移植到安卓的库FMOD。如果您提供这两个示例文件。我可能会尝试使用 FMOD,因为我已经有一个工作项目。
  • 谢里夫,感谢您的意见,我会看看图书馆,它是否会绕过音频处理。
  • 您是否有确凿的证据表明 AGC 在 输出 上?我更有可能怀疑在 input 端使用此类。也许您可以针对其他一些来源/记录器进行测试?此外,您应该预计 API 会有相当大的延迟,每次启动会话时都会随机变化。
  • 嗨,克里斯,你说得对,每次我开始播放和录制时,API 都会引入一些随机延迟。这不是一个大问题,因为我之后会根据互相关同步数据。 DRC/AGC/Limiter/Leveller 或任何你可能称之为的东西实际上会影响输出:我在扬声器前面安装了一个参考麦克风,问题就出现了。至于设备的麦克风,我选择了 VOICE_RECOGNITION 作为 AudioSource,它提供了未修改的输入。
  • 感谢大家对我的问题的贡献。我会将赏金奖励给迈克,因为您的回答实际上使我走上了一条新的道路。我还不能确定哪个答案会带来可行的解决方案。一旦我想出一个,我会接受适当的答案。

标签: android eclipse adt audio-processing htc-android


【解决方案1】:

您是否尝试过禁用内置的 AGC 和 AEC 音频效果?更多信息http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html

例如:

int audioSession = ...;
if(AutomaticGainControl.isAvailable())
{
    AcousticEchoCanceler agcfx = AcousticEchoCanceler.create(audioSession);
    if(agcfx != null)
    {
        agcfx.setEnabled(false);
    }
}

【讨论】:

  • 嗨乔希,感谢您的提示。我确实没有明确地尝试过。但是,AGC 类是在 API 级别 16 中引入的,而我的 Wildfire S 运行的是 Android 2.3.5(API 级别 10)。我在两部手机上使用相同的 API 级别。不过,我会尝试这是否对具有适当 API 级别的 One X 产生影响。
【解决方案2】:

我从你提到的 Wildfire S 中猜测你不在美国,所以让我在这里推测一下......

您是否在两台设备上体验到相同的衰减和其他均衡类型的效果,或者只是一个与另一个比较?如果您在 Wildfire 上没问题,但在 One X 上遇到问题,并且您使用的是 One X 的国际版本,则问题可能是该手机上包含的 SoC 音频。

美国版 One X/S/XL 使用 Qualcomm 的 WCD9310 DAC。国际版本的 Tegra 3 芯片组搭载了 Realtek DAC,而且听起来很糟糕。

另外,您确定 One X 上的专有 Beats Audio 均衡器已禁用,并且不会影响您的衰减吗?

【讨论】:

  • 嗨,迈克,到目前为止,感谢您的回答。我找到了这个网站:androidpolice.com/2012/06/26/… 有类似的信息。可以排除节拍均衡器,因为我有另一个应用程序控制它,我将它设置为中性。否则,两个设备上都会出现衰减效果。
  • 有趣,感谢您的更新。我会在今天晚些时候把它拿回来。
  • 让我澄清一下,问题不在于音质,而在于增益或动态范围控制。
【解决方案3】:

确保关闭 Beats Audio。

我正在处理一个需要未经修改的音频流的项目,但 HTC 手机上的 Beats Audio 干扰了它。您必须仔细研究设置以确保其完全关闭,我相信有两个类似的设置可以控制它。您不能在代码中以编程方式禁用它,必须在手机上完成。

【讨论】:

  • 感谢您的意见。奇怪的是,同样的情况发生在 Wildfire S 上,它根本没有 Beats Audio。
  • 我还是会在 One X 上试试这个。
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多