Android 10을 사용하는 일부 장치에서 MediaRecorder.AudioSource.VOICE_COMMUNICATION을 사용하여 녹음 된 오디오가 비어 있음


10

다음 코드를 사용하여 앱에서 음성 메시지의 오디오를 녹음하고 있습니다.

MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
audioRecorder.setOutputFile(audioRecordingFile);
audioRecorder.prepare();
audioRecorder.start();

MediaRecorder.AudioSource.MIC) 대신 MediaRecorder.AudioSource.VOICE_COMMUNICATION을 사용하면 사전 처리 된 깨끗한 오디오를 녹음하는 데 매우 도움이됩니다.

그러나 최근에 기록 된 파일이 비어있는 일부 문제가 최근에 Android 10으로 업데이트 된 일부 장치에서보고되고 있음을 발견했습니다. 모든 Android 10 장치에 이러한 문제가있는 것은 아닙니다. 미 A2.

오류나 예외는 없지만 빈 오디오 출력 파일 만 있습니다.

내가 사용하는 경우 ) MediaRecorder.AudioSource.MIC을 다음 문제는 볼 수 없습니다.

Android 10 및 VOICE_COMMUNICATION과 관련된 다음 정보를 찾았습니다 . Android 10 릴리스에는 VOICE_COMMUNICATION으로 캡처하기위한 다음 요구 사항이 포함되어 있습니다.

이를 바탕으로 다음 코드를 사용하여 AcousticEchoCanceler, AutoGainControl 및 NoiseSuppressor의 가용성을 확인했습니다.

AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()

그리고 Android 10의 Mi A2 및 OnePlus 6에서 동일한 결과를 찾았습니다. 두 장치 모두 AcousticEchoCanceler 및 NoiseSuppressor를 사용할 수있는 것으로 표시하고 AutomaticGainControl을 사용할 수없는 것으로 표시합니다.

이 문제가 모든 Android 기기에 존재하는 것은 아니기 때문에 MediaRecorder.AudioSource.MIC) 를 사용하고 싶지 않습니다 . 동시에 MediaRecorder.AudioSource.MIC 에 언제 폴백 해야하는지 알려주는 오류, 예외 또는 차별화 요소가 없습니다 .

업데이트 : Mi A2에서 Google Assistant가 꺼지면 문제가 해결됩니다. 이것은 포인터 일 수 있습니다 : https://developer.android.com/guide/topics/media/sharing-audio-input

이에 대한 도움을 주시면 감사하겠습니다.



1
연결 한 게시물은 MediaRecorder.AudioSource.VOICE_CALL에 대해 이야기합니다. 내가 사용하는 것은 MediaRecorder.AudioSource입니다. VOICE_COMMUNICATION. 나는 그것에 약간의 차이가 있다고 생각합니다. 또한 통화를 녹음하지 않습니다. 메시징 앱에서 일반적인 오디오 메시지를 녹음하고 있습니다. 또한 모든 Android 10 기기에서 실패하지는 않지만 앞에서 언급 한 것처럼 일부 기기에서만 실패합니다.
binaryKarmic

답변:


1

모든 안드로이드 버전에서 MediaRecorder.AudioSource.VOICE_COMMUNICATION 대신 MediaRecorder.AudioSource.VOICE_RECOGNITION 을 사용했습니다 .

우리는 15 개 이상의 서로 다른 장치에서 샘플을 채취 한 결과 MediaRecorder.AudioSource.VOICE_RECOGNITION 이 하이 엔드 및 미드 레인지 전화를 포함한 대부분의 장치에서 가장 잘 작동 한다는 것을 알았습니다 .

내 이해에 따르면 일부 장치의 일부 장치에서 발생하는 원래 문제는 Android 10 및 VOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processing 과 관련하여 OEM의 구현 문제처럼 보입니다.


Nokia 6.1에서 정확히 같은 문제에 직면했으며 실제로 Google Assistant 도움말을 끄십시오. 그러나 실제로 VOICE_COMMUNICATION 오디오 소스를 사용하려면 어떻게해야합니까? 고객에게 도우미를 비활성화하도록 요청할 수 없으며 음향 반향 제거와 같은 오디오 전처리 기능을 사용할 수 있기를 원합니다. 어쩌면 다른 오디오 fx를 수동으로 설정할 수도 있지만 다른 조언이 있으면 감사하겠습니다.)
Alexey Ershov

1
나는 당신이 어디에서 왔는지 이해합니다. 여기서 문제는 향후 해결 될 수도 있고 그렇지 않을 수도있는 OEM의 버그가있는 구현 인 것 같습니다. 따라서 그것에 의존 할 필요는 없습니다. 몇 초 후에 녹음 된 오디오를 관찰하는 것과 같은 사용자 지정 수정을 수행 할 수 있습니다. 비어 있고 OS 버전이 10보다 높으면 VOICE_RECOGNITION을 사용하여 Assistant를 끄거나 약간 낮은 품질로 전환하는 옵션을 사용자에게 제공하십시오.
binaryKarmic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.