← The Tickd Guide

Inspiration

How to build a procedurally generated local sci-fi radio station using Claude and ElevenLabs

Ditch the generic lo-fi beats. Learn how to use LLMs and voice synthesis to build an infinite, creepy, narrative-rich radio station from a fictional dystopian future.

Updated 8/17/2026

The tragedy of boring ambient noise

When you are deep in a coding session, writing a novel, or painting, you need background noise. But let's be honest: the world has run dry of good background audio. There are only so many times you can listen to "Lofi Hip Hop Radio - Beats to Relax/Study To" before you start feeling like a simulated human living in a grey box.

We can do better. We have the technology to build something infinitely more interesting: a live, procedurally generated, fully voiced sci-fi radio station broadcasting from a fictional colony on Mars, a cyberpunk megacity, or a lonely deep-space outpost.

By leveraging Claude for scriptwriting, a fast model like Gemini for structural generation, and ElevenLabs for voice synthesis, you can create an infinite stream of weird weather reports, bizarre local commercials, cryptic news, and dark synth tracks. Here is how to build your own local radio broadcast from the future.

The architecture: How the station functions

Before we write a single line of code or generate a voice, we need to understand how our radio station works structurally. We aren't building a static audio file; we are building a loop that generates new content on the fly.

To see how these concepts fit into the broader landscape of modern AI systems, you can brush up on your terminology in our AI Glossary.

At its core, our station follows a simple programmatic rotation: 1. The Intro: A brief radio jingle or station identifier ("You're listening to Sub-Level 9 FM, broadcasting from the rust sectors..."). 2. The Host Segment: A short monologue from our AI radio host (talking about the weather, corporate mandates, or local gossip). 3. The Music Track: A copyright-free ambient synth or industrial track. 4. The Ad Break: A bizarre commercial for a fictional futuristic product (e.g., neural dampeners, synthetic memory replacements). 5. Repeat.

Step 1: Prompting the ultimate dystopian DJ

Your first task is to define the voice of your station. Claude is unmatched at creative writing and maintaining a highly specific narrative tone without falling into cheesy sci-fi clichés.

We will write a system prompt that forces Claude to generate highly structured script outputs. We want short, punchy segments that feel casual, dry, and slightly unsettling.

Here is the system prompt you should use in your generation script:

`text You are 'Caleb', an AI radio host broadcasting from 'Outpost 44' on a frozen, uninhabited moon. Your tone is tired, dry, quietly cynical, and deeply human. You have been alone on this station for twelve years.

Generate a single radio segment. It must be one of three types: 1. A brief local news update about bizarre corporate mandates or asteroid movements. 2. A local weather report (which is always terrible, cold, or hazardous). 3. A commercial for 'Weyland-Utility' synthetic rations or sleep-replacement pods.

Keep the output under 150 words. Do not include stage directions, sound effect indicators, or intro music cues. Output only the spoken text. `

If you run into issues with Claude cutting off or failing to output clean text for your automated scripts, check the Claude Support Page to troubleshoot system instructions.

Step 2: Giving Caleb a voice with ElevenLabs

To make this radio station genuinely immersive, you cannot use a generic, robotic text-to-speech voice. You need someone with grit, weariness, and texture.

  1. Go to ElevenLabs and browse the community voice library. Look for voices with tags like "gravelly," "whisper," or "mature narrative."
  2. Once you find your "Caleb," grab the Voice ID from the ElevenLabs API console.
  3. Set up a simple Python script that takes the text generated by Claude and sends it to the ElevenLabs API.

This is where the magic happens. When you hear Claude's dry, cynical writing read by a gravelly, tired voice with realistic breaths and pauses, the immersion is immediate. It stops feeling like an AI project and starts feeling like a genuine broadcast leaking through from another dimension.

Step 3: Designing the atmospheric audio wrapper

An isolated voice capella is not a radio station. To make it tick, you need atmosphere.

In your Python playback script, you want to layer three distinct audio components:

  • The Background Hum: A low, continuous ambient drone (like spacecraft ventilation or distant machinery) playing softly in the background at all times.
  • The Radio Filter: Apply a slight bandpass filter to the ElevenLabs voice output to mimic low-fidelity shortwave radio transmission.
  • The Music Segments: Source a folder of royalty-free dark ambient, synthwave, or atmospheric tracks. Your script should randomly select a track to play between Caleb's spoken segments.

Using a simple Python audio library like pydub or pygame, you can easily orchestrate these layers, fading the background music down slightly (ducking) whenever Caleb begins to speak, and fading it back up when he finishes.

Step 4: Letting it run infinitely

To make this a true station, write a simple loop in Python that runs in your terminal.

The loop should: 1. Call the Claude API to generate a new host script. 2. Send that script to ElevenLabs to generate the voice file. 3. Play a random music track from your local folder. 4. Play the generated host voice file with background hum layered underneath. 5. Delete the temporary audio files to keep your hard drive clean. 6. Repeat indefinitely.

Now, whenever you sit down to work, you can boot up your script and listen to Caleb talk about solar flare warnings and the declining quality of synthetic soy rations, interspersed with dark, driving synthesizer tracks. It is atmospheric, endlessly variable, and entirely yours.

claudeelevenlabspythonaudio-aicreative-coding

Keep going

Build something with the prompt generator, decode the jargon in the glossary, or compare the tools on our platform deep-dives.