AI DJ Radio

Screenshot of AI DJ Radio in action

Spotify just gives me the same music recommendations over and over, and it's DJ X always wants to play the same 20 tracks. It's radio stations keep slipping in tracks I've listened to recently. Even the playlists it has seem to keep playing the same songs over and over.

I assume this is self-perpetuating too. Every time it recommends a song it knows I've played recently, and I play it, I'm just telling the algorithm that I've listened to it again. I think I'll eventually just end up with 1 song on every playlist.

My son is discovering his music taste and listening to lots of different things, just like we all did when we were 15. He's also discovering the joy of physical media and asked for a CD player. So we started pulling out the CDs stashed at the back of the garage and then I found the rips of them all on a hard disk from 20 years ago, back when I was still using Winamp and then iTunes.

So armed with the stuff I liked when I was 15, I wrote my own my radio station with the aim of trying to make it sound as much like real radio as I could. I looked at various existing GitHub projects, but none of them seemed to go much further than basic random track selection and AI generated speech in between.

Steve Wright in the Afternoon is still the gold standard I'm aiming for. The average person should not be able to tell that they're not listening to a real radio station (and in my tests so far, this has been the case).

https://github.com/richard5mith/ai-dj-radio

It has:

  • Multiple DJs, who have scheduled shows throughout the day. Each with their own personality, voice, music folders.
  • ChatGPT, Elevenlabs or Gemini 3.8 TTS powered voices. ChatGPT and Gemini are cheap, Gemini is better. Elevenlabs is expensive.
  • DJ speech is generated by ChatGPT. Could be the weather (weather API integration), trivia, the time, station ident etc. The app decides the type, then asks the LLM to generate the text, giving it context like the time of day or the songs that just played or are about to play, then it passes that text to the TTS system.
  • I generated several jingles using Suno and then it plays these at random. Some DJs have their own. This is incredibly good fun and it kills me that Suno have dropped how many downloads I can have per month because I used all of mine just generating new jingles every week.
  • Music beds for behind the DJ speech I also generated with Suno. Radio stations don't broadcast silence.
  • Sponsor reads. I made up sponsors based on movies. Cyberdyne Systems for example.
  • RSS integration, so pulls Techmeme and Webdog RSS feeds and reads the news.
  • Songs are picked in lots of different ways - randomly, groups together blocks of same artist, same decade etc.
  • Songs are intro'd or outro'd or just played. Crossfades them together. Ducks the music audio under the DJ talk.
  • Streams HLS audio and video versions. Video does pop up video facts about the songs, as well as visualisation of the audio. Turns out ffmpeg is crazy what it can do, and only an AI can understand it's command line.
  • Web interface that tells you what's up next etc and let's me listen or watch the video. The video also easily streams to VLC on Apple TV.

Thanks to Home Assistant, I have an automation that starts the station every morning on my kids Google Home devices to wake them up. Morning Mike is there to tell them to get out of bed.

Check out the repo and set up your own.