core/cpp-annote/README.md
Vendored copy of https://github.com/moonshine-ai/cpp-annote, a C++/ONNX Runtime
port of the pyannote community-1 speaker diarization pipeline. Used by the
transcriber for opt-in speaker identification (identify_speakers option).
Streaming sessions bound VBx to a sliding window (default 120s via
diarization_cluster_window_sec); batch/one-shot diarization uses full history.
Local modifications relative to upstream:
Removed the cnpy/zlib dependency: the file-based PldaModel::load() NPZ
loader in src/plda_vbx.cpp and the PYANNOTE_CPP_PARITY=2 heavy NPZ dump
block in src/clustering_vbx.cpp are removed. Only the compiled-in
community-1 model data path is used.
Only the library sources are vendored (no tests, tools, golden data, or cnpy).
Upstream's bundled dependencies (Eigen, kaldi-native-fbank, kissfft) are
moved out of this folder into core/third-party/, alongside the other
vendored libraries.
Deleted src/community1_ort_embedded.cpp, which compiled the segmentation
and embedding ORT models into the library. They are 8.2 MB together and only
a fraction of callers diarize, so they are downloaded now
(docs/diarization-models.md); CppAnnote and CppAnnoteEngine take a
ModelSources instead of falling back to compiled-in data, and no longer
have a default constructor. The two model-geometry JSON blobs from that file
were moved into src/community1_cpp_annote_embedded.cpp by hand, so
regenerating that file upstream will drop them.
src/community1_cpp_annote_embedded.cpp (PLDA/config data) is a generated
file tracked with Git LFS.
Licenses: cpp-annote is MIT (see LICENSE). The community-1 diarization models
are released by pyannote.ai under the Creative Commons Attribution 4.0
License. Each dependency under core/third-party/ keeps its own license
in its folder: Eigen (COPYING.MPL2, MPL2, EIGEN_MPL2_ONLY), kaldi-native-fbank
(LICENSE, Apache 2.0), kissfft (COPYING, BSD 3-clause).