android - 如何避免使用 AudioRecord 进行自动增益控制?

标签 android api audio-recording

如何使用 android.media.AudioRecord 进行录音,而无需任何智能手机制造商依赖的花哨信号处理,如自动增益控制 (AGC) 和/或均衡、噪声抑制、回声消除、 ...只是纯粹的麦克风信号?

背景

MediaRecorder.AudioSource 提供九个常量,

  • DEFAULTMIC 最初在那里,
  • VOICE_UPLINKVOICE_DOWNLINKVOICE_CALL 添加到 API 级别 4,
  • CAMCORDERVOICE_RECOGNITION 添加到 API 7,
  • VOICE_COMMUNICATION 添加到 API 11,
  • REMOTE_SUBMIX 添加到 API 19,但第三方应用程序不可用。

但它们都不能在所有智能手机上做到干净利落。相反,我似乎必须自己弄清楚,哪个设备使用哪些信号处理 block 的组合,哪些 MediaRecorder.AudioSource 常量。

在 API 级别 20 中添加第十个常量(如 PURE_MIC)会很好。

但只要没有这个,我还能做什么呢?

最佳答案

简短的回答是“无”。

AudioSources 对应于各种逻辑音频输入设备,具体取决于您连接到手机的配件和当前用例,这又对应于物理设备(主内置麦克风、辅助麦克风、有线耳机麦克风, 等等) 不同的调音。

物理设备和调谐的每种此类组合都由 OEM 进行调整,以满足外部要求(例如 CTS、运算符(operator)要求等)和 OEM 本身设定的内部声学要求。此过程可能会导致在硬件编解码器或多媒体 DSP 级别将各种滤波器(例如 AGC、噪声抑制、均衡等)引入音频输入路径。

虽然 PURE_MIC 源可能对某些应用程序有用,但它不是今天可用的东西。
在许多设备上,您可以通过使用 amixer 写入硬件编解码器的 ALSA 控件来控制诸如麦克风增益甚至滤波器链之类的东西。但是,这显然是一种非常特定于平台的方法,而且我还怀疑您必须以根用户或音频用户身份运行才能执行此操作。

关于android - 如何避免使用 AudioRecord 进行自动增益控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14377481/

相关文章:

android - 存储和比较 android 传感器(加速度计)数据集以匹配模式

Android WebView 不维护历史记录

android - Xamarin Android 安装失败

facebook - 如何使用 Facebook API 作为粉丝页面管理员共享 Facebook 粉丝页面的链接

iphone - 使用 AVAudioRecorder 录制 AVAudioPlayer 输出

java - 当我们有 UrlConnection 时为什么要使用套接字

api - Youtube API 访问限制

python - 将 Eve REST API 连接到 MongoDB 实例的 ConnectionException

android - 音频录制和播放环回缓冲区问题,将数据写入音轨时出现问题

java - 在Android应用程序中删除SD卡中的文件以进行语音转换器