나는 온라인 시각적 인 중국 색조 도우미 종류를 개발 중이다. 이것은 HPS Algorithm으로 피치 검출을하는 것을 포함합니다. 그러나이 알고리즘의 성능은 들어오는 스펙트로 그램의 해상도에 의해 제한됩니다. 지금까지 Analyzer 노드를 사용해 왔지만 audiocontext의 샘플 속도를 설정할 수 없기 때문에 불필요하게 높은 최고 주파수 (샘플러 레이트/2 = 약 24 kHz 인 반면 사람의 음성은 약 3.4 kHz까지 올라갑니다)를 얻습니다. 스펙트로 그램. 따라서 1024의 스펙트로 그램 해상도 (웹 오디오 API에서 허용되는 최대 FFT 크기가 2048이므로)를 사용하면 음성 입력을 분석 할 때 동적 범위의 일부만 활용할 수 있습니다.Web Audio API에서 음성 입력을 처리 할 때 전체 스펙트로 그램 해상도를 어떻게 활용할 수 있습니까?
이 문제를 해결하기 위해 더 많은 컨트롤을 얻기 위해 DSP.js에있는 FFT로 분석 한 버퍼를 수집하기 위해 scriptProcessorNode를 사용하려고했지만 성능이 현저히 떨어지는 접근 방식과 비슷합니다 분석기 노드. 아무도이 문제를 해결하는 방법에 대한 제안이 있습니까? 내 설정에 대한 자세한 내용은 development blog에서 확인할 수 있습니다.
감사합니다. 지금 조금 더 실험하고 있습니다. 이제 requestanimationframe을 사용하여 FFT 변환과 버퍼링, 윈도우 잉 및 변환을 사용하는 제 3 자 자바 스크립트 DSP 메소드 간의 간격을 설정합니다. 초당 60 회의 업데이트를 유지하는 데 어려움이 있습니다. 그래서 나는 asm.js와 DSP를 일반적으로 읽는 동안 분석 노드를 고수 할 것이라고 생각합니다. 그러나 샘플 API를 변경하거나 Audio API 자체 내에서 fft 크기로 2048보다 높을 수 있다면 정말 좋을 것입니다. – torno