Generated banner for Podcast Generation
Generated logo for Podcast Generation

Podcast Generation

MicrosoftOfficialPublished by Microsoft

  • Skill
  • Workflow
  • Automation and integrations
  • MIT
  • Low risk
  • Has scripts

From the author

Generate AI-powered podcast-style audio narratives using Azure OpenAI's GPT Realtime Mini model via WebSocket. Use when building text-to-speech features, audio narrative generation, podcast creation from content, or integrating with Azure OpenAI Realtime API for real audio output. Covers full-stack implementation from React frontend to Python FastAPI backend with WebSocket streaming.
— the description by Microsoft

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a full-stack implementation for generating audio narratives from text content. It utilizes the Azure OpenAI GPT Realtime Mini model via WebSocket to stream audio and transcripts. The implementation includes a FastAPI backend service for orchestrating the generation process, handling PCM to WAV conversion, and managing database storage, alongside a React frontend component for audio playback.

What it does

  • Connects to Azure OpenAI Realtime API via WebSockets
  • Generates audio narratives from text inputs using various voice profiles
  • Streams PCM audio chunks and transcripts from the model
  • Converts raw PCM audio data into playable WAV format
  • Provides a structured backend service for managing audio narrative requests
  • Supports multiple narrative styles including podcast, summary, and lecture

When to use it

  • When building text-to-speech features for web applications
  • When creating automated audio summaries from existing text content
  • When integrating Azure OpenAI Realtime API for audio output
  • When implementing a full-stack workflow for generating and storing audio narratives

Advantages

  • Enables real-time streaming of audio content
  • Supports customizable narrative styles and voice options
  • Includes logic for audio format conversion and duration calculation
  • Provides a clear architectural pattern for full-stack integration

Usage examples

“Generate a podcast-style audio narrative from my recent bookmarks.”
The system fetches bookmark content, sends it to the Azure Realtime API with podcast-style instructions, and returns a playable WAV audio file.
“Create an educational lecture audio for the selected tag.”
The system compiles content associated with the tag, processes it through the Realtime API using the lecture style, and saves the resulting audio and transcript.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/microsoft/podcast-generation/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip podcast-generation.zip -d .agents/skills

Documentation by Microsoft

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

Files

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an API key, Needs Python

Security

What our scanner noticed· Low risk

  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Microsoft
Publisher
Microsoft (Official)
Source
microsoft/skills · .github/skills/podcast-generation · commit 0696600
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Microsoft.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download podcast-generation.zip