가능합니다.
아래 방법을 사용하시면 될 듯 합니다.
1. 가수 목소리 + 배경음 재생
=> MediaExtracktor를 통해 mp3파일에서 Mp3 packet 데이터를 뽑고 이 데이터를 MediaCodec를 통해 PCM으로 변경 시켜 AudioTrack을 통해 재생시킬 수 있습니다.
2. 원하는 구간 마다 가수의 목소리 파일을 중지
=> 1번 과정을 통해 구한 PCM 데이터를 중 가수 목소리 쪽 PCM을 AudioTrack에 write 하지 않으면, 가수 목소리가 안 나옵니다.
3. 사용자의 목소리를 녹음
= > AudioRecoder를 통해 사용자 목소리(MIC정보)를 PCM 데이터로 구할 수 있습니다.
4. 마지막에는 모든 소리를 합침
=> 합치기 위해선 2,3번으로 구한 PCM 데이터의 SamplingRate, Channel count 를 동일하게 맞춰 주셔야 합니다.
https://github.com/google/ExoPlayer/blob/release-v2/library/core/src/main/java/com/google/android/exoplayer2/audio/ResamplingAudioProcessor.java
https://github.com/google/ExoPlayer/blob/release-v2/library/core/src/main/java/com/google/android/exoplayer2/audio/ChannelMappingAudioProcessor.java
를 참조하셔서 각 PCM 데이터 SamplingRate, Channel count 를 동일하게 맞춘 후 더해 주시면 merge가 됩니다.
(https://stackoverflow.com/questions/6161231/merging-pcm-audio-files)
5. 하나의 mp3 파일로 만들어야합니다.
=> 4번을 통해 구한 pcm 파일을 Mp3 로 생성해야 하는데, 불행히도 안드로이드 자체 API로는 생성이 안되는듯 합니다.
(관련 라이센스가 작년에서야 만료 되었으니.. 좀 지나면 지원가능할 수도 있지만.. 현재는 안됩니다.)
https://stackoverflow.com/questions/3641920/how-to-encode-a-wav-to-a-mp3-on-a-android-device
를 참조해서 mp3를 만드셔야 할 듯 합니다.
(AAC는 MediaRecoder 에서 지원하니 AAC로 저장하는 것도 방법입니다)