자료조사(2) - 안드로이드의 오디오를 녹음하는 세 가지 방법

by Blogger 하얀쿠아
2011.11.25 11:31 수행 프로젝트 이력/참여자주도형 정보공유 시스템 [2011.12~2012.02]

1. Mediarecorder
API문서: http://developer.android.com/reference/android/media/MediaRecorder.html
사용법: http://developer.android.com/guide/topics/media/index.html


Mediarecorder는 그 이름을 보면 알 수 있듯이, media를 record한다. audio는 마이크를 통해 녹음하여 sdcard에 그 파일을 저장한다. 녹음된 audio의 포맷은 MPEG4, RAW AMR, 3GP가 있다.


<장점>
1) 사용이 쉽다
2) 오디오를 압축된 포맷으로 녹음한다.
3) 전화 소리를 녹음할 수 있다 (수신, 송신 측 모두)
4) 음성 인식을 녹음을 할 수 있다.


<단점>
1) 오디오 버퍼에 접근할 수 없다.
2) 녹음된 오디오를 처리하기가 어렵다 – 왜냐하면 이미 압축된 포맷으로 녹음되었기 때문에.
3) sampling rate를 바꿀 수 없다.
4) recording을 어떻게 발생시킬 지를 거의 컨트롤할 수 없다. (very little or no control)


2. Audiorecord
API 문서: http://developer.android.com/reference/android/media/AudioRecord.html
사용법: http://hashspeaks.wordpress.com/2009/06/18/audiorecord-part-4/


Audiorecord API는 Mediarecorder의 제한을 극복하기 위한 구글의 공식적인 API다. 녹음되는 Audio는 이후의 processing을 위해서 버퍼에 저장된다. Audiorecord의 녹음 방법과 Audio처리 방법은 자바의 방법이다.


<장점>
1) 오디오 녹음을 MONO와 STEREO 중 선택 가능하다.
2) sample size, sample rate, buffersize 등 다양한 오디오 레코딩 속성을 설정할 수 있다.
3) 녹음된 audio는 버퍼를 통해 제공된다.


<단점>
1) Buffer 다루기가 어렵다. 만약 이게 무슨 일을 하는 지 알지 못한다면, 만든 파일을 잃어버릴지도..


3. Audiorecord: native interface
A LITTLE BIT HELP : http://hashspeaks.wordpress.com/2009/04/18/audiorecord-in-android-part-2/
사용법:- ( Coming soon... how to build using NDK, sample code and how to use this API )

 native interface는 C/C++ 라이브러리를 적용한 API를 제공한다. 이 라이브러리들은 JNI를 통해 자바 액티비티로 호출 가능하다. 이 interface를 사용한 프로그램은 NDK를 통해 컴파일되고 JNI를 통해 안드로이드 애플리케이션으로 사용된다.


이 댓글을 비밀 댓글로
    • devPCY
    • 2012.11.20 00:47
    안녕하세요^^ 일단 같은 멤버십 회원이시기에 너무 반갑습니다~
    제가 이번에 음성인식과 보이스 레코딩을 같이 구현하려고 하는데
    Mediarecorder를 이용하면 동시에 구현이 가능하다는 이 포스팅을 보구 막 개발을 해봤어요~
    근데 자꾸 죽는게, 혹시 쓰레드로 Mediarecorder를 돌리면 죽지 않을까요??
    • 반갑습니다 ^^
      제가 mediarecorder를 이용해서 음성인식과 보이스레코딩을 같이 구현해 본 경험이 없어서 이쪽 노하우가 없습니다 ^^;
      죽는 이유를 정확히 파악해야 해결할텐데 , 별도의 쓰레드로 돌리기만 해서 해결 될 문제인지 모르겠네요..
    • ㄱ나니
    • 2014.01.21 13:15
    좋은 정보 잘 정리하셔서 도움이 많이 되었습니다. ^^