Is there a train at Locust?
connecting
Loading...
Connecting to scanner feed
Trail crossing
Detector (color = status)
  • Waiting for audio...
What is this?
A real-time status page for the Schuylkill River Trail crossings at Locust Street and Race Street on Schuylkill Banks. These at-grade crossings have automated gates that close when CSX freight trains pass through, blocking the trail.
How does it detect trains?
CSX has defect detectors along their tracks that scan passing trains for mechanical problems. When a train passes a detector, it broadcasts a voice announcement on railroad radio frequency 160.230 MHz — something like "CSX detector milepost 6.4, track one, no defects, total axle 404."

A volunteer streams this frequency online via Broadcastify. This app taps into that stream, uses AI speech recognition (Whisper) to transcribe the announcements, and parses out the milepost to estimate when the train will reach the trail crossings.
Where are the detectors?
The trail crossings are at roughly milepost BAK 0.3–0.5. Nearby detectors:

From the south:
Collingdale (MP 6.4) — ~6 mi away, ~14 min warning

From the north:
Laurel Hill (MP 3.1) — ~4 mi, ~10 min
Zoo (MP 2.3) — ~3 mi, ~7 min
Belmont (MP 1.1) — ~2 mi, ~5 min
Field (MP 0.1) — ~0.5 mi, ~1 min

Switch to the Map tab to see these locations.
How accurate is the ETA?
It's a rough estimate based on typical freight train speed through urban Philadelphia (~25 mph). Actual speed varies — trains may slow down, speed up, or stop. Treat the ETA as a general heads-up, not a precise countdown.
What do the colors mean?
Green (Clear): No train activity detected recently.
Red (Train): Train detected and approaching or at the crossing.
Yellow (Caution): Recent detection — train may still be in the area.
Gray: System starting up or scanner feed disconnected.
Can it miss a train?
Yes. This is not a guarantee the crossing is open. It can miss trains if:

• The Broadcastify scanner feed goes offline
• The speech recognition doesn't catch the announcement
• A train enters between detector locations
• Radio interference or poor audio quality

Always look and listen at the crossing regardless of what this page says.
What's in the Transcript tab?
Everything the system hears and transcribes from the scanner feed — dispatcher calls, crew communications, and (when they happen) defect detector announcements. Items highlighted in red matched as detector announcements. Scroll down to load older entries.
How is this built?
The app listens to a live railroad scanner stream via Broadcastify, decodes audio with FFmpeg, filters for speech using WebRTC VAD, transcribes with faster-whisper, then parses for defect detector announcements. Runs on a small cloud server.

Source on GitHub