2

我正在开发 android 应用程序,它将记录 wav 文件,然后它应该从声音数据中生成波形。

我正在使用 AudioRecorder 从麦克风录制声音。`

bufferSize = AudioRecord.getMinBufferSize(44100,AudioFormat.CHANNEL_IN_STEREO,AudioFormat.ENCODING_PCM_16BIT);

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
        44100,AudioFormat.CHANNEL_IN_STEREO,AudioFormat.ENCODING_PCM_16BIT, bufferSize);

    recorder.startRecording();

    isRecording = true;

    recordingThread = new Thread(new Runnable() {

        @Override
        public void run() {
            writeAudioDataToFile();
        }
    },"Innovolt AudioRecorder Thread");

    recordingThread.start();

这将作为 wav 文件存储在内存中。到这一步没问题。

现在我必须从录制的声音文件中获取幅度变化。

有没有办法从录制的 wav 文件中获取振幅数组而不播放它?`

4

1 回答 1

0

我最近为此录音目的制作了图书馆。你只需要这样做:-

recorder = OmRecorder.wav(
new PullTransport.Default(mic(), new PullTransport.OnAudioChunkPulledListener() {
    @Override public void onAudioChunkPulled(AudioChunk audioChunk) {
      animateVoice((float) (audioChunk.maxAmplitude() / 200.0));
    }
  }), file());

你可以很容易地得到幅度!您可以找到有关此的更多信息:-

https://github.com/kailash09dabhi/OmRecorder

于 2016-08-24T17:08:41.830 回答