Skywatch: Copying the Air Force’s Radio Traffic, One Letter at a Time

“Skyking, Skyking, do not answer.”

If you tune a shortwave radio to 11175 kHz, sooner or later you’ll hear that phrase, followed by a string of letters read in the phonetic alphabet. It’s the US Air Force’s High Frequency Global Communications System (HFGCS), a worldwide network of radio stations that talks to aircraft anywhere on the planet. Mixed in with phone patches and routine traffic are Emergency Action Messages: long blocks of coded characters, read out slowly, then read again.

A small community of hobbyists listens for these and writes them down by hand. I wanted to see how far a computer could get on its own, and how easily people could fix what it gets wrong.

The result is Skywatch: skywatch.zkm.tw.

What it does

  • Listens 24/7. Audio comes from public KiwiSDR receivers, which are web-connected shortwave radios that volunteers run all over the world. You can listen live in the browser.
  • Copies every message. Each transmission is transcribed by Whisper, OpenAI’s open-source speech recognition model, and Emergency Action Messages are turned into characters one by one.
  • Lets people fix it. Every character Whisper isn’t sure about shows up as a red ?. Click it, hear that exact moment of the recording, and vote on what was said. When enough listeners agree, their answer replaces the ?.
  • Watches the sky. A map shows the E-4B “Nightwatch” and E-6B “Mercury” (the so-called doomsday planes), B-52s and a few others whenever they’re broadcasting their position on public ADS-B. It can email me when an E-4B shows up.

The messages are encrypted, so Skywatch doesn’t decode anything, and neither can anyone else. It just writes down what’s said on air, and everything it uses is public.

How it works

An energy squelch watches the audio and cuts out each transmission when someone keys up. Whisper turns that clip into words, and a parser turns words like “Alpha”, “Niner” and “Tango” into characters.

Every Emergency Action Message is read twice (“I say again…”), and that turned out to be the most useful thing about them. Skywatch copies both reads and merges them position by position. A letter lost to static in the first read can usually be recovered from the second. If the two reads disagree, the character stays a ? and both candidates go to the voters.

Whisper vs. static

The hardest part wasn’t the radio or the website. It was getting a speech recognition model to admit when it hadn’t heard anything.

HF radio is mostly noise, and Whisper hates silence. Fed a few minutes of static, it would happily invent something. My favorites:

  • It recited its own prompt back to me (“Skyking, Skyking, do not answer… X-ray Yankee Zulu Niner”) and produced a fake message.
  • It turned five seconds of noise into “Bonjour, X-ray Yankee Zulu.”
  • It counted. Three minutes of static became “1, 1, 1, 7, 5, 8, 8, 9 … 42, 43, 43, 43”, which the parser dutifully saved as a 214-character Emergency Action Message.
  • And, of course, “Thank you for watching!”, because Whisper learned a lot of English from YouTube.

Each one was a small experiment: collect real recordings and blocks of pure noise, try a handful of settings, and keep the one that drops the fake messages without missing real ones. The usual voice-detection filter, for example, threw away most real HF voice, so it’s off. Now every clip gets a fast, literal pass, and only clips that already look like a real message get a slower, more careful second pass.

Five days, start to finish

The first commit was on October 23 and the site went live on the 26th. It runs on one small server, deploys automatically when tests pass, rolls itself back if a health check fails, and backs itself up every night. I also tested it against WCAG 2.2 AA accessibility guidelines, because a site built around listening should work for everyone, including people using screen readers or a phone at 200% zoom.

It was inspired by missileer.watch, which has been doing this kind of watching for a while.

Listen in

Most of the time 11175 is static and the occasional radio check. Then, out of nowhere, a calm voice starts reading letters, and somewhere a few people (and now one computer) start writing them down.