4

作業中の関連コードのサンプルを次に示します。

AudioRecord recorder = setupAudio();
recorder.startRecording();

SetupAudio メソッド:

public AudioRecord setupAudio() {

        AudioRecord recorder;

        minBufferSizeInBytes = AudioRecord.getMinBufferSize(
                RECORDER_SAMPLERATE, AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT);

        Log.e("MoverAudio","BufferSize: " + minBufferSizeInBytes);

        recorder = new AudioRecord(MediaRecorder.AudioSource.CAMCORDER,
                RECORDER_SAMPLERATE, AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT, minBufferSizeInBytes);

        return recorder;
    }

RECORDER_SAMPLERATE = 8000;

初期化にかかる時間を改善する方法があるかどうかを調べようとしています。

現在、3つのデバイスでテストしており、次の結果が得られています。

ギャラクシー S3

  • setupAudio : ~200ms
  • startRecording() : ~280ms

ギャラクシー S3 ミニ

  • setupAudio : ~10ms
  • startRecording() : ~290ms

ギャラクシー ネクサス

  • setupAudio : ~10ms
  • startRecording() : ~235ms

バッファサイズ:

  • ネクサス: 704
  • s3:1024
  • s3 ミニ: 640

ただし、銀河ネクサスのデータしか使えません。私のアプリケーションの目的のために、オーディオ データをできるだけ早く取得できるようにする必要があります。現在の値では、Nexus のみが許容時間内にあります。

S3 mini は、Nexus よりも少しだけ時間がかかるため高速に見えるかもしれませんが、サンプルの最初の ~200 ミリ秒が 0 としてリストされているため、使用できません。

収集したデータを分析してわかったことによると、S3 と S3 mini のオーディオは何らかの形でフィルタリングされているようで、結果として得られる FFT はよりクリーンになり、低周波の音は常にあまり目立たなくなります。S3mini と Galaxy Nexus の両方で録音されたオーディオの例を次に示します。

http://img41.imageshack.us/img41/4177/ox7h.png S3 ミニ

http://img690.imageshack.us/img690/8717/iya6.png ギャラクシー ネクサス

4

1 に答える 1