我正在开发一种在线视觉中文音调助手之类的东西。这涉及使用HPS 算法进行音高检测。但是该算法的性能受到传入频谱图的分辨率的限制。到目前为止,我一直在使用 Analyzer 节点,但由于我无法设置音频上下文的采样率,因此我得到了不必要的高频率(采样率/2 = 大约 24 kHz,而人类语音仅上升到大约 3.4 kHz)频谱图。因此,如果我的频谱图分辨率为 1024(因为网络音频 api 允许的最大 fft 大小为 2048),我在分析我的语音输入时只使用动态范围的一小部分。
为了解决这个问题,我也一直在尝试使用 scriptProcessorNode 来收集我用DSP.js中的 FFT 分析的缓冲区以获得更多控制,但这似乎是一种与使用分析器相比性能更差的方法-节点。有人对如何解决这个问题有任何建议吗?更多关于我的设置可以在开发博客中看到。