Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Tracking: Whisper-class offline ASR on Android — engine-side P0

Đang mở
#1,282 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
Công nghệ
android, kotlin
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ả

compute-backend skill:android tracking

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.
  • Lstm with explicit state (#823); transformer-core KV 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 — Schedule on 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 + TensorCompare for divergence localisation
  • #1281 — FP16 simulation context + FP32-accumulating LayerNorm lowering rule

Out of this repo, tracked with the ASR projects

  • Whisper v3 128-mel MelConfig in 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; the AndroidGguf KDoc still says packed tensors heap-stage (fixed in 0.50.0).

Follow-ups already identified (P1, separate issues when P0 lands)

  • AndroidGguf.loader over an AssetFileDescriptor so a noCompress GGUF is mapped straight from the APK instead of copied out.
  • Windowed mapping to lift the 2 GB single-region cap.
  • HF tokenizer.json byte-level BPE loader for Whisper vocab.
  • Parakeet TDT cartridge reusing Lstm and 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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của SKaiNET-developers/SKaiNET

Tất cả issue của SKaiNET-developers/SKaiNET

Issue tương tự

Thêm issue về Kotlin

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.