저수준 오디오 엔진 오디오 데이터 재 포맷-샘플 속도 및 비트 깊이 변환

Aug 17 2020

우선, 저수준 오디오 프로그래밍 자습서가 드물게 제공되므로 누군가가 좋은 리소스를 알고 있다면 매우 감사 할 것입니다. 이제 당면한 주제로 넘어갑니다!

개발하려는 오디오 엔진에 WASAPI를 사용하고 있으며 읽은 오디오 파일 데이터를 오디오 장치가 수신 할 수있는 형식으로 다시 포맷하는 데 어려움이 있습니다. 특히 읽은 오디오 파일의 샘플링 속도와 비트 깊이를 요청 된 장치 형식으로 즉시 변환하는 방법이 궁금합니다. 선형 보간이 사용 된 예를 보았지만 그러한 필터가 앨리어싱과 같은 너무 많은 아티팩트를 도입하는 다른 곳에서 읽었으므로 다시 실시간 응용 프로그램에서 오디오 데이터를 다시 형식화하기위한 실용적인 알고리즘이 무엇인지 궁금합니다.

답변

1 hotpaw2 Aug 17 2020 at 15:44

Sinc 보간은 샘플링 전에 원래 적절히 대역 제한되었던 데이터에 앨리어싱 아티팩트를 도입하지 않습니다. (그러나 Sinc 또는 Dirichlet 커널의 지속 시간이 무한하므로 약간 수정해야합니다.)

재구성이 작동하는 이유와 보간 방법에 대한 표준 참조는 다음과 같습니다. https://ccrma.stanford.edu/~jos/resample/

여기에 Basic에서 간단한 구현이 있습니다. http://www.nicholson.com/rhn/dsp.html#3

다른 일반적인 방법은 저역 통과 필터링 된 정수 비율 업 샘플링에 이어 적절한 두 비율에 의한 저역 통과 필터링 된 정수 비율 다운 샘플링입니다. 또 다른 일반적인 방법은 다상 FIR 필터 뱅크 (윈도우 Sinc (또는 최적화 된 FIR 필터)의 여러 위상) 보간 커널을 생성하는 것입니다. 또 다른 일반적인 방법은 각 Sinc 커널 혹의 다항 보간기를 사용하여 Farrow 필터 뱅크를 생성하는 것입니다. .

양자화 노이즈 플로어를 사양보다 낮게 유지하려면 산술 중간 값의 충분한 비트를 전달해야합니다.