|
Download README.md from HY-2012/Sortformer.AXERA: direct link, hf CLI and curl.
- Browser
- Download file 3.47 kB
-
https://huggingface.co/HY-2012/Sortformer.AXERA/resolve/main/README.md
- Command line
-
hf download hf://HY-2012/Sortformer.AXERA/README.md
-
curl -L -o README.md https://huggingface.co/HY-2012/Sortformer.AXERA/resolve/main/README.md
3.47 kB
| 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-<version>-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 <uri> 1 <start> <dur> <NA> <NA> speaker_k <NA>`) | |
| - 流程: 主机 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/)。 | |