DigitB (Freelance)

Real-Time ATC Communication System

Live transcription of air-traffic-control radio channels: UDP audio transport straight into Whisper, with the resulting text rendered against a sector map as it arrives.

Role
Systems Engineer / Speech & Real-Time Audio
Period
2024
Live air-traffic-control channel transcription with sector map

Screens from the running system

  • The ATC VTT Mapping window transcribing the KIAH ATIS channel: a channel selector with Transcribe and Stop controls, a Houston sector map, and live transcript text describing taxiway closures.
  • The application at startup, before a channel has been selected.
  • A channel selected and transcription starting, with the map pane loading the sector.
  • The transcript pane filling with successive transmissions from the live channel.

01 Problem What was actually hard

Controller radio is one of the least forgiving inputs for speech recognition. It is narrow-band, heavily compressed, saturated with static, spoken at speed, and almost entirely composed of domain vocabulary and phonetic alphabet — 'taxiway november delta closed to aircraft wingspan' is a normal utterance, not an edge case. On top of that the transport matters: a transcript that arrives late is a transcript of something that has already happened, so the pipeline was built on UDP rather than layering audio over TCP or HTTP and inheriting head-of-line blocking and retransmission delay for data whose value expires in seconds.

02 Data Sourcing and preparation

Work concentrated on the audio path rather than on labelling. Live channel feeds were captured and conditioned before recognition — resampling to the rate the model expects, gain normalisation across channels that differ enormously in level, and segmentation on speech activity so a transcription pass is triggered by a transmission rather than by a fixed clock. Channels are enumerated per facility and selectable at runtime, so the same pipeline serves tower, ground and ATIS feeds without reconfiguration.

03 Models Evaluated, kept, cut

4 evaluated 3 kept 1 cut

Kept 3

  • OpenAI Whisper

    The only option robust enough on narrow-band, static-heavy radio with dense aviation vocabulary

  • UDP audio transport

    No retransmission and no head-of-line blocking; a late packet is worth less than a dropped one here

  • Activity-triggered segmentation

    Transcription fires on a transmission, not on a fixed interval — bounds latency and wasted passes

Cut 1

  • TCP / HTTP streaming

    Retransmission and buffering add delay to data whose value expires in seconds

04 Architecture How it fits together

Audio arrives over UDP from the selected channel, is conditioned and segmented on speech activity, and each segment goes to Whisper for transcription. Recognised text is appended to a live transcript pane in a desktop application, next to a map view of the sector so a transmission can be read against the geography it refers to. Channel selection, Transcribe and Stop are direct controls on the window — the operator picks a feed and starts and stops recognition without touching configuration.

Architecture flow: Channel selected then UDP audio ingest then Condition + segment then Whisper then Live transcript + map 01 Channel selected tower · ground · ATIS, per facility 02 UDP audio ingest no retransmission, no head-of-line blocking 03 Condition + segment resample, normalise gain, split on speech activity 04 Whisper transcription per transmission 05 Live transcript + map text rendered against the sector it refers to

05 Production Deployment and operation

Runs as a cross-platform desktop application with the audio ingest, recognition and rendering stages decoupled, so recognition falling behind degrades into lag rather than into dropped audio. Transcription is continuous for as long as the channel is selected.

06 Deep dive The long version, in full

Problem

Air-traffic control audio breaks the assumptions most speech pipelines are built on.

The signal is narrow-band and aggressively compressed. Static is constant. Transmissions are fast, clipped, and overlapping. The vocabulary is almost entirely domain-specific — phonetic alphabet, taxiway identifiers, facility names, standard phraseology — so a general model has to survive a distribution far from ordinary conversational speech.

And the output is perishable. A transcript that lands several seconds late describes a situation that has already changed, which makes transport a design decision rather than an implementation detail.

Approach

UDP, deliberately. Layering the audio over TCP or HTTP buys ordering and retransmission guarantees that are worth nothing here and cost latency that matters. A retransmitted packet arrives after the moment it described has passed; head-of-line blocking stalls everything behind it. Dropping the late packet is the correct behaviour, so the transport that drops it is the correct transport.

Whisper for the recognition itself. Robustness to noise, compression and accent is the entire problem on this input, and the model handles the aviation vocabulary well enough to be useful without domain fine-tuning.

Segment on speech, not on a clock. A recognition pass is triggered by a transmission rather than by a fixed interval, which keeps latency bounded to the length of the transmission and avoids running the model over silence.

Decoupled stages. Ingest, recognition and rendering are separated, so when recognition falls behind — and on a busy channel it will — the system degrades into lag rather than dropping audio on the floor.

What the interface shows

The transcript is rendered beside a sector map, so a transmission about a specific taxiway or ramp can be read against the geography it refers to rather than as a free-floating line of text. Channel selection is a first-class control: the same pipeline serves a tower feed, a ground feed or an ATIS broadcast with a dropdown rather than a reconfiguration.

Stack

  1. Models & inference What does the thinking
    • OpenAI Whisper (speech-to-text)
  2. Runtime & services What holds the connection open
    • Python
    • UDP socket transport
    • Real-time audio conditioning and segmentation
  3. Interfaces & integrations What people and other systems touch
    • Desktop GUI (channel select, live transcript, sector map)