Web Audio API에서 음성 입력을 처리 할 때 전체 스펙트로 그램 해상도를 어떻게 활용할 수 있습니까?

개찰구

저는 온라인 비주얼 중국어 톤 도우미를 개발 중입니다. 여기에는 HPS 알고리즘을 사용한 피치 감지가 포함됩니다 . 그러나이 알고리즘의 성능은 들어오는 스펙트로 그램의 해상도에 의해 제한됩니다. 지금까지 Analyzer 노드를 사용해 왔지만 오디오 컨텍스트의 샘플 속도를 설정할 수 없기 때문에 불필요하게 높은 최고 주파수 (샘플 속도 / 2 = 약 24kHz, 사람의 음성은 약 3.4kHz까지만 올라갑니다)를 얻습니다. 스펙트로 그램. 따라서 스펙트로 그램 해상도가 1024 인 경우 (웹 오디오 API에서 허용하는 최대 fft 크기가 2048이기 때문에) 음성 입력을 분석 할 때 동적 범위의 작은 부분 만 사용합니다.

이 문제를 해결하기 위해 DSP.js에서 발견 된 FFT로 분석 한 버퍼를 수집하기 위해 scriptProcessorNode를 사용하여 더 많은 제어를 얻 도록 노력했지만 이는 분석기를 사용하는 것에 비해 성능면에서 훨씬 더 나쁜 접근 방식 인 것 같습니다. -마디. 아무도이 문제를 해결하는 방법에 대한 제안이 있습니까? 내 설정에 대한 자세한 내용은 개발 블로그 에서 볼 수 있습니다 .

케빈 에니스

asm.js에서 FFT 코드를 구현해 볼 수 있습니다. 크롬과 파이어 폭스 모두 성능이 상당히 향상 될 것이라고 생각합니다. 이것이 바로 asm이 정말 잘하는 일이기 때문입니다.

궁극적으로 이것을 프로파일 링해야 할 것 같습니다. 원하는 빈으로 만 FFT를 직접 구현하는 것이 더 낫습니까? 아니면 초 고해상도의 AnalyserNode를 사용하고 필요하지 않은 것은 버려야합니까? 답은 측정치에 있습니다.

즉, 매우 최적화되지 않은 FFT 구현도 단일 입력에 대한 실시간 분석을 위해 여전히 충분히 빠릅니다. 당신이 어떤 쇼 스토퍼 성능 문제에 부딪쳤다면 나는 약간 놀랄 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관