1

내 메신저 전화 응용 프로그램에서 다음 코드를 사용하고 있습니다 :통화에 가장 적합한 오디오 설정은 무엇입니까?

this.audioRecord = new AudioRecord(
       MediaRecorder.AudioSource.DEFAULT, 
       Constants.SAMPLE_RATE, 
       AudioFormat.CHANNEL_IN_MONO, 
       AudioFormat.ENCODING_PCM_16BIT, 
       Constants.BUFFER_SIZE_RECORDING); 

이 호출 오디오에 가장 적합한 설정인가? 나는 에코와 함께 몇 가지 문제가 있습니다. AudioSource.MIC과 VOICE_COMMUNICATION을 시도했지만 성능이 떨어졌습니다. 다른 변수를 변경하면 오디오 품질이 향상 될지 궁금합니다. 호출 앱에 가장 적합한 변수에 대한 아이디어. Nexus 6 또는 픽셀 2에서도 종종 오디오가 들리지 않습니다.

답변

1

Android의 오디오는 제조업체가 서로 다른 기능의 다른 오디오 칩을 넣기 때문에 항상 힘든 문제입니다. 모든 전화.

그 말은 VOICE_COMMUNICATION입니다. "VoIP와 같은 음성 통신을 위해 조정되는 마이크 오디오 소스입니다. 예를 들어 반향 제거 또는 가능한 경우 자동 이득 제어를 활용할 것입니다."

따라서 에코 및 기타 방해 노이즈를 제거하려면 이미 AcousticEchoCancelerNoiseSuppressor을 사용해야합니다. 그러나 필터링되지 않거나 필터링 된 오디오를 원한다면 결국에는 유스 케이스로 넘어갑니다.

또한 샘플링 속도를 높이기 위해 시도 할 수 있습니다 (Constants.SAMPLE_RATE 48000 즉, 가장 현대적인 전화의 샘플링 속도 때문에 최선을 다해야) 더 나은 신호를 얻을 수 및 비트 심도 (ENCODING_PCM_FLOAT-ENCODING_PCM_16BIT). 지원되는 샘플링 속도는 전화마다 다릅니다. 전화가 지원하는 내용을 찾으려면 audio sampling rates discussion에서 솔루션을 적용하십시오. 샘플링 속도에 대한 자세한 내용은 Sampling Audio 문서를 참조하십시오.

종종 아무 소리도 들리지 않는 문제는 게인이 너무 낮거나 (AudioSource.MIC 일 수 있음) 또는 레코더가 아직 준비가되지 않은 경우에 발생할 수 있습니다 (나는 여기에서 교육받은 추측을하고 있습니다. 나는 당신의 코드를 모른다.)

+0

감사합니다. 아주 자세하게. 나는 18 + 버전을 지원하고 ENCODING_PCM_FLOAT는 21and +에서만 작동합니다. AudioFormat.CHANNEL_IN_MONO에 대한 의견 "및 버퍼 크기 기록 증가 –

+0

CHANNEL_IN_STEREO를 사용하는 경우 장치에 따라 하나의 채널이 전화용 마이크가되고 다른 하나는 캠코더 마이크가됩니다. 많은 오디오가 처리되기 전에 버퍼링되기 때문에 대기 시간이 늘어나고 버퍼 오버런에 대한 안정성이 향상됩니다. 일반적으로 낮은 값을 목표로하고 싶습니다. 너무 낮게되면 'AudioRecord'가 불평 할 것입니다. – leoderprofi

+0

방금 ​​사용 중입니다. 안드로이드 폰용, 호출 앱, 태블릿 또는 기타 제품, 넥서스, 삼성 및 픽셀 장치 만 해당 18+에서 26 사이의 이상적인 세트는 무엇입니까? –