2作者: praveenperera大约 1 个月前
Speakrs 用 Rust 实现了完整的 pyannote community-1 风格的说话人分割流程:分割、幂集解码、重叠相加聚合、二值化、嵌入、PLDA 和 VBx 聚类。 该库路径中没有 Python 运行时。推理在 ONNX Runtime 或原生 CoreML 上运行,流程的其余部分则保留在 Rust 中。 在 macOS 上,它的速度快 20-30 倍,但在 linux/cuda 上仅快 2-3 倍(取决于 CPU)。 速度更快的几个原因: 1. Speakrs 使用了 CoreML 版本的模型。我专门导出了这些模型以在 CoreML 上运行。PyAnnote 只是通过 MPS (Metal) 在 macOS 上运行相同的 PyTorch 版本。 2. PyAnnote 不是单个模型,而是在一个流程中组合在一起的几个不同模型,自述文件中有关于完整流程的一些信息。 3. Speakrs 优化了流程,因此不同的部分可以在 CPU、神经引擎和 GPU 上运行。 Speakrs 具有批量模式,您可以在其中同时处理多个文件,这样做也可以让 CPU/GPU/ANE 都得到充分利用。 这就是为什么在 linux/cuda 上它没有那么快的原因,PyAnnotate 已经针对在 cuda 上运行进行了优化,我们在 cuda 上获得的加速是通过在 GPU 运行某些内容的同时在 CPU 上运行一些内容实现的。linux 上的加速将取决于 CPU 的性能。 还有一个快速模式,它牺牲了一些速度来换取准确性,速度可以提高 50 倍,并且对于某些类型的音频,不会牺牲太多准确性。基准测试对此有更多信息。