<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harshavardhan Murali</title>
    <description>The latest articles on DEV Community by Harshavardhan Murali (@harshavardhan_murali_4da2).</description>
    <link>https://dev.to/harshavardhan_murali_4da2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4113744%2Fc3ff49fd-3c83-45a7-959d-3d58f2fadb6e.png</url>
      <title>DEV Community: Harshavardhan Murali</title>
      <link>https://dev.to/harshavardhan_murali_4da2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshavardhan_murali_4da2"/>
    <language>en</language>
    <item>
      <title>Building an AI Radio Jockey: How a Late-Night Idea Turned Into a Working Prototype</title>
      <dc:creator>Harshavardhan Murali</dc:creator>
      <pubDate>Mon, 07 Sep 2026 10:50:21 +0000</pubDate>
      <link>https://dev.to/harshavardhan_murali_4da2/building-an-ai-radio-jockey-how-a-late-night-idea-turned-into-a-working-prototype-1ka</link>
      <guid>https://dev.to/harshavardhan_murali_4da2/building-an-ai-radio-jockey-how-a-late-night-idea-turned-into-a-working-prototype-1ka</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Spark&lt;/strong&gt;&lt;br&gt;
It started on an ordinary morning in June 2024. I woke up to the news that OpenAI had shipped a new capability — GPT models could now hold real, natural-sounding conversations. Not the stilted, turn-based text exchanges I was used to, but something that felt closer to actually talking to someone.&lt;/p&gt;

&lt;p&gt;A friend and I couldn't resist testing it. We spoke to it in our own regional language, half-expecting it to fumble. It didn't. It followed along and responded fluently, and that small moment of "wait, it actually understood us" stuck with me for the rest of the day.&lt;/p&gt;

&lt;p&gt;By the time I got home, an idea had taken shape: what if this same conversational ability could sit inside a music app — like a DJ hyping up a house party, or a radio jockey talking between songs? Something that reacted to what was playing and kept the energy going, the way a good RJ does on drive-time radio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Idea to First Prototype&lt;/strong&gt;&lt;br&gt;
I didn't wait long to start. I opened up a conversation with ChatGPT itself to think through the approach — what pieces I'd need, how they'd need to talk to each other, what was realistic to build alone. The rough plan involved pulling data about the currently playing track, feeding that to an AI model to generate radio jockey-style commentary, and then giving that commentary a voice.&lt;/p&gt;

&lt;p&gt;For the personality, I leaned into a style I knew well — the energetic, larger-than-life tone of a well-known FM radio jockey. I spent time shaping how the AI should talk, what tone to strike, and what kind of things a real RJ would say between tracks.&lt;/p&gt;

&lt;p&gt;The very first version had no voice at all — it just printed the generated commentary to the terminal. Bare-bones, but enough to prove the core loop actually worked: pull song data, generate commentary, and have it make sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Hard Part: Finding a Voice&lt;/strong&gt;&lt;br&gt;
Getting text on a screen was the easy part. Making it sound like a radio jockey was not.&lt;/p&gt;

&lt;p&gt;My first attempt used an off-the-shelf text-to-speech library. It technically worked — words came out — but it sounded flat and mechanical. No warmth, no energy, nothing that resembled the lively, off-the-cuff tone I was going for. For a project built entirely around the feeling of a live RJ, that was a dealbreaker.&lt;/p&gt;

&lt;p&gt;After trying out a few other options, I landed on a more capable voice synthesis tool that gave the dialogue real character. It added some extra complexity to how the app was put together, but the payoff in voice quality was worth it — this was the version that finally started to feel alive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It All Fit Together&lt;/strong&gt;&lt;br&gt;
At a high level, the app watched what was currently playing, generated a short piece of RJ commentary about it, turned that commentary into a voice clip, and played it between songs before resuming the music — much like a real radio jockey would.&lt;/p&gt;

&lt;p&gt;One detail I'm particularly proud of: rather than generating each voice clip on the spot and making the listener wait, the app worked a track ahead — quietly preparing the next transition in the background while the current song was still playing, so there was never an awkward pause or delay when it was time to switch. That bit of forward-planning was the difference between something that felt like a rough demo and something that felt like it was keeping pace with the music in real time.&lt;/p&gt;

&lt;p&gt;I also started building a React UI for it. It never made it past prototype stage, but even in that unfinished state it worked well enough that I used the app for my own listening sessions — which, for a side project, felt like a good sign.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where It Stands Now&lt;/strong&gt;&lt;br&gt;
Not long after I got this working, I received a job offer from IBM, and my focus shifted to my professional career. The project has been on pause since — untouched since sometime in 2024.&lt;/p&gt;

&lt;p&gt;Writing this now, in September 2026, quite a lot has changed in the AI landscape since I first built this. Voice models, latency, and the broader tooling around LLM-powered apps have all moved fast. I still think about picking the project back up at some point, and if I do, I suspect a good chunk of it — especially the voice pipeline — could be rebuilt more simply with what's available today.&lt;/p&gt;

&lt;p&gt;For now, it remains a project I'm proud of: a personal idea, taken from a half-joking conversation with a friend to a working prototype that actually did what I set out to build.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>rj</category>
      <category>spotify</category>
    </item>
  </channel>
</rss>
