projects

SKYTRAC

built with React Native · Expo · TypeScript · Opus · DeepFilterNet3 · NVIDIA Parakeet · sherpa-onnx

SKYTRAC’s iOS and Android app brings push-to-talk and group messaging to teams beyond cellular coverage. Phones connect over Wi-Fi to a DLS-140, which provides the satellite connection. Talkgroups keep voice, text, and saved message presets together, with one person speaking at a time.

React Native and Expo provide the shared interface, while native modules handle audio capture, processing, and playback. An audio relay coordinates turns between speakers.

Voice in noisy environments

Cockpit noise can make speech hard to follow. Optional DeepFilterNet3 noise suppression processes audio on the phone before transmission, without a cloud upload. Automatic gain control adjusts microphone levels, and listeners can change playback volume for individual speakers.

The audio path is designed for a 22 kbps satellite uplink budget. Opus compresses speech to 12 kbps. Satellite packets group six audio frames, trading a little buffering time for less transmission overhead.

Offline dictation when voice is impractical

The app can suggest text mode when the link degrades. Users can type or hold the push-to-talk control to dictate. NVIDIA Parakeet transcribes English speech on the device through sherpa-onnx. After the initial model download, transcription works offline and uses the same noise suppression as live voice.

Users can edit or cancel a transcript before sending. Longer transcripts are split into messages. A persistent outbox retries interrupted sends across app restarts, using idempotency keys to prevent duplicate posts.

Feedback people can see, hear, and feel

Labels, icons, colour changes, and a waveform show whether the app is requesting a turn, transmitting, or receiving. Haptics mark pressing and releasing the control. Distinct audio cues signal permission to speak, incoming speech, release, and errors, helping users follow the conversation without watching the screen.

Screen-reader announcements identify the speaker and when the channel becomes available. Reduced-motion settings disable rotation and waveform movement. With a screen reader enabled, dictated messages wait for an explicit action instead of sending after a timed review window.