1

저는 WebRtc 네이티브 AEC API를 사용하고 있습니다.WebRtcAec_Process() API (WebRtc 에코 모듈 내부)의 num_bands 매개 변수는 무엇입니까?

int32_t WebRtcAec_Process(void* aecInst, const float* const* nearend, 
          size_t num_bands, float* const* out, 
          size_t nrOfSamples, int16_t msInSndCardBuf, 
          int32_t skew); 

AEC로 48K 샘플링, 단일 채널 (모노) 오디오가있는 오디오에서 에코를 취소하고 싶습니다.

하지만 왜 num_bands이 필요한지 알 수 없습니다. num_bands에 대해 1 값을 지정하면 AEC (치명적인 오류)가 발생합니다 (RTC_DCHECK_EQ(aec->num_bands, num_bands); 실패).

나는 aec_core.cc에서 48K에 대한 3입니다 aec->num_bands, 의 미리 계산 된 값을 확인 :

if (sampFreq == 8000) { 
    aec->num_bands = 1; 
} else { 
    aec->num_bands = (size_t)(sampFreq/16000); 
} 

을 내가 num_bands 위해 3을 사용하는 경우에도, 내가 잘못된 액세스 충돌을 얻었다. 어떤 방법으로 모든 프레임을 3 부분으로 분할해야합니까?

답변

0

몇 개의 샘플을 처리하려고합니까? 나는 80 또는 160 만 지원한다는 것을 기억하고있는 것 같다.

또한 나는 오래 전에 webRTC 반향 제거 모듈 용 자바 래퍼를 작성했다. 나는 AEC 모듈의 두 가지 구현이 있다고 생각하는 것 같습니다. 하나는 모바일 용이고 다른 하나는 데스크탑 용입니다.

제가 사용한 것은 모바일 전용이며 8Khz와 16Khz 만 지원했습니다.

+0

맞아요. 나는 160 샘플을 통과했다. –