|
1 | 1 | # Baltimore Scanner |
2 | 2 |
|
3 | | -Live Police, Fire & EMS radio scanner for Baltimore City with tab audio capture and real-time speech-to-text transcription. |
| 3 | +Live Police, Fire & EMS radio scanner for Baltimore City with Whisper AI transcription running entirely in your browser. |
4 | 4 |
|
5 | 5 | ## Features |
6 | 6 |
|
7 | 7 | - **Tab Audio Capture** - Capture audio directly from the Broadcastify browser tab |
8 | | -- **Audio Visualizer** - Real-time frequency visualization of the captured audio |
| 8 | +- **Whisper AI Transcription** - OpenAI's Whisper model runs locally in your browser (no server needed) |
| 9 | +- **Audio Visualizer** - Real-time frequency visualization |
9 | 10 | - **Volume Control** - Adjust playback volume |
10 | | -- **Speech-to-Text** - Live transcription using Web Speech API |
11 | 11 | - **Timestamped Transcript** - Each entry shows when it was captured |
12 | | -- **Responsive Design** - Works on desktop and mobile |
| 12 | +- **Privacy First** - All processing happens locally, no data sent to servers |
13 | 13 |
|
14 | 14 | ## How to Use |
15 | 15 |
|
16 | | -1. Open the [Broadcastify player](https://www.broadcastify.com/webPlayer/40593) in a new tab |
17 | | -2. Start playing the audio in the Broadcastify tab |
| 16 | +1. Click **"Load Model"** to download the Whisper AI model (~40MB, one-time download) |
| 17 | +2. Open the [Broadcastify player](https://www.broadcastify.com/webPlayer/40593) in a new tab and start playing |
18 | 18 | 3. Return to Baltimore Scanner and click **"Capture Tab Audio"** |
19 | 19 | 4. Select the Broadcastify tab and check **"Share tab audio"** |
20 | | -5. Click **"Start Transcription"** to begin speech-to-text |
21 | | -6. The scanner audio will play through this page with live visualization |
| 20 | +5. Click **"Start Transcription"** to begin AI-powered speech-to-text |
22 | 21 |
|
23 | 22 | ## Live Demo |
24 | 23 |
|
25 | 24 | Visit: https://arandomguyhere.github.io/baltimorescanner/ |
26 | 25 |
|
27 | 26 | ## Requirements |
28 | 27 |
|
29 | | -- **Browser:** Chrome or Edge (required for tab audio capture and speech recognition) |
30 | | -- **Permissions:** Screen sharing (for tab audio) and microphone (for transcription) |
31 | | -- **Internet:** Required for Broadcastify stream |
| 28 | +- **Browser:** Chrome or Edge (required for tab audio capture) |
| 29 | +- **Internet:** Required for Broadcastify stream and first-time model download |
| 30 | +- **Storage:** ~40MB for Whisper model (cached in browser) |
| 31 | + |
| 32 | +## Technical Details |
| 33 | + |
| 34 | +- **Audio Capture:** `getDisplayMedia()` API for tab audio |
| 35 | +- **Transcription:** Whisper tiny.en model via [Transformers.js](https://huggingface.co/docs/transformers.js) |
| 36 | +- **Processing:** 5-second audio chunks processed in real-time |
| 37 | +- **No Backend:** Everything runs client-side in WebAssembly |
32 | 38 |
|
33 | 39 | ## Files |
34 | 40 |
|
35 | 41 | - `index.html` - Main page structure |
36 | 42 | - `styles.css` - Dark theme styling with visualizer |
37 | | -- `app.js` - Audio capture, visualization, and speech recognition |
38 | | - |
39 | | -## Technical Details |
40 | | - |
41 | | -- Uses `getDisplayMedia()` API to capture tab audio |
42 | | -- Web Audio API for processing and visualization |
43 | | -- Web Speech API for transcription |
44 | | -- No server required - runs entirely in the browser |
| 43 | +- `app.js` - Audio capture, Whisper integration, and UI logic |
45 | 44 |
|
46 | 45 | ## Disclaimer |
47 | 46 |
|
|
0 commit comments