nn-ort
v0.1.5
Published
Shared ONNX Runtime provider for nn-stream-duplex and nn-transcriber
Downloads
129
Maintainers
Readme
nn-ort
Shared ONNX Runtime (ORT) provider for nn-stream-duplex and nn-transcriber.
Overview
nn-ort cung cấp một nguồn duy nhất cho ONNX Runtime ObjC API, tránh xung đột duplicate symbols khi nhiều package cùng sử dụng ORT.
Vấn đề giải quyết
nn-stream-duplexdùng ORT cho Silero VAD (voice activity detection)nn-transcriberdùng Moonshine (đã bundle ORT C++ core bên tronglibmoonshine.a)- Khi chạy cùng nhau → duplicate ORT symbols → crash
Cách hoạt động
- Khi có Moonshine (nn-transcriber):
nn-ortchỉ cung cấp ORT ObjC wrappers + headers, ORT C++ core lấy từlibmoonshine.a - Khi standalone (không có Moonshine):
nn-ortvendoronnxruntime.xcframeworkđể cung cấp đầy đủ ORT
Podspec tự động detect Moonshine presence qua Dir.glob.
ORT Version
Hiện tại: ORT 1.23.0 — phải khớp với version ORT mà Moonshine bundle.
⚠️ Không upgrade headers lên 1.24+ nếu chưa rebuild Moonshine — API struct size mismatch sẽ gây runtime crash.
Kiểm tra version ORT trong Moonshine:
strings packages/nn-transcriber/ios/Frameworks/Moonshine.xcframework/ios-arm64/libmoonshine.a | grep "^1\.[0-9]*\.[0-9]*$"Installation
npm install nn-ortSau đó chạy npx pod-install.
Cấu trúc iOS
ios/
├── NNOrt.podspec # Conditional: Moonshine → headers only, standalone → vendored xcframework
├── ort-headers/ # ORT C API headers (v1.23.0)
├── ort-objc/ # ORT ObjC wrappers (.mm sources, v1.23.0)
│ └── include/ # Public ObjC headers
└── onnxruntime.xcframework/ # Standalone ORT binary (gitignored, ~209MB)Dependencies
Packages sử dụng nn-ort:
nn-stream-duplex:s.dependency 'NNOrt'trong podspec,import NNOrttrong Swiftnn-transcriber:s.dependency 'NNOrt'trong podspec
