- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个需要对从麦克风捕获的原始 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 数据(如果需要,我会这样做。)
如果有人知道这个新“功能”的任何信息,我们将不胜感激。具体来说,如果我能回答以下任何问题,我的生活会好得多:
任何其他线索、提示、技巧将不胜感激。
最佳答案
事实证明,我在浏览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/
我找不到任何关于如何在 AppGyver Supersonic 应用程序中更改“真实”背景颜色的文档。我可以使用 CSS 设置 body 元素的颜色,但用户在向上或向下拖动屏幕(在 iOS 中)时仍然
我正在尝试在用 xamarin(ios 和 Android)编写的应用程序中使用 Supersonic ADS 有什么方法可以包含它吗? 提前致谢! 最佳答案 如果他们有 iOS 和/或 Androi
我正在开发一个需要对从麦克风捕获的原始 PCM 音频执行识别算法的应用程序。在我测试过的所有 Android 设备上,PCM 数据都是可用的(即原始音频数据)。新的 Sprint EVO 不是这种情况
我的无知在这件事上闪闪发光。我有一个使用 MEAN 堆栈(Mongo、Express、Angularjs、Nodejs)的 Web 应用程序,并且某些功能在移动设备上表现平淡。因此,我正在 Appgy
我是一名优秀的程序员,十分优秀!