gpt4 book ai didi

android - 如何在 HTC EVO (Supersonic) 上禁用 AGC?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:07 35 4
gpt4 key购买 nike

我正在开发一个需要对从麦克风捕获的原始 PCM 音频执行识别算法的应用程序。在我测试过的所有 Android 设备上,PCM 数据都是可用的(即原始音频数据)。新的 Sprint EVO 不是这种情况。

Sprint EVO 的麦克风上有 AGC(自动增益控制),它会破坏数据,使我们的识别算法不再有效。

我相信这是 HTC 为此设备(可能还有 future 的设备)添加到操作系统中的一项功能。我已经在其他一些使用相同操作系统版本 (2.1) 的设备上测试了我们的应用程序,这些其他设备运行正常.

遗憾的是,HTC 尚未发布此设备上使用的代码。我希望我可能必须使用 JNI 才能绕过这个特定设备,我愿意这样做,但如果无法访问 HTC 源代码,我不知道从哪里开始。

没有办法逆转 AGC 的影响,所以我一直在尝试解决它。​​

更具体的信息:

我正在使用 AudioRecorder 来访问原始 PCM 数据。我尝试了一些使用 MediaRecorder 记录 AMR 数据的程序,这些记录也表现出相同的 AGC 属性。

我还没有尝试的一件事是编写我自己的例程来使用 MediaRecorder 并使用 setAudioSource(AudioSource.VOICE_RECOGNITION)。我能在这个标志上找到的唯一文档来自 Android 引用,它简单地指出“麦克风音频源如果可用,则针对语音识别进行调整,否则表现得像 DEFAULT。”这可能是我需要的,但需要解码 AMR 数据的额外步骤才能获取 PCM 数据(如果需要,我会这样做。)

如果有人知道这个新“功能”的任何信息,我们将不胜感激。具体来说,如果我能回答以下任何问题,我的生活会好得多:

  1. 这个新功能是 HTC 特有的吗?
  2. HTC 什么时候发布他们的 EVO/Supersonic 代码库?
  3. 有没有其他人遇到过这个问题并找到解决问题的方法?
  4. AudioSource.VOICE_RECOGNITION 真的能阻止 AGC 吗?
  5. AudioSource.VOICE_RECOGNITION 的存在是否表示预计这将在未来的设备中更常见并且此标志是绕过它的规定?

任何其他线索、提示、技巧将不胜感激。

最佳答案

事实证明,我在浏览Android git depot时找到了解决方案:

AudioRecord ar = 
new AudioRecord(MediaRecorder.AudioSource.VOICE_RECOGNITION, ...);

对于运行 OS 2.1 及更高版本的设备,这允许您接收不受 AGC 影响的音频流,并且仍然是高质量的 16 位 PCM 数据流。

我的应用目标是 1.5 及更高版本,直到 API 级别 7(操作系统 2.1)才支持此 VOICE_RECOGNITION 标志。但是,由于 EVO 运行的是 v2.1,而且我相对有信心这对于 OS 2.1 之前的任何设备都不会成为问题,因此简单的版本检查就可以将解决方案限制在那些需要/支持一下。

关于android - 如何在 HTC EVO (Supersonic) 上禁用 AGC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002735/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com