2作者: praveenperera大约 1 个月前原帖
Speakrs 在 Rust 中实现了完整的 pyannote community-1 风格的分段识别管道,包括分段、幂集解码、重叠添加聚合、二值化、嵌入、PLDA 和 VBx 聚类。<p>该库路径中没有 Python 运行时。推理在 ONNX Runtime 或原生 CoreML 上运行,其余的管道则保持在 Rust 中。<p>在 macOS 上速度提升为 20 倍至 30 倍,但在 Linux/CUDA 上仅提升 2-3 倍(具体取决于 CPU)。<p>其速度更快的几个原因:<p>1. Speakrs 使用的是 CoreML 版本的模型。我专门导出了这些模型以便在 CoreML 上运行。而 PyAnnote 则是在 macOS 上通过 MPS(Metal)运行相同的 PyTorch 版本。<p>2. PyAnnote 并不是单一模型,而是将几个不同的模型组合在一起形成的管道,README 中有关于完整管道的一些信息。<p>3. Speakrs 优化了管道,使得不同部分可以在 CPU、神经引擎和 GPU 上运行。<p>Speakrs 具有批处理模式,可以同时处理多个文件,这样可以充分利用 CPU/GPU/ANE 的资源。<p>因此,在 Linux/CUDA 上速度提升并不明显,因为 PyAnnotate 已经优化为在 CUDA 上运行,我们在 CUDA 上获得的速度提升是通过在 CPU 上运行一些任务,同时在 GPU 上运行其他任务实现的。Linux 上的速度提升将取决于 CPU 的性能。<p>此外,还有一种快速模式,牺牲了一些速度以提高准确性,速度可提升至 50 倍,对于某些类型的音频,准确性损失并不明显。基准测试中有更多相关信息。