[android] 안드로이드 Audio 인코딩

안드로이드 앱을 개발하다 보면 음성을 녹음하고 인코딩하는 기능이 필요할 때가 있습니다. 이를 위해 안드로이드에서는 MediaRecorder를 사용하여 음성을 녹음하고, MediaCodec를 사용하여 인코딩할 수 있습니다.

음성 녹음하기

안드로이드에서는 MediaRecorder 클래스를 사용하여 음성을 쉽게 녹음할 수 있습니다. 아래는 간단한 예제 코드입니다.

import android.media.MediaRecorder;

private MediaRecorder mediaRecorder;

// 녹음 시작
public void startRecording() {
    mediaRecorder = new MediaRecorder();
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mediaRecorder.setOutputFile("/sdcard/recorded_audio.3gp");

    try {
        mediaRecorder.prepare();
        mediaRecorder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// 녹음 중지
public void stopRecording() {
    mediaRecorder.stop();
    mediaRecorder.release();
    mediaRecorder = null;
}

음성 인코딩하기

녹음된 음성을 인코딩하기 위해 MediaCodec 클래스를 사용할 수 있습니다. 아래는 간단한 예제 코드입니다.

import android.media.MediaCodec;

private MediaCodec mediaCodec;

// 인코딩 시작
public void startEncoding() {
    MediaFormat format = MediaFormat.createAudioFormat("audio/mp4a-latm", 44100, 2);
    format.setInteger(MediaFormat.KEY_BIT_RATE, 128000);
    format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);

    mediaCodec = MediaCodec.createEncoderByType("audio/mp4a-latm");
    mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
    mediaCodec.start();
}

// 인코딩 중지
public void stopEncoding() {
    mediaCodec.stop();
    mediaCodec.release();
    mediaCodec = null;
}

결론

이상으로 안드로이드 앱에서 음성을 녹음하고 인코딩하는 방법에 대해 간단히 알아보았습니다. MediaRecorder를 사용하여 음성을 녹음하고, MediaCodec를 사용하여 인코딩할 수 있습니다. 이러한 기능을 활용하여 안드로이드 앱에서 다양한 음성 처리 기능을 구현할 수 있습니다.

참고문헌: