Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aaaaqwq avatar

Podcast Generation

  • 18 installs
  • 82 repo stars
  • Updated August 2, 2026
  • aaaaqwq/claude-code-skills

podcast-generation is a Claude Code skill that turns text into spoken audio narratives using Azure OpenAI's GPT Realtime Mini over WebSocket.

About

This skill generates podcast-style audio narratives from text using Azure OpenAI's GPT Realtime Mini model over a WebSocket. A developer uses it to add text-to-speech or audio narrative features to an app. It streams PCM audio chunks and a transcript, converts PCM to WAV, and returns base64-encoded audio for frontend playback, with six selectable voices.

  • Generates spoken audio narratives from text via Azure OpenAI GPT Realtime Mini
  • Streams PCM audio over WebSocket, converts to WAV, returns base64 for playback
  • Includes backend Python and frontend JS playback code plus voice options

Podcast Generation by the numbers

  • 18 all-time installs (skills.sh)
  • Ranked #1,007 of 1,337 Generative Media skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
At a glance

podcast-generation capabilities & compatibility

Requires a paid Azure OpenAI Realtime API key (AZURE_OPENAI_AUDIO_API_KEY).

Capabilities
text to speech · audio generation
Works with
azure · openai
Use cases
video generation
Pricing
Bring your own API key
From the docs

What podcast-generation says it does

Generate AI-powered podcast-style audio narratives using Azure OpenAI's GPT Realtime Mini model via WebSocket.
SKILL.md
**Output**: PCM audio (24kHz, 16-bit, mono)
SKILL.md
npx skills add https://github.com/aaaaqwq/claude-code-skills --skill podcast-generation

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs18
repo stars82
Last updatedAugust 2, 2026
Repositoryaaaaqwq/claude-code-skills

What it does

Add a text-to-speech feature that turns text into spoken audio narratives using Azure OpenAI Realtime.

Who is it for?

Building text-to-speech and audio narrative features

When should I use this skill?

You are building text-to-speech, audio narrative, or podcast generation features

What you get

Base64-encoded WAV audio generated from text, ready for frontend playback.

  • base64-encoded WAV audio
  • audio narrative transcript

By the numbers

  • 6 selectable voices
  • 24kHz 16-bit mono PCM output

Files

SKILL.mdMarkdownGitHub ↗

Podcast Generation with GPT Realtime Mini

Generate real audio narratives from text content using Azure OpenAI's Realtime API.

Quick Start

1. Configure environment variables for Realtime API 2. Connect via WebSocket to Azure OpenAI Realtime endpoint 3. Send text prompt, collect PCM audio chunks + transcript 4. Convert PCM to WAV format 5. Return base64-encoded audio to frontend for playback

Environment Configuration

AZURE_OPENAI_AUDIO_API_KEY=your_realtime_api_key
AZURE_OPENAI_AUDIO_ENDPOINT=https://your-resource.cognitiveservices.azure.com
AZURE_OPENAI_AUDIO_DEPLOYMENT=gpt-realtime-mini

Note: Endpoint should NOT include /openai/v1/ - just the base URL.

Core Workflow

Backend Audio Generation

from openai import AsyncOpenAI
import base64

# Convert HTTPS endpoint to WebSocket URL
ws_url = endpoint.replace("https://", "wss://") + "/openai/v1"

client = AsyncOpenAI(
    websocket_base_url=ws_url,
    api_key=api_key
)

audio_chunks = []
transcript_parts = []

async with client.realtime.connect(model="gpt-realtime-mini") as conn:
    # Configure for audio-only output
    await conn.session.update(session={
        "output_modalities": ["audio"],
        "instructions": "You are a narrator. Speak naturally."
    })
    
    # Send text to narrate
    await conn.conversation.item.create(item={
        "type": "message",
        "role": "user",
        "content": [{"type": "input_text", "text": prompt}]
    })
    
    await conn.response.create()
    
    # Collect streaming events
    async for event in conn:
        if event.type == "response.output_audio.delta":
            audio_chunks.append(base64.b64decode(event.delta))
        elif event.type == "response.output_audio_transcript.delta":
            transcript_parts.append(event.delta)
        elif event.type == "response.done":
            break

# Convert PCM to WAV (see scripts/pcm_to_wav.py)
pcm_audio = b''.join(audio_chunks)
wav_audio = pcm_to_wav(pcm_audio, sample_rate=24000)

Frontend Audio Playback

// Convert base64 WAV to playable blob
const base64ToBlob = (base64, mimeType) => {
  const bytes = atob(base64);
  const arr = new Uint8Array(bytes.length);
  for (let i = 0; i < bytes.length; i++) arr[i] = bytes.charCodeAt(i);
  return new Blob([arr], { type: mimeType });
};

const audioBlob = base64ToBlob(response.audio_data, 'audio/wav');
const audioUrl = URL.createObjectURL(audioBlob);
new Audio(audioUrl).play();

Voice Options

VoiceCharacter
alloyNeutral
echoWarm
fableExpressive
onyxDeep
novaFriendly
shimmerClear

Realtime API Events

  • response.output_audio.delta - Base64 audio chunk
  • response.output_audio_transcript.delta - Transcript text
  • response.done - Generation complete
  • error - Handle with event.error.message

Audio Format

  • Input: Text prompt
  • Output: PCM audio (24kHz, 16-bit, mono)
  • Storage: Base64-encoded WAV

References

  • Full architecture: See references/architecture.md for complete stack design
  • Code examples: See references/code-examples.md for production patterns
  • PCM conversion: Use scripts/pcm_to_wav.py for audio format conversion

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

Related skills

FAQ

Which model does it use?

Azure OpenAI's GPT Realtime Mini model via a WebSocket connection to the Realtime endpoint.

What audio format does it output?

PCM audio at 24kHz 16-bit mono, converted to WAV and stored base64-encoded.

Generative Mediallmautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.