CoolFace
Apppublic

nityanand1/noaa-apt-decoder

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
App README

NOAA APT Weather Satellite Audio Decoder

A full-stack web application designed to decode NOAA Automatic Picture Transmission (APT) analog satellite signals directly into viewable images from audio recordings.

NOAA APT is an analog image transmission system deployed on NOAA weather satellites (NOAA-15, NOAA-18, NOAA-19). As the satellites orbit the Earth, they broadcast live images over VHF radio (around 137 MHz). When recorded to an audio file, this signal can be processed via AM demodulation and sync synchronization to extract the underlying grayscale images of the Earth.

Prerequisites

Quick Start

  1. 1.Start the application stack completely via Docker:
bash
   docker-compose up --build
  1. 1.Open your web browser and navigate to http://localhost.
  2. 2.Upload an APT audio recording (WAV formatted) and view the results.

Real NOAA APT Recordings

If you do not have your own Software-Defined Radio (SDR) setup, you can find real NOAA APT audio samples at:

  • Wettersatellit.de
  • Radio hobbyist forums and collections. A standard 11025 Hz WAV mono file is highly recommended for best results.

Architecture Diagram

+----------------+      HTTP       +---------------+ 
|                |   Files/JSON    |               |
|  Web Browser   | <-------------> |  Nginx Proxy  | 
|  (Vanilla JS,  |                 |  (:80)        |
|   HTML, CSS)   |                 +-------+-------+
+----------------+                         |
                                           | Routing
                                           v
                       +-------------+     |      +-------------+
                       | Front-End   | <---+      | Back-End    |
                       | Nginx File  |            | FastAPI App |
                       | Server      |            | (Python 3)  |
                       +-------------+            +-------------+
                                                         | 
                                                  FFmpeg & SciPy
                                                  Signal Process

API Reference

MethodPathBodyResponse
POST/api/decode/uploadmultipart/form-data with file{"job_id": "...", "wav_path": "..."}
POST/api/decode/process{"job_id": "...", "wav_path": "..."}DecodeResult (quality, images b64, logs)
GET/api/decode/healthNone{"status": "ok", "ffmpeg": true/false}

Troubleshooting

  • FFmpeg errors or `Unsupported format`: Double-check that your file isn't corrupted and is a valid audio format. Ensure FFmpeg is present (handled by Docker natively in the backend).
  • Fewer than 10 sync lines found: This indicates the carrier wasn't detected completely, or the sync pulses are too corrupted by noise. Check your SDR recording settings.
  • Blank image: The audio file may be silent or too short. A minimum of 0.5 seconds is required but minutes of recording are typically needed for full images.