开源项目推荐:pitch-detection
项目基础介绍和主要编程语言
pitch-detection
是一个基于自相关(autocorrelation)的音高检测算法库,主要使用 C++ 语言编写。该项目旨在提供高效的音高检测算法,能够在 O(NlogN) 的时间复杂度内完成音高检测。除了 C++,该项目还提供了 Go、Rust 和 Python 等其他编程语言的实现,方便不同技术背景的开发者使用。
项目核心功能
pitch-detection
项目实现了多种音高检测算法,包括:
- McLeod Pitch Method (MPM):基于 2005 年的一篇论文,提供可视化功能。
- YIN(-FFT):基于 2002 年的一篇论文,同样提供可视化功能。
- Probabilistic YIN:基于 2014 年的一篇论文。
- Probabilistic MPM:作者自己的发明。
这些算法都基于自相关原理,能够在 O(NlogN) 的时间复杂度内完成音高检测。项目还提供了 wav_analyzer
工具,用于将 WAV 文件分割成小块并检测每个小块的音高。
项目最近更新的功能
最近的项目更新包括:
- 移除了 SWIPE' 算法:由于该算法不是基于自相关原理,作者决定移除它,并建议使用
kylebgorman/swipe
的代码。 - 修复了 YIN 和 MPM 中的自相关问题:针对 FFT 中大小为 2 的幂次的问题,使用 r2c/c2r 变换修复了相关问题。
- 修复了 PYIN 的 bug:通过了所有测试用例,解决了
jansommer
在 pull-request #84 中的评论。 - 增加了更多的单元测试:所有测试用例均通过(228/228)。
此外,项目还增加了其他编程语言的实现,如 Go 和 Rust,以及 WebAssembly 模块,使得音高检测算法可以在浏览器中实时运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考