Skip to content

poisonednumber/Scanner-map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

213 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Scanner Map Discord

A real-time mapping system for radio calls.
Ingests calls from SDRTrunk, TrunkRecorder, or any rdio-scanner compatible endpoint, then:

  • Transcribes audio (local or cloud AI)
  • Extracts and geocodes locations
  • Displays calls on an interactive map with playback and Discord integration
434934279-4f51548f-e33f-4807-a11d-d91f3a6b4db1(1)

๐Ÿ”ฅ Recent Updates

  • Admin-restricted marker editing โ€” Map marker editing now locked behind admin user when authentication is enabled
  • Purge calls from map โ€” New admin-only feature to remove calls by talkgroup category and time range, includes undo button to restore accidentally purged calls
  • Full one-command integration (no multiple terminals)
  • Auto-generated API keys & admin users
  • Improved AI summaries & Ask AI features
  • New S3 audio storage option
  • OpenAI transcription prompting โ€” configure custom prompts in .env to fineโ€‘tune transcription behavior
  • Two-tone detection โ€” powered by icad-tone-detection.
    • Detects fire/EMS tones in radio calls
    • Optionally restrict address extraction to toned calls only, or combine tone + address detection for greater accuracy
  • ICAD Transcribe integration โ€” thanks to TheGreatCodeholio/icad_transcribe for providing advanced radio-optimized transcription support

โœจ Features

๐Ÿš€ Core

  • One-command startup: node bot.js
  • Automatic setup: database, API keys, talkgroups, admin accounts
  • Integrated services: Discord bot + webserver run together

๐Ÿ—บ๏ธ Mapping

  • Real-time calls displayed on a Leaflet map
  • Marker clustering, heatmaps, day/night/satellite views
  • Call details with transcript + audio playback
  • Call filtering and marker editing (admin-restricted when auth enabled)
  • Call purging: Admin-only bulk removal with undo functionality

๐ŸŽค Transcription

  • Local: faster-whisper (CPU or NVIDIA GPU)
  • Remote: via speaches or custom servers
  • OpenAI Whisper API with support for custom prompts
  • ICAD Transcribe for radio-optimized results

๐Ÿค– AI Enhancements

  • Address extraction + geocoding (Google Maps or LocationIQ)
  • AI summaries of recent transmissions
  • "Ask AI" chat about call history
  • Optional twoโ€‘tone detection for toned call filtering

๐ŸŽฎ Discord Integration

  • Auto-post transcriptions by talkgroup
  • Keyword alerts
  • AI summaries with refresh buttons
  • Optional: live audio in voice channels

๐Ÿ”’ Security

  • Optional user authentication
  • Auto-generated API keys
  • Secure session management
  • Admin-only controls for sensitive operations

๐Ÿ“ฆ Installation

Supports Windows 10/11 and Debian/Ubuntu Linux.
Installation scripts handle dependencies, configuration, and setup.

Prerequisites

  • SDRTrunk, TrunkRecorder, or rdio-scanner configured
  • Talkgroup export from RadioReference (Premium subscription recommended)
  • API key for Google Maps or LocationIQ
  • (Optional) NVIDIA GPU for local transcription
  • (Optional) Discord Bot application
  • (Optional) Remote transcription server (e.g., speaches or ICAD)

Quick Start

# Linux
sudo bash linux_install_scanner_map.sh

# Windows (PowerShell as Admin)
.\install_scanner_map.ps1

Then:

cd scanner-map
source .venv/bin/activate   # Linux
node bot.js

โš™๏ธ Configuration

All main settings are in .env. Key options:

  • DISCORD_TOKEN โ€” your bot token
  • Maps_API_KEY / LOCATIONIQ_API_KEY โ€” geocoding provider
  • MAPPED_TALK_GROUPS โ€” talkgroups to monitor
  • TRANSCRIPTION_MODE โ€” local, remote, openai, or icad
  • STORAGE_MODE โ€” local or s3
  • OPENAI_PROMPT โ€” (if using OpenAI) provide a custom transcription prompt
  • ENABLE_TONE_DETECTION โ€” enable/disable twoโ€‘tone detection

Other files to edit:

  • public/config.js โ† map defaults (center, zoom, icons, etc.)
  • data/apikeys.json โ† auto-generated on first run

๐Ÿ“ก Connecting Your Radio Software

  • SDRTrunk: Configure Streaming โ†’ Rdio Scanner endpoint
  • TrunkRecorder: Add an uploadServer entry pointing to http://<server>:<port>/api/call-upload
  • rdio-scanner downstream: Add server + API key

๐Ÿ’ป System Requirements

  • OS: Windows 10/11 or Debian/Ubuntu
  • CPU: Modern multi-core
  • RAM: 16GB+ recommended
  • GPU: (Optional) NVIDIA CUDA (8GB+ VRAM recommended)
  • Storage: SSD (5โ€”10GB for models + audio)

๐Ÿ›  Troubleshooting

  • Logs: combined.log and error.log
  • Check .env values (especially API keys and modes)
  • Verify dependencies: Node, Python, FFmpeg, CUDA (if using GPU)
  • Ensure correct geocoding.js (Google vs LocationIQ)

๐Ÿค Contributing

Pull requests and issue reports are welcome.

๐Ÿ“ฌ Support

  • Open a GitHub Issue
  • Contact poisonednumber on Discord

About

Real-time emergency scanner mapping system that ingests radio communications from SDRTrunk/TrunkRecorder, transcribes audio with AI, extracts locations, and displays live emergency calls on an interactive web map with Discord integration.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors