Korab CenajEngineering case study All case studies

Independent product project · Android debug build validated 24 July 2026

WortLive Language-Learning Overlay

An Android overlay that captures permitted playback audio, streams ordered PCM frames to an authenticated local worker, and turns finalized German speech into translated captions and reusable vocabulary cards.

Project type
Application and Edge AI Project
Domain
Networking and service delivery
Language
Kotlin / Python
Status
Validated

Executive summary

Operational problem

Language learners watching German media need captions and vocabulary without routing microphone audio through a cloud service. Playback capture, speech segmentation, inference backpressure, ordered delivery, overlay permissions, and local-network trust all have to work together.

Implemented solution

The Android 10+ client captures 16 kHz mono playback audio, sends framed PCM over an authenticated WebSocket, and renders finalized caption and vocabulary events in an overlay that also supports Samsung DeX. A Python worker uses WebRTC voice activity detection, an ordered utterance queue, Faster Whisper, translation, and deterministic vocabulary selection.

Outcome

A debug APK was assembled, five Android tests passed, and all six isolated Python worker tests passed. The implementation preserves utterance order under inference pressure, rejects invalid frames and non-speech, deduplicates vocabulary, exposes explicit stop controls, and never requests microphone permission.

Technical and operational context

The project connects Android media APIs, Kotlin service lifecycle, a binary streaming protocol, Python asynchronous processing, speech inference, backpressure, local-network security, systemd operation, and user-facing recovery controls in one end-to-end product.

Constraints

Architecture

Permitted Android playback capture produces fixed 20 ms PCM frames. An authenticated WebSocket carries a versioned hello message and binary audio to a local worker. Voice activity detection finalizes utterances, the worker transcribes and translates them in order, and the client binds captions and vocabulary to the same utterance identifier.

  1. Android playback capture
  2. 20 ms PCM frames
  3. Authenticated WebSocket
  4. Voice activity detection
  5. Ordered Whisper inference
  6. Caption and translation event
  7. Vocabulary overlay and CSV export

Architecture visual

WortLive architecture from Android playback capture through authenticated streaming and local speech transcription to an on-device caption overlay

The implemented local-first audio and caption path, including the consent, backpressure, and operator-controlled worker boundaries.

Read the diagram notes

Implementation

The Android 10+ client captures 16 kHz mono playback audio, sends framed PCM over an authenticated WebSocket, and renders finalized caption and vocabulary events in an overlay that also supports Samsung DeX. A Python worker uses WebRTC voice activity detection, an ordered utterance queue, Faster Whisper, translation, and deterministic vocabulary selection.

Key decisions and trade-offs

Playback capture instead of microphone input

Capturing application playback keeps room noise and microphone permission out of the path. The trade-off is that Android and the source application must explicitly permit capture.

Utterance queue instead of independent chunks

Voice activity detection and ordered processing preserve sentence boundaries and prevent busy inference from silently dropping audio. Backpressure can increase latency when the worker is undersized.

Local worker instead of mandatory cloud inference

A paired worker keeps audio on an operator-controlled network and makes model choice explicit. The operator must secure the listener, token, firewall, and TLS boundary.

Security, reliability, and observability

Authenticated protocol

The worker requires a generated pairing token and compares it using a constant-time check before accepting streaming audio.

Bounded client state

The Android app retains up to 500 deduplicated vocabulary items and exposes stop controls from both the application and foreground-service notification.

Hardened worker service

Installation creates a dedicated environment and systemd user service; WSS certificate paths and network binding remain explicit operator configuration.

Infrastructure concepts demonstrated

Published evidence

Local build and test record

Sanitized live output
Android unit tests: 5 passed
Debug APK: assembled
Worker tests: 6 passed
Microphone permission: not requested
Streaming protocol: authenticated, ordered utterances

Validation

Checks shown here are project-specific; no portfolio-wide claim is applied automatically.

Evidence and links

Links are limited to public-safe source material and sanitized evidence. Credentials, state, plans, identifiers, private topology, and backup contents are intentionally excluded.

Architecture notes

Playback capture, streaming, transcription, overlay, and trust-boundary notes.

Lessons learned

Limitations

  • No claim is made for DRM-protected applications, sources that disable playback capture, or arbitrary Internet exposure.
  • The recorded validation does not yet include a repeatable instrumented end-to-end latency benchmark across multiple Android devices.
  • The isolated worker suite does not load the speech model or exercise a live WebSocket, model download, or end-to-end audio path.

Next improvement

Publish a sanitized device-to-caption latency benchmark and validate the WSS path on a second Android device.