--- license: other license_name: nvidia-open-model-license license_link: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/ language: - en pipeline_tag: audio-classification tags: - speaker-diarization - sortformer - axera - ax650 - rttm --- # Sortformer.AXERA `nvidia/diar_streaming_sortformer_4spk-v2.1`(NVIDIA Open Model License)端到端流式说话人日志在 AX650N 的量化部署包: 输入 16 kHz 单声道会议音频,输出 RTTM 说话人时序标签。 - 模型: 2 张拆图 axmodel(U16 激活 / S8 权重)——preencode + encoder;encoder 提供 fifo188(精度优先)与 fifo40(速度优先) - 依赖: Python 仅 numpy + soundfile + axengine;C++ 为预编译 aarch64 可执行文件 ## 目录 ``` ├── models/ # preencode.axmodel / encoder.axmodel / encoder_fifo40.axmodel + model_meta ├── python/ # Python 推理入口(sortformer_sdk + example.py) ├── bin/ # C++ 可执行文件(aarch64):sortformer_ax650 ├── samples/ # 演示音频(AMI 会议 120 s) ├── run_ax650.sh run_cpp_ax650.sh # 一键运行(Python / C++) └── requirements.txt ``` ## Python 运行 ```bash pip3 install numpy soundfile # pyaxengine: https://github.com/AXERA-TECH/pyaxengine/releases/latest pip3 install axengine--py3-none-any.whl ./run_ax650.sh # 自带样例 samples/sample_meeting.wav ./run_ax650.sh input.wav out.rttm --fast # fifo40 快速版 ``` 或: ```python import sys; sys.path.insert(0, "python") from sortformer_sdk import AxengineGraphPair, StreamingDiarizer, SortformerConfig diarizer = StreamingDiarizer( AxengineGraphPair("models/preencode.axmodel", "models/encoder.axmodel"), SortformerConfig(), ) preds = diarizer.process_wav(waveform_16k_float32, 16000) # (T, 4) @ 80 ms lines = diarizer.rttm_lines(preds, uri="meeting") ``` ## C++ 运行 ```bash export LD_LIBRARY_PATH=/soc/lib:${LD_LIBRARY_PATH:-} ./bin/sortformer_ax650 --preencode models/preencode.axmodel --encoder models/encoder.axmodel \ --wav input.wav --rttm out.rttm --threads 8 # 或一键:./run_cpp_ax650.sh input.wav out.rttm [--fast] ``` ## 模型说明 - 输入: 16 kHz 单声道 wav;输出: RTTM(`SPEAKER 1 speaker_k `) - 流程: 主机 log-mel(128 mel / 25 ms 窗 / 10 ms 步长,与 NeMo 逐点对齐)→ preencode → 主机打包 `seq [1,390,512]` → encoder → 主机 `streaming_update`(静音画像 / top-k + AOSC 压缩 / FIFO 弹出)→ 后处理 - 拆图契约:spkcache 188 + fifo 188 + chunk 14 帧,图内无 Scatter/Where;80 ms/帧、最多 4 说话人、1.04 s 延迟 - 完整转换源码见 GitHub: [Sortformer.AXERA](https://github.com/ZY-2012/Sortformer.AXERA) ## 精度与性能(AX650N 实测) ES2004a(1049 s,collar=0): | 推理路径 | DER | RTF | |---|---|---| | NeMo FP32(参考) | 30.89% | — | | C++ fifo188(精度优先) | 30.70% | 0.144 | | C++ fifo40(速度优先) | 30.64% | 0.064 | AMI-SDM(5 场加权)/ AliMeeting(4 场远场,TextGrid 参考),collar=0: | 配置 | AMI-5 DER | Ali-4 DER | |---|---|---| | fifo188 | 33.77% | 21.71% | | fifo40 | 34.34% | 22.02% | ## License 部署代码 Apache-2.0;上游 Sortformer 权重为 [NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/)。