polyvoice
Rust, Python, C 및 명령줄용 안정적인 CPU 화자 분리(speaker diarization) 기능입니다.
Crates.io
PyPI
Downloads
Docs.rs
CI
Release
Codecov
License: MIT
화자 분리 크레이트(speaker diarization crate)입니다. Powerset 신경 분할(neural segmentation), WeSpeaker ResNet34 임베딩, 자동 화자 수 감지를 포함한 VBx 클러스터링 기능을 제공합니다. 16 kHz 모노 오디오에서 타임스탬프가 지정된 발화(turns)까지 단일 Pipeline 호출로 처리할 수 있습니다. 네이티브 제품은 ONNX Runtime을 사용하지 않습니다: 직접 작성된 INT8 커널, 약 8.4 MB의 프로덕션 신경 모델 쌍이며 게이트 모델 접근이 필요 없습니다. 코드와 신경 가중치는 MIT 라이선스이며, VBx PLDA 매개변수는 CC-BY-4.0입니다 (NOTICE 참조).
Python, C FFI 및 CLI가 동일한 크레이트에서 제공됩니다.
예시
라이브러리 (커널 및 모델 자동 다운로드):
use polyvoice::models::ModelRegistry;
use polyvoice::types::{Profile, SampleRate};
use polyvoice::{Pipeline, PipelineConfig};
...
명령줄 인터페이스(CLI):
polyvoice download-models --profile balanced
polyvoice diarize meeting.wav --output meeting.rttm
SPEAKER meeting 1 0.000 12.784 <NA> <NA> SPEAKER_00 <NA> <NA>
SPEAKER meeting 1 13.005 2.530 <NA> <NA> SPEAKER_01 <NA> <NA>
SPEAKER meeting 1 15.688 10.323 <NA> <NA> SPEAKER_02 <NA> <NA>
처리 속도는 호스트와 녹음 파일에 따라 달라지며, 측정 결과는 아래와 같습니다. Python:
pip install polyvoice (python/README.md). C FFI:
docs/FFI.md.
지원 환경 (Surface)
| 지원 환경 | 엔진 | ort 링크 |
|---|
CLI, --features cli | INT8 커널 | 아니요 |
| ... | | |
pyannote과 비교 시
동일한 조건(like-for-like), 엄격한 칼라 0, VoxConverse-test (232개 파일)를 기준으로 합니다. 전체 행렬(diart, whisperx, speakrs 포함): compare.
| polyvoice | pyannote 3.1 |
|---|
| Job | diarization 크레이트 | research diarization |
| ... | | |
| 이 결과들은 동일 호스트에서 진행된 새로운 대결이 아니라, 비교 가능한 출판된 결과들입니다. | | |
| Polyvoice는 CPU 배포와 네이티브 통합에 중점을 두며, 가장 낮은 DER을 주장하지 않습니다. Rust 및 CLI 사용은 Python을 요구하지 않습니다. | | |
속도 (Speed)
1.0.0 버전은 Linux x86_64 (Ryzen AI 9 HX 370) 및 macOS ARM64 (Apple M1 Pro)의 커밋 80bf4b1에서 측정되었습니다. 아래 DER₀는 마이크로(micro), 콜라(collar) 0, 오버랩 점수가 포함된 값입니다. RTFx는 오디오 지속 시간 / 처리 시간을 의미하며, 수치가 높을수록 빠릅니다. 이들은 기록된 실행 결과이며 보편적인 속도 보장은 아닙니다.
| Corpus | Linux DER₀ | Linux RTFx | Mac DER₀ | Mac RTFx |
|---|
| VoxConverse-test (232 files) | 13.34% | 85.7× | 13.33% | 192.8× |
| AMI-test (16 files) | 24.19% | 103.1× | 23.61% | 229.2× |
잠긴 Mac Vox-3 스모크 테스트는 7.11% 마이크로 / 7.39% 매크로 DER₀, 163.3× RTFx 및 454.9 MiB 피크 RSS를 기록했습니다. 신경망 모델 쌍의 크기는 PLDA 매개변수와 애플리케이션 메모리를 제외하고 8,414,314 바이트입니다.
Linux ARM64 및 Windows는 패키지 소비자 자격을 갖추고 있습니다. 따라서 이 행들은 해당 타겟에서의 전체 코퍼스 타이밍을 주장하지 않습니다.
릴리스 증거에는 전체 플랫폼 보고서가 포함되어 있습니다. 벤치마크 기록은 더 빠른 Linux 실행을 포함하여 이전 측정값을 보존하고 있습니다. 이들의 날짜, 빌드 및 타이밍은 이번 릴리스 실행 결과로 대체되어서는 안 됩니다.
작동 방식 (How it works)
audio (f32 PCM)
→ powerset 신경 분할 (overlap-aware)
→ WeSpeaker ResNet34 임베딩
...
설치 (Install)
| Platform | Get it |
|---|
| Linux x86_64 / ARM64, macOS ARM64, Windows x86_64 | 사전 빌드 바이너리 |
| ... | |
[dependencies]
polyvoice = { version = "1", features = ["pipeline-native", "vbx"] }
rustc 1.94. 기본 기능은 비어 있습니다: 게시된 크레이트(crate)는 ort-free BYO 코어이며, 모델과 엔진은 선택적 기능입니다 (library mode). 고정 표면 및 증가 규칙: semver.
benchmarks | api | architecture | library mode | ffi | python | production readiness | CHANGELOG
네이티브 제품은 배치 화자 분리(batch diarization)를 제공합니다: 자동 음성 인식(ASR)이나 화자 식별 기능은 없습니다. BYO Rust 스트리밍은 별도의 API입니다. 비어 있는 기본 기능이라도 여전히 Rust 크레이트에 의존하며; 네이티브 Darwin 환경에서는 C 쉼(shims)과 Accelerate를 사용하고, 다운로드 활성화 빌드에는 네이티브 암호화(crypto)가 포함됩니다. 의존성 계약 및 1.0 범위와 출시 게이트를 참조하십시오.
광고된 1.x API는 SemVer에 따라 안정적입니다. 실험적인 tract/MCP 표면 및 보조 ASR은 별도의 안정성 경계를 가집니다. Rust 소스 빌드는 rustc 1.94 이상을 요구하며; 게시된 Python wheel은 CPython 3.12를 대상으로 합니다. 플랫폼 및 ABI 매트릭스를 참조하십시오.
이름: 이 프로젝트는 polyvoice — Rust용 화자 분리이며, ByteDance의 "PolyVoice" 음성 번역 연구와 관련이 없습니다.