3

Androidプログラミング初心者です!

私のハードウェアは Samsung Galaxy Young GT-S5360 です!

私のアプリでは、マイク ソースを使用して何かを録音したいと考えています。

1000Hz またはその他のサウンド サンプルでサインを録音すると、サンプルの先頭に常に 2 つのトランジェントまたはクリック音が発生します。0,200 秒後、サンプルは問題ないように見えます。

これらのトランジェントを取り除くにはどうすればよいですか?!

これが私が使用している私のコードで、ウェブ上で見つかりました:

private void startrec(){
  File file = new File(Environment.getExternalStorageDirectory(),"test.pcm" ); 

  int minBufferSize = audioRecord.getMinBufferSize(44100, 
             AudioFormat.CHANNEL_CONFIGURATION_MONO, 
             AudioFormat.ENCODING_PCM_16BIT);

  short[] audioData = new short[minBufferSize];

  try {
   file.createNewFile();

   OutputStream outputStream = new FileOutputStream(file);

   BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);

   DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);

   AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
     44100,
     AudioFormat.CHANNEL_CONFIGURATION_MONO,
     AudioFormat.ENCODING_PCM_16BIT,
     minBufferSize);

   audioRecord.startRecording();

   while(isRecording){
    int numberOfShort = audioRecord.read(audioData, 0, minBufferSize);

    for(int i = 0; i < numberOfShort; i++){
     dataOutputStream.writeShort(audioData[i]);
    }
   }

   audioRecord.stop();
   audioRecord.release();
   dataOutputStream.close();

  } catch (IOException e) {
   e.printStackTrace();
  }
 }

startrec()関数はボタン クリックで呼び出され、別のボタンで停止します。同じ SOURCE(MIC) を使用しているため、ボタン クリック サウンドが最初にトランジェントを引き起こす可能性があります。

設定の問題かもしれませんが、まだわかりません。

また、44100 サンプル p/s で記録したいと考えています。その間、さまざまなサンプル レートを試しましたが、まだ同じ問題があります。

誰かが私を助けて、アドバイスをくれることを願っています!

良い1日を!

4

0 に答える 0