16

android.media.AudioRecord自動利得制御(AGC)やイコライゼーション、ノイズ抑制、エコーキャンセレーションなど、スマートフォンメーカーに依存する派手な信号処理を使用せずに、純粋なマイク信号だけを使用してオーディオ録音を行うにはどうすればよいですか?

バックグラウンド

MediaRecorder.AudioSource9つの定数を提供します。

  • DEFAULTMIC最初はそこにいて、
  • VOICE_UPLINK、、VOICE_DOWNLINKおよびVOICE_CALLAPIレベル4で追加
  • CAMCORDERAPI7にVOICE_RECOGNITION追加されました
  • VOICE_COMMUNICATIONAPI11で追加
  • REMOTE_SUBMIXAPI 19で追加されましたが、サードパーティのアプリケーションでは使用できません。

しかし、それらのどれもすべてのスマートフォンできれいな仕事をしていません。MediaRecorder.AudioSourceむしろ、どのデバイスがどの定数に対してどの信号処理ブロックの組み合わせを使用しているのかを自分で確認する必要があります。

PURE_MICAPIレベル20で追加されたような10番目の定数があると便利です。

しかし、これが利用できない限り、代わりに何ができますか?

4

4 に答える 4

8

短い答えは「何もない」です。

AudioSources は、電話機に接続したアクセサリと現在のユースケースに応じて、さまざまな論理オーディオ入力デバイスに対応し、物理デバイス (プライマリ内蔵マイク、セカンダリ マイク、有線ヘッドセット マイクなど) に対応します。異なるチューニングで。

このような物理デバイスとチューニングの各組み合わせは、外部要件 (CTS、オペレーターの要件など) と OEM 自体が設定した内部音響要件の両方を満たすように OEM によって調整されます。このプロセスにより、AGC、ノイズ抑制、イコライゼーションなどのさまざまなフィルターが、ハードウェア コーデックまたはマルチメディア DSP レベルでオーディオ入力パスに導入される場合があります。

PURE_MICソースは一部のアプリケーションで役立つ場合がありますが、現在利用できるものではありません。多くのデバイスでは、ハードウェア コーデックの ALSA コントロールへの書き込みを
使用して、マイクのゲインや、場合によってはフィルター チェーンなどを制御できます。amixerただし、これは明らかにプラットフォーム固有のアプローチであり、これを行うにはルートまたはオーディオ ユーザーとして実行する必要があると思います。

于 2013-01-17T14:11:50.783 に答える