Tracking: Whisper-class offline ASR on Android — engine-side P0
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 20/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- machine-learning, mobile
Hướng nghiên cứu
Start with the linked P0 issues #1275–#1281 to identify a bounded engine-side task; this tracking issue spans native kernels, scheduling, VAD, ONNX import, and numerical tooling. Use the stated Pixel-class whisper-tiny.en exit criterion and M2-A5 harness as the completion guide: the encoder must be at least 5× faster than the scalar path, matmuls must name their kernels, and Silero VAD must match ONNX Runtime within 1e-4 without an ORT dependency.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Goal
Make SKaiNET the obvious engine for a fully offline, Whisper-class transcription app on Android. The reference case is an existing app on LiteRT (Whisper large-v3-turbo split encoder/decoder on OpenCL FP16, Parakeet TDT 0.6B, Silero VAD on ONNX Runtime, a 350M LLM for titles on LiteRT-LM): three native runtimes in one APK, hand-written mel/FFT/resampler/tokenizers/decode loops, and model-file surgery plus byte-patched runtime AARs to work around GPU numerics bugs. Its author's Pixel 7 Pro numbers are the bar:
| Path | 14 s memo | RTF |
|---|---|---|
| LiteRT CPU, XNNPACK, 2×3 threads | 82.2 s | 5.9 |
| LiteRT GPU, OpenCL FP16 | 34.4 s | 2.5 |
Target for this milestone: CPU-only SKaiNET Whisper large-v3-turbo at or below 82 s on the same class of device, token-identical to whisper.cpp, with the audio side and VAD served by SKaiNET libraries.
What 0.54.0 already provides
- JNI NEON backend (
skainet-backend-jni-cpu) for every GGML quant format, runtime dotprod dispatch, threaded packed matmuls, self-installing dispatch (#920 → 0.50–0.52). - Off-heap mapped weights on Android (
AndroidGguf.loader,WeightForm(residency = MAPPED)), memory plan and device fit check before load; a 1.0 GB Q4_K_M LLM decodes at 61–66 ms/step on a Pixel 8a. Lstmwith explicit state (#823);transformer-coreKV cache; tape → StableHLO export at billion-parameter scale (0.53.0).
Engine-side P0 (this repo)
- #1275 — dense FP32/FP16 matmul on the JNI tier (attention is scalar on Android today)
- #1276 — native fused LayerNorm / GELU / softmax / conv1d kernels
- #1277 —
Scheduleon Android verified and measured for SDPA - #1278 — native Silero VAD model on
Lstm, weights from the upstream ONNX file - #1279 — ONNX importer: LSTM, Gather, Unsqueeze/Squeeze, Cast, Where, If
- #1280 —
TensorDump+TensorComparefor divergence localisation - #1281 — FP16 simulation context + FP32-accumulating LayerNorm lowering rule
Out of this repo, tracked with the ASR projects
- Whisper v3 128-mel
MelConfigin the audio library (HF-exact constants). - Whisper large-v3-turbo model + self-attention KV cache + timestamp rules + long-form windowing in the Whisper project, on top of the current engine pin.
- Consumer docs: the artifact picker must list
skainet-backend-jni-cpu; theAndroidGgufKDoc still says packed tensors heap-stage (fixed in 0.50.0).
Follow-ups already identified (P1, separate issues when P0 lands)
AndroidGguf.loaderover anAssetFileDescriptorso anoCompressGGUF is mapped straight from the APK instead of copied out.- Windowed mapping to lift the 2 GB single-region cap.
- HF
tokenizer.jsonbyte-level BPE loader for Whisper vocab. - Parakeet TDT cartridge reusing
Lstmand the 128-mel config.
Exit criterion
whisper-tiny.en runs on a Pixel-class phone through the JNI tier with mapped weights and the M2-A5 harness names the kernel behind every matmul; the encoder is ≥ 5× faster than the 0.54.0 scalar path; Silero VAD matches ONNX Runtime within 1e-4 with no ORT dependency.
- Ngôn ngữ chính
- Kotlin
- Star
- 52
- Fork
- 15
- Merge trung bình
- 1 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 36
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của SKaiNET-developers/SKaiNET
-
coding good first issue size:xs skill:kotlin-core sub-issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
SKaiNET-developers/SKaiNET#1323 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
coding good first issue platform size:xs skill:js sub-issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
SKaiNET-developers/SKaiNET#1232 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
skeep tracking
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
SKaiNET-developers/SKaiNET#1331 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
assessment size:s skill:review sub-issue
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 18/100
SKaiNET-developers/SKaiNET#1330 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation good first issue size:s skill:docs sub-issue
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 78/100
SKaiNET-developers/SKaiNET#1329 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của SKaiNET-developers/SKaiNET
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
lugassawan/swe-workbench#799 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Default book icon displayed while loadingCó thể đã có người làm @Bhaskar-Guthula-137 đã nhận hôm nay. Đang mởbug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
kiwix/kiwix-android#5194 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
jellyfin/jellyfin-androidtv#5885 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 73/100
tortuvshin/open-apps#377 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
contributor: external needs review
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày