DiariZen / README.md
inoryQwQ's picture
Upload README.md with huggingface_hub
f647f9e verified
|
Raw
History Blame Contribute Delete
1.88 kB
metadata
language: en
license: cc-by-nc-4.0
library_name: pytorch
tags:
  - speaker-diarization
  - ax650
  - axera
  - onnx
  - axmodel
  - wavlm
  - conformer
pipeline_tag: voice-activity-detection

DiariZen Speaker Segmentation - AX650 Deployment

CPU+NPU hybrid speaker diarization segmentation for AX650 NPU.

Model

Pipeline

Audio (16kHz mono, any length)
  → CPU: resample → 4s sliding window → LayerNorm
  → AX650 NPU: CNN feature extractor (7 conv, U16, 17.7ms)
  → CPU: WavLM Transformer (24L) + Conformer (4L) + Classifier (251ms)
  → Log-probabilities (1, 199, 11) per window

Performance

Stage Time Hardware
CNN 17.7 ms AX650 NPU @1GHz
Backend 251 ms CPU ONNX Runtime
Total 269 ms 14.9x real-time

Accuracy

End-to-end cosine: 0.9997 vs full FP32 reference.

Directory

models/          cnn_features.axmodel + backend.onnx
python/          Python SDK (diarizen_sdk)
cpp/             C++ SDK (diarizen_segmenter)
model_convert/   ONNX export + Pulsar2 compile config
reports/         SDK and simulation reports

Quick Start

pip install -r python/requirements.txt
python python/diarizen_sdk/example.py audio.wav \
  --cnn-model models/cnn_features.axmodel \
  --backend-model models/backend.onnx

Known Limitations

  • 4s fixed window; longer audio requires sliding window stitching.
  • CNN requires U16 quantization (U8 insufficient accuracy).
  • Transformer + Conformer run on CPU (NPU backend limitation with WavLM attention ops).
  • pos_conv_embed Conv (kernel=128, NLC layout) incompatible with NPU; included in CPU backend.