1

私は使者を呼び出すアプリで次のコードを使用しています:通話に最適なオーディオ設定は何ですか?

this.audioRecord = new AudioRecord(
       MediaRecorder.AudioSource.DEFAULT, 
       Constants.SAMPLE_RATE, 
       AudioFormat.CHANNEL_IN_MONO, 
       AudioFormat.ENCODING_PCM_16BIT, 
       Constants.BUFFER_SIZE_RECORDING); 

が、これは通話中の音声に最適な設定ですか?私はエコーといくつかの問題があります。私はAudioSource.MICとVOICE_COMMUNICATIONを試しましたが、悪化します。他の変数を変更するとオーディオの品質が向上するのではないかと思いますか?呼び出し側のアプリに最適な変数についてのアイデア.Nexus 6またはピクセル2で頻繁に音声が聞こえることはありません。

答えて

1

Androidのオーディオは、メーカーがさまざまな機能を持つさまざまなオーディオチップをすべての電話。

それはVOICE_COMMUNICATIONと言われています。これは、「VoIPなどの音声通信用に調整されたマイクロフォンのオーディオソースです。たとえば、エコーキャンセレーションや自動利得制御を利用できる場合は利用します。」

エコーやその他の妨害ノイズを取り除くには、すでにAcousticEchoCancelerNoiseSuppressorを使用する必要があります。しかし、最終的には、フィルタリングされていないオーディオやフィルタリングされたオーディオが必要な場合は、ユースケースになります。

また、より良好な信号を得るために、サンプリング・レート(つまり、最も近代的な携帯電話のサンプリングレートであるため、Constants.SAMPLE_RATE 48000は最高でなければなりません)とビット深度(ENCODING_PCM_FLOATからENCODING_PCM_16BIT)を大きくしようとすることができます。サポートされているサンプリングレートは、電話によって異なります。お使いの電話機がサポートしているものを見つけるには、解決策をaudio sampling rates discussionから適応させてください。サンプリングレートの詳細については、Sampling Audioドキュメントを参照してください。

ゲインが低すぎる(AudioSource.MICで発生する可能性がある)場合や、レコーダーがまだ準備ができていない場合に発生する可能性があります(私はここから推測しています私はあなたのコードを知らない)。

+0

ありがとうございました!非常に詳細。私はバージョン18+をサポートしていてENCODING_PCM_FLOATは21and +だけで動作するようです。 AudioFormat.CHANNEL_IN_MONOのコメントと "バッファサイズの記録を増やす" –

+0

CHANNEL_IN_STEREOを使用すると、デバイスによっては、1つのチャンネルが電話用のマイクとなり、もう1つがビデオカメラのマイクになります。多くのオーディオは処理される前にバッファリングされるため、遅延を大きくするとバッファオーバーランに対する安定性が向上しますが、通常は低い値を目指したいのですが、あまりにも低くなると 'AudioRecord'がエラーになります。 – leoderprofi

+0

アンドロイド携帯電話のために、それは呼び出しているアプリです。錠剤や何もない、ネクサス、サムスンとピクセルデバイスだけです。あなたは18〜24の理想的なセットになるとお考えですか? –

関連する問題