📌 Executive Summary & User Story
As a radio listener who appreciates music curation and human warmth,
I want an optional local AI Radio DJ that speaks charismatic 5-second track intros and provides rich liner notes about the artist and album,
So that my terminal radio feels like a personalized NPR, BBC Radio 6, or late-night underground radio broadcast.
🎯 Problem Statement & Community Context
Modern digital streaming has made music listening isolated and sterile. What people love about vintage broadcast radio is the knowledgeable DJ who drops fascinating trivia about the band, the recording year, and the genre context.
🏗️ Detailed Functional Requirements
1. Local AI DJ Voice Synthesis (Piper TTS / Sherpa-ONNX)
- Integrate fast, offline neural TTS (such as Piper or Sherpa-ONNX / native OS speech synthesizer
say/espeak).
- Configurable radio DJ persona voices (e.g., "Late Night Chill", "Retro 80s Broadcaster", "Cyberpunk Host", "BBC Presenter").
2. Intelligent Dynamic Liner Commentary
- When a new track starts (or on-demand when pressing
d):
- Gathers context: Station name, genre, song title, artist, release year, and album trivia from MusicBrainz/Wikipedia.
- Synthesizes a brief, charismatic 5-second radio intro:
"You're locked into halpradio on SomaFM Groove Salad. Up next is Tycho with 'A Walk', from the 2011 album Dive out of San Francisco. Sit back and enjoy the flow."
- Seamlessly ducks music audio volume to 20%, plays the DJ voice intro over the audio stream, and smoothly fades music back to 100%.
3. Interactive Terminal Liner Notes Drawer (i key)
- Pressing
i opens an elegant sliding drawer with markdown formatted album art, artist biography, discography highlights, and song trivia.
🖥️ TUI & Visual Design
┌─ 🎙️ LOCAL AI RADIO DJ ─────────────────────────────────────────────────────┐
│ Persona: "Late Night Chill" | Engine: Piper (Local ONNX, 0ms Cloud Lag) │
│ Speaking: "Up next is Tycho with 'A Walk' from the 2011 album Dive..." │
│ [Music Ducked: 20% ──► Fading to 100%] │
└────────────────────────────────────────────────────────────────────────────┘
🛠️ Technical Architecture & Implementation Details
- Package Location:
pkg/ai/dj.go, pkg/ai/tts.go, pkg/ai/linernotes.go, pkg/ui/modals/linernotes.go.
- 100% Offline Capable: Uses local fast ONNX models or local Ollama instances with zero mandatory cloud API requirements.
- Ducking Mixer: Integrates with
pkg/player/ mixer to smoothly duck stream audio during DJ announcements.
✅ Acceptance Criteria (Definition of Done)
📌 Executive Summary & User Story
As a radio listener who appreciates music curation and human warmth,
I want an optional local AI Radio DJ that speaks charismatic 5-second track intros and provides rich liner notes about the artist and album,
So that my terminal radio feels like a personalized NPR, BBC Radio 6, or late-night underground radio broadcast.
🎯 Problem Statement & Community Context
Modern digital streaming has made music listening isolated and sterile. What people love about vintage broadcast radio is the knowledgeable DJ who drops fascinating trivia about the band, the recording year, and the genre context.
🏗️ Detailed Functional Requirements
1. Local AI DJ Voice Synthesis (Piper TTS / Sherpa-ONNX)
say/espeak).2. Intelligent Dynamic Liner Commentary
d):3. Interactive Terminal Liner Notes Drawer (
ikey)iopens an elegant sliding drawer with markdown formatted album art, artist biography, discography highlights, and song trivia.🖥️ TUI & Visual Design
🛠️ Technical Architecture & Implementation Details
pkg/ai/dj.go,pkg/ai/tts.go,pkg/ai/linernotes.go,pkg/ui/modals/linernotes.go.pkg/player/mixer to smoothly duck stream audio during DJ announcements.✅ Acceptance Criteria (Definition of Done)
dgenerates and speaks a smooth, contextual track commentary over ducked music.idisplays rich liner notes and artist trivia in an aesthetic terminal drawer.config.yaml(ai_dj: falseby default, fully opt-in).