Sanymar
A local-first Windows desktop AI radio jockey that speaks between Spotify tracks.
Summary
What it is
Sanymar observes authorized Spotify playback, writes short English radio dialogue locally, synthesizes it with a local voice provider, and plays the result through the Windows default audio device. It is designed as a privacy-conscious desktop app with explicit provider boundaries and local-first storage.
Why it exists
The problem behind it
Sanymar exists because Spotify's radio jockey and AI DJ-style experience is not available in my country. I wanted to build a version for myself and for local listeners: a desktop companion that can understand the current track, prepare short radio-style commentary, and speak between songs without sending private playback context to a hosted service.
Brief architecture
How it is put together
Sanymar is a Tauri 2 modular monolith. React owns the UI and typed IPC calls, while Rust modules handle Spotify playback state, provider boundaries, SQLite persistence, RJ script coordination, local TTS, validated WAV playback, and security-sensitive storage. Spotify uses Authorization Code with PKCE and Windows Credential Manager. Local generation can use loopback-only Ollama, and speech synthesis uses bundled Kokoro through Sherpa-ONNX.
Highlights
What this project covers
- Uses Spotify Authorization Code with PKCE and stores tokens in Windows Credential Manager.
- Generates bounded local dialogue with optional loopback-only Ollama and defensive validation.
- Bundles English Kokoro synthesis through Sherpa-ONNX for in-process local speech.
- Prepares transition commentary, pauses Spotify at handoff, speaks alone, then resumes the next track.
Share this project
Share this project with someone who might find it useful.