2012-09-20 55 views
2

我正在開發android應用程序,它將記錄wav文件,之後它應該從聲音數據中獲取波形。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文件中獲取幅度數組而不播放它? `

+0

WAV文件通常是用在文件開始在短標題只是原始的PCM數據。因此,您可以將其作爲二進制文件打開並從中讀取樣本。 – Michael

回答

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