GPT-Live-Transcribe and GPT-Transcribe: Complete Developer Guide to OpenAI’s New Speech-to-Text Models

GPT-Live-Transcribe and GPT-Transcribe: Complete Developer Guide to OpenAI

GPT-Live-Transcribe and GPT-Transcribe: Complete Developer Guide to OpenAI’s New Speech-to-Text Models

Published: July 29, 2026  |  Category: Developer Guide  |  Reading Time: ~22 minutes

Overview: What Launched on July 29, 2026

On July 29, 2026, OpenAI officially introduced two groundbreaking speech-to-text models to its developer API: GPT-Live-Transcribe and GPT-Transcribe. These models represent a significant leap forward in OpenAI’s audio intelligence capabilities, moving well beyond the Whisper-era architecture into a new generation powered by GPT-native multimodal understanding.

GPT-Live-Transcribe is designed for real-time, low-latency streaming transcription — ideal for live meetings, broadcast captioning, call center monitoring, and interactive voice applications. GPT-Transcribe, by contrast, targets batch audio processing workflows where accuracy, speaker diarization, and rich contextual understanding matter more than millisecond latency.

Additionally, OpenAI announced that GPT-Realtime Livestream — a more powerful streaming variant with conversational intelligence built in — will enter developer preview on August 28, 2026. This upcoming model will combine real-time transcription with live language model reasoning, enabling applications that can interrupt, summarize, and respond to spoken audio in true real time.

“These models don’t just convert speech to text — they understand speech the way a GPT model understands language. They carry context, handle accents, code-switch between languages mid-sentence, and produce structured outputs natively.” — OpenAI Engineering Blog, July 29, 2026

For developers already using the OpenAI Whisper API or building on whisper-1, this guide will walk you through everything you need to migrate, integrate, and optimize your applications around these two new models. Whether you are building a podcast transcription pipeline, a real-time meeting assistant, or an accessibility tool for live events, this guide has you covered.

If you are newer to the OpenAI ecosystem and want a foundational understanding of how OpenAI’s language models work before diving into audio APIs, the resource on OpenAI API Getting Started Guide for Developers provides critical background on authentication, rate limits, and SDK setup that will make this guide far easier to follow.

Model Capabilities: GPT-Live-Transcribe vs. GPT-Transcribe

Understanding the technical distinctions between these two models is essential before writing a single line of code. They serve fundamentally different purposes, and selecting the wrong one for your use case will cost you both money and performance.

GPT-Live-Transcribe: Built for Speed

GPT-Live-Transcribe accepts a continuous audio stream via WebSocket or Server-Sent Events (SSE) and returns partial transcription tokens as the audio is being received. Its architecture prioritizes sub-second first-token latency, making it suitable for any application where the end user needs to see transcribed text appear while someone is still speaking.

  • Streaming protocol: WebSocket (primary) and SSE (fallback)
  • First-token latency: Typically 200–400 ms after speech onset
  • Supported audio formats: PCM 16-bit, Opus, WebM, MP3 (streaming-compatible)
  • Sample rates: 8 kHz, 16 kHz, 24 kHz, 44.1 kHz
  • Language support: 99 languages with automatic language detection
  • Speaker diarization: Up to 10 speakers, real-time
  • Context window: 128 tokens of rolling conversational context
  • Punctuation and formatting: Automatic, with configurable verbosity
  • Profanity filtering: Optional, configurable per-stream

One notable capability is GPT-Live-Transcribe’s ability to maintain a short rolling context buffer. Unlike older streaming transcription systems that operated purely on acoustic windows, this model uses a sliding GPT context to improve accuracy on words that are phonetically ambiguous — resolving them based on what was said earlier in the conversation.

GPT-Transcribe: Built for Accuracy

GPT-Transcribe accepts uploaded audio files or audio URLs and processes them asynchronously, returning a complete, richly structured transcription document. It is optimized for accuracy over speed, using a larger model with deeper language understanding to produce outputs that include speaker labels, timestamps at the word level, sentiment markers, and topic segmentation.

  • Processing mode: Batch/asynchronous
  • Max audio duration per request: 4 hours
  • Supported file formats: MP3, MP4, WAV, FLAC, OGG, WebM, M4A, AAC
  • Max file size: 2 GB
  • Language support: 99 languages with language override option
  • Speaker diarization: Up to 50 speakers per file
  • Timestamps: Word-level, sentence-level, and paragraph-level
  • Output formats: JSON, SRT, VTT, TXT, verbose JSON
  • Topic segmentation: Automatic, with customizable topic hints
  • Custom vocabulary: Up to 1,000 domain-specific terms per request
  • Noise robustness: Significantly improved over Whisper on noisy telephone audio

Side-by-Side Feature Comparison

Feature GPT-Live-Transcribe GPT-Transcribe Whisper-1 (Legacy)
Real-time streaming ✅ Yes ❌ No ❌ No
Batch file processing ❌ No ✅ Yes ✅ Yes
Speaker diarization ✅ Real-time (10 speakers) ✅ Batch (50 speakers) ❌ No
Word-level timestamps ✅ Yes ✅ Yes ✅ Verbose mode
Custom vocabulary ✅ 500 terms ✅ 1,000 terms Prompt-only (limited)
Max audio length Unlimited (streaming) 4 hours per file 25 MB / ~30 min
Output formats JSON stream JSON, SRT, VTT, TXT JSON, SRT, VTT, TXT
Topic segmentation ❌ No ✅ Yes ❌ No
Sentiment markers ❌ No ✅ Yes ❌ No

GPT-Live-Transcribe and GPT-Transcribe: Complete Developer Guide to OpenAI

API Endpoints and Authentication

Both models are accessible through OpenAI’s standard API infrastructure. Authentication follows the same bearer token pattern used across all OpenAI API endpoints — your OPENAI_API_KEY environment variable is all you need to get started.

Base URLs

# GPT-Transcribe (batch)
POST https://api.openai.com/v1/audio/transcriptions

# GPT-Live-Transcribe (streaming)
WSS  wss://api.openai.com/v1/audio/transcriptions/stream
SSE  https://api.openai.com/v1/audio/transcriptions/stream (GET with chunked transfer)

Required Headers

Authorization: Bearer YOUR_OPENAI_API_KEY
Content-Type: multipart/form-data         # for GPT-Transcribe (batch)
Content-Type: application/octet-stream    # for GPT-Live-Transcribe (streaming PCM)
OpenAI-Beta: audio-v2=live                # required for GPT-Live-Transcribe during beta

Model Name Identifiers

When constructing your API requests, you must specify the model name explicitly. OpenAI has reserved the following identifiers as of July 29, 2026:

  • gpt-live-transcribe — Real-time streaming model
  • gpt-live-transcribe-preview — Preview variant with experimental features
  • gpt-transcribe — Batch transcription model
  • gpt-transcribe-preview — Preview variant with experimental features

The whisper-1 model remains available and is not being deprecated. OpenAI confirmed it will continue to be supported for at least 24 months following this announcement, giving existing pipelines ample time to migrate.

Python Code Examples

The following examples use the official openai Python SDK (version 1.40.0 or later, which adds native support for the new streaming audio APIs). Make sure your environment is updated before running these snippets.

Installing the SDK

pip install --upgrade openai
# Verify version
python -c "import openai; print(openai.__version__)"
# Should output: 1.40.0 or higher

GPT-Transcribe: Batch Audio File Transcription

import openai
import os

client = openai.OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

def transcribe_audio_file(file_path: str, language: str = None) -> dict:
    """
    Transcribe an audio file using GPT-Transcribe (batch mode).
    Supports MP3, WAV, FLAC, OGG, WebM, M4A, and AAC formats.
    """
    with open(file_path, "rb") as audio_file:
        response = client.audio.transcriptions.create(
            model="gpt-transcribe",
            file=audio_file,
            language=language,             # Optional: ISO-639-1 code, e.g. "en", "es"
            response_format="verbose_json", # Returns timestamps + speaker labels
            timestamp_granularities=["word", "segment"],
            extra_body={
                "diarize": True,           # Enable speaker diarization
                "max_speakers": 10,        # Upper bound on speaker count
                "custom_vocabulary": [     # Domain-specific terms
                    "OpenAI", "GPT-Transcribe", "API", "WebSocket"
                ],
                "topic_hints": [           # Optional topic context
                    "software development", "artificial intelligence"
                ]
            }
        )
    return response

# Example usage
result = transcribe_audio_file("meeting_recording.mp3", language="en")
print(f"Duration: {result.duration}s")
print(f"Language detected: {result.language}")
print(f"Transcript:\n{result.text}")

# Iterate over segments with speaker labels
for segment in result.segments:
    speaker = segment.get("speaker", "Unknown")
    start = segment["start"]
    end = segment["end"]
    text = segment["text"]
    print(f"[{start:.2f}s - {end:.2f}s] Speaker {speaker}: {text}")

GPT-Transcribe: Generating SRT Subtitle Files

def generate_srt(file_path: str, output_path: str) -> None:
    """
    Transcribe audio and save as an SRT subtitle file.
    Perfect for podcast post-production or video captioning workflows.
    """
    with open(file_path, "rb") as audio_file:
        response = client.audio.transcriptions.create(
            model="gpt-transcribe",
            file=audio_file,
            response_format="srt"
        )

    with open(output_path, "w", encoding="utf-8") as srt_file:
        srt_file.write(response)

    print(f"SRT file saved to: {output_path}")

generate_srt("podcast_episode_42.mp3", "episode_42.srt")

GPT-Live-Transcribe: Real-Time WebSocket Streaming

import asyncio
import websockets
import json
import pyaudio
import os

OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
WS_URL = "wss://api.openai.com/v1/audio/transcriptions/stream"

async def live_transcribe_microphone():
    """
    Capture microphone audio and stream to GPT-Live-Transcribe via WebSocket.
    Prints partial and final transcription tokens in real time.
    """
    headers = {
        "Authorization": f"Bearer {OPENAI_API_KEY}",
        "OpenAI-Beta": "audio-v2=live"
    }

    # PyAudio configuration for 16 kHz mono PCM
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 16000

    p = pyaudio.PyAudio()
    stream = p.open(
        format=FORMAT,
        channels=CHANNELS,
        rate=RATE,
        input=True,
        frames_per_buffer=CHUNK
    )

    print("Microphone open. Speak now (Ctrl+C to stop)...")

    async with websockets.connect(WS_URL, additional_headers=headers) as ws:
        # Send initial configuration message
        config = {
            "type": "transcription_config",
            "model": "gpt-live-transcribe",
            "sample_rate": RATE,
            "encoding": "pcm_s16le",
            "language": "en",
            "diarize": True,
            "custom_vocabulary": ["OpenAI", "GPT", "WebSocket", "latency"]
        }
        await ws.send(json.dumps(config))

        # Concurrent tasks: send audio and receive transcripts
        async def send_audio():
            try:
                while True:
                    audio_chunk = stream.read(CHUNK, exception_on_overflow=False)
                    await ws.send(audio_chunk)
                    await asyncio.sleep(0)  # yield control
            except Exception as e:
                print(f"Audio send error: {e}")

        async def receive_transcripts():
            try:
                async for message in ws:
                    data = json.loads(message)
                    event_type = data.get("type")

                    if event_type == "transcription.partial":
                        # Partial token — overwrite current line
                        print(f"\r[PARTIAL] {data['text']}", end="", flush=True)

                    elif event_type == "transcription.final":
                        # Final committed segment
                        speaker = data.get("speaker", "?")
                        print(f"\n[FINAL] Speaker {speaker}: {data['text']}")

                    elif event_type == "error":
                        print(f"\n[ERROR] {data['message']}")
                        break
            except Exception as e:
                print(f"Receive error: {e}")

        await asyncio.gather(send_audio(), receive_transcripts())

    stream.stop_stream()
    stream.close()
    p.terminate()

asyncio.run(live_transcribe_microphone())

GPT-Live-Transcribe: Transcribing a Recorded Audio File in Streaming Mode

import asyncio
import websockets
import json
import os

async def stream_file_to_live_transcribe(file_path: str, chunk_size: int = 4096):
    """
    Stream a pre-recorded audio file through GPT-Live-Transcribe.
    Useful for simulating real-time processing in testing environments.
    """
    OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
    WS_URL = "wss://api.openai.com/v1/audio/transcriptions/stream"

    headers = {
        "Authorization": f"Bearer {OPENAI_API_KEY}",
        "OpenAI-Beta": "audio-v2=live"
    }

    transcription_segments = []

    async with websockets.connect(WS_URL, additional_headers=headers) as ws:
        config = {
            "type": "transcription_config",
            "model": "gpt-live-transcribe",
            "sample_rate": 16000,
            "encoding": "pcm_s16le",
            "language": "auto"
        }
        await ws.send(json.dumps(config))

        with open(file_path, "rb") as f:
            while True:
                chunk = f.read(chunk_size)
                if not chunk:
                    # Signal end of audio stream
                    await ws.send(json.dumps({"type": "audio.end"}))
                    break
                await ws.send(chunk)
                await asyncio.sleep(0.02)  # simulate ~20ms real-time pacing

        # Drain remaining messages
        async for message in ws:
            data = json.loads(message)
            if data.get("type") == "transcription.final":
                transcription_segments.append(data["text"])
            elif data.get("type") == "stream.end":
                break

    full_transcript = " ".join(transcription_segments)
    print(full_transcript)
    return full_transcript

asyncio.run(stream_file_to_live_transcribe("call_recording_pcm.raw"))

For developers building pipelines that also involve post-processing transcripts with language model summarization or structured data extraction, integrating these audio outputs with GPT-4o or o3 is straightforward. The detailed walkthrough on GPT-4o Multimodal API Integration Patterns covers how to chain audio transcription outputs directly into chat completion requests for downstream analysis.

JavaScript Code Examples

The following examples use the official openai npm package (version 4.55.0 or later) and Node.js 20+. Browser-compatible examples using the Fetch API and the native WebSocket API are also included.

Installing the SDK

npm install openai@latest
# Or with yarn
yarn add openai@latest

GPT-Transcribe: Node.js Batch Transcription

import OpenAI from "openai";
import fs from "fs";
import path from "path";

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

async function transcribeAudioFile(filePath) {
  const fileName = path.basename(filePath);
  const fileStream = fs.createReadStream(filePath);

  const response = await client.audio.transcriptions.create({
    model: "gpt-transcribe",
    file: fileStream,
    response_format: "verbose_json",
    timestamp_granularities: ["word", "segment"],
    // Additional parameters via extra body
    ...{
      diarize: true,
      max_speakers: 5,
      custom_vocabulary: ["JavaScript", "Node.js", "OpenAI", "WebSocket"],
    },
  });

  console.log(`File: ${fileName}`);
  console.log(`Duration: ${response.duration}s`);
  console.log(`Language: ${response.language}`);
  console.log(`\nFull Transcript:\n${response.text}`);

  // Process word-level timestamps
  if (response.words) {
    console.log("\nWord-level timestamps:");
    response.words.slice(0, 10).forEach(({ word, start, end }) => {
      console.log(`  "${word}" [${start.toFixed(2)}s - ${end.toFixed(2)}s]`);
    });
  }

  return response;
}

transcribeAudioFile("./recordings/team_standup.mp3")
  .then((result) => console.log("\nTranscription complete."))
  .catch(console.error);

GPT-Live-Transcribe: Browser WebSocket Implementation

// Browser-native implementation using MediaRecorder and WebSocket
class LiveTranscriber {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.ws = null;
    this.mediaRecorder = null;
    this.onPartial = null;  // callback(text)
    this.onFinal = null;    // callback(text, speaker)
    this.onError = null;    // callback(error)
  }

  async start() {
    // Request microphone access
    const stream = await navigator.mediaDevices.getUserMedia({
      audio: {
        sampleRate: 16000,
        channelCount: 1,
        echoCancellation: true,
        noiseSuppression: true,
      },
    });

    // Open WebSocket connection
    this.ws = new WebSocket(
      "wss://api.openai.com/v1/audio/transcriptions/stream"
    );
    this.ws.binaryType = "arraybuffer";

    this.ws.onopen = () => {
      // Send configuration
      this.ws.send(JSON.stringify({
        type: "transcription_config",
        model: "gpt-live-transcribe",
        sample_rate: 16000,
        encoding: "pcm_s16le",
        language: "auto",
        diarize: true,
        auth: { api_key: this.apiKey }, // Browser auth via message
      }));

      // Start recording and sending audio chunks
      this.mediaRecorder = new MediaRecorder(stream, {
        mimeType: "audio/webm;codecs=opus",
      });

      this.mediaRecorder.ondataavailable = (event) => {
        if (event.data.size > 0 && this.ws.readyState === WebSocket.OPEN) {
          this.ws.send(event.data);
        }
      };

      this.mediaRecorder.start(100); // 100ms chunks
      console.log("Live transcription started.");
    };

    this.ws.onmessage = (event) => {
      const data = JSON.parse(event.data);

      if (data.type === "transcription.partial" && this.onPartial) {
        this.onPartial(data.text);
      } else if (data.type === "transcription.final" && this.onFinal) {
        this.onFinal(data.text, data.speaker);
      } else if (data.type === "error" && this.onError) {
        this.onError(new Error(data.message));
      }
    };

    this.ws.onerror = (err) => {
      if (this.onError) this.onError(err);
    };
  }

  stop() {
    if (this.mediaRecorder) {
      this.mediaRecorder.stop();
    }
    if (this.ws && this.ws.readyState === WebSocket.OPEN) {
      this.ws.send(JSON.stringify({ type: "audio.end" }));
      this.ws.close();
    }
    console.log("Live transcription stopped.");
  }
}

// Usage in a web app
const transcriber = new LiveTranscriber(process.env.OPENAI_API_KEY);

transcriber.onPartial = (text) => {
  document.getElementById("partial-text").textContent = text;
};

transcriber.onFinal = (text, speaker) => {
  const div = document.createElement("div");
  div.textContent = `Speaker ${speaker}: ${text}`;
  document.getElementById("transcript-log").appendChild(div);
};

transcriber.onError = (err) => {
  console.error("Transcription error:", err);
};

document.getElementById("start-btn").addEventListener("click", () => {
  transcriber.start();
});

document.getElementById("stop-btn").addEventListener("click", () => {
  transcriber.stop();
});

GPT-Transcribe: Next.js API Route Handler

// app/api/transcribe/route.js (Next.js 14+ App Router)
import { NextResponse } from "next/server";
import OpenAI from "openai";

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

export async function POST(request) {
  try {
    const formData = await request.formData();
    const audioFile = formData.get("audio");

    if (!audioFile) {
      return NextResponse.json({ error: "No audio file provided" }, { status: 400 });
    }

    const transcription = await openai.audio.transcriptions.create({
      model: "gpt-transcribe",
      file: audioFile,
      response_format: "verbose_json",
      timestamp_granularities: ["segment"],
    });

    return NextResponse.json({
      text: transcription.text,
      duration: transcription.duration,
      language: transcription.language,
      segments: transcription.segments,
    });

  } catch (error) {
    console.error("Transcription API error:", error);
    return NextResponse.json(
      { error: "Transcription failed", details: error.message },
      { status: 500 }
    );
  }
}

export const config = {
  api: {
    bodyParser: false, // Required for file uploads
  },
};

GPT-Live-Transcribe and GPT-Transcribe: Complete Developer Guide to OpenAI

Pricing Breakdown and Cost Optimization

OpenAI announced the following pricing structure for both models at launch on July 29, 2026. All prices are per minute of audio processed and are billed separately from any associated text token usage in hybrid workflows.

Model Price per Minute Minimum Billing Unit Diarization Add-on Custom Vocabulary Add-on
gpt-live-transcribe $0.010 1 second $0.003/min Included (up to 500 terms)
gpt-live-transcribe-preview $0.008 (preview discount) 1 second $0.002/min Included
gpt-transcribe $0.006 1 second $0.002/min Included (up to 1,000 terms)
gpt-transcribe-preview $0.004 (preview discount) 1 second $0.001/min Included
whisper-1 (legacy) $0.006 1 second N/A N/A

Cost Optimization Strategies

Audio processing costs can scale quickly in high-volume applications. Here are concrete strategies to keep your transcription costs under control:

  1. Use Voice Activity Detection (VAD) before sending audio. Both models charge per second of audio transmitted, not per second of speech. If you strip silence locally before sending chunks, you can reduce billed audio by 20–40% in typical meeting recordings where participants pause frequently.
  2. Use GPT-Transcribe for non-time-sensitive audio. At $0.006/min vs. $0.010/min for the live model, batch processing is 40% cheaper for content where real-time output isn’t required — such as nightly podcast processing or after-hours call log transcription.
  3. Only enable diarization when needed. If your use case processes solo speaker recordings (personal voice memos, dictation), disabling diarization saves $0.002–$0.003 per minute.
  4. Leverage preview variants during development. The preview-tier models carry a 20–33% price discount. Use them for testing and prototyping; switch to stable model IDs only when moving to production.
  5. Use language hints when language is known. Setting an explicit language parameter reduces the model’s internal language detection overhead, slightly improving cost efficiency at very high volumes.
  6. Compress audio before uploading. GPT-Transcribe can process OGG Opus files, which can be 5–8x smaller than WAV at equivalent quality. Smaller files mean faster upload times and lower egress costs from your own infrastructure, though transcription billing is by duration, not file size.

Estimating Monthly Costs

A mid-sized call center processing 10,000 minutes of call audio per day would face the following cost structure with GPT-Transcribe (with diarization enabled):

  • Transcription: 10,000 min/day × $0.006/min = $60/day
  • Diarization add-on: 10,000 min/day × $0.002/min = $20/day
  • Total daily cost: $80/day ($2,400/month)

By comparison, using Whisper-1 for the same volume costs the same $60/day for transcription but provides no diarization. Adding diarization via a third-party service like AssemblyAI or Deepgram would add significant additional costs, making GPT-Transcribe’s bundled diarization a compelling value proposition for enterprise customers.

Comparison with Whisper Models

OpenAI’s Whisper has been the gold standard for open-source and API-based speech recognition since 2022. Understanding exactly where GPT-Transcribe and GPT-Live-Transcribe improve on Whisper — and where they don’t — is critical for making informed migration decisions.

Word Error Rate (WER) Benchmarks

OpenAI published the following Word Error Rate (WER) figures in their July 29 technical release notes. Lower WER is better — it indicates fewer incorrect words in the transcription.

Dataset / Condition Whisper Large v3 GPT-Transcribe GPT-Live-Transcribe
LibriSpeech test-clean (studio) 2.7% 1.9% 2.4%
LibriSpeech test-other (noisy) 5.2% 3.1% 4.0%
Call center telephony (8 kHz) 14.8% 7.2% 9.4%
Multi-speaker meeting (reverberant) 18.3% 9.1% 12.7%
Medical dictation (domain-specific) 11.2% 5.4% (with custom vocab) 7.8% (with custom vocab)
Code-switching (EN/ES mid-sentence) 22.1% 8.9% 11.3%

Key Accuracy Improvements

The most dramatic improvements over Whisper are in telephony audio (8 kHz, narrow-band), multi-speaker meetings, and code-switching scenarios. These were consistent pain points with Whisper’s architecture, which was trained primarily on internet audio at higher sample rates.

GPT-Transcribe’s custom vocabulary feature also provides a meaningful edge in domain-specific contexts. Rather than relying on prompting hacks to get Whisper to recognize niche terminology, you can now pass a structured list of up to 1,000 terms with optional phonetic hints and usage context.

Where Whisper Still Holds Its Own

For clean, studio-quality audio from a single English speaker, Whisper Large v3 is still very competitive. The 1.9% vs. 2.7% WER difference on LibriSpeech test-clean is unlikely to matter in most practical applications. If you are running Whisper locally on your own hardware (it is open-source), you also eliminate API costs entirely, which remains a significant advantage for high-volume, non-latency-critical workloads.

Developers who have been building custom fine-tuned Whisper models for specific domains should evaluate whether GPT-Transcribe’s custom vocabulary feature suffices before abandoning their fine-tuning investments. In most cases, the custom vocabulary approach is simpler to maintain and iterate on, but a well-fine-tuned domain-specific Whisper model can still outperform GPT-Transcribe on very narrow vocabulary tasks.

For a deeper technical look at how the underlying Whisper architecture compares to GPT-native audio models, the analysis in Whisper vs GPT Audio Models: Architecture Deep Dive examines the attention mechanisms, training data differences, and acoustic modeling approaches that explain the benchmark gaps observed above.

Latency Benchmarks

Latency is the defining performance metric for streaming transcription. The following benchmarks were measured from OpenAI’s US-East-1 region to clients in the eastern United States. Global latency will vary based on your region and OpenAI’s data center proximity.

GPT-Live-Transcribe Latency Profile

Metric p50 (Median) p90 p99
WebSocket connection handshake 42 ms 78 ms 180 ms
First partial token after speech onset 220 ms 380 ms 640 ms
Finalization latency (partial → final) 180 ms 320 ms 520 ms
End-to-end segment latency (3s speech) 3.4 s 3.8 s 4.2 s
End-to-end segment latency (10s speech) 10.5 s 11.1 s 12.0 s

Factors That Affect Latency

  • Audio chunk size: Smaller chunks (e.g., 100 ms) yield faster first-token latency but increase WebSocket overhead. A 250–500 ms chunk size is a good balance for most applications.
  • Sample rate: 16 kHz provides the best latency-to-accuracy tradeoff. 44.1 kHz adds minimal accuracy benefit but increases bandwidth and processing time slightly.
  • Diarization enabled: Real-time diarization adds approximately 30–60 ms of additional latency per segment due to the speaker embedding computation.
  • Geographic distance: WebSocket connections to the nearest OpenAI region are strongly recommended. For European clients, latency to US-East-1 adds approximately 80–120 ms round-trip, making the EU data center (EU-West-1) the preferred endpoint when it becomes available.
  • Network jitter: WebSocket over lossy networks causes partial token retransmissions. Implement a 200 ms jitter buffer on the sending side in mobile or unstable network environments.

GPT-Transcribe Processing Speed

For batch processing, GPT-Transcribe operates significantly faster than real-time. In OpenAI’s benchmarks, a 60-minute audio file typically completes processing in 45–90 seconds, depending on server load. This represents approximately a 40–80x speed-up compared to real-time playback.

Real-World Use Cases

The combination of real-time and batch transcription capabilities opens a wide range of applications. Here are the most impactful use cases, along with architectural recommendations for each.

Live Meeting Transcription and Notes

GPT-Live-Transcribe is ideal for replacing existing meeting transcription integrations in platforms like Zoom, Google Meet, or Microsoft Teams. By injecting the audio stream from a meeting recording SDK into a WebSocket connection, you can generate real-time captions alongside speaker-labeled transcripts.

The rolling context window means that the model can better resolve references like “the proposal I mentioned earlier” by understanding the broader conversational context, not just the immediate acoustic window. Post-meeting, GPT-Transcribe can reprocess the full recording for higher-accuracy archival transcripts with topic segmentation and action item extraction.

Podcast and Media Post-Production

GPT-Transcribe’s combination of word-level timestamps, speaker diarization, and SRT/VTT output makes it a powerful tool for podcast post-production workflows. Producers can automatically generate episode transcripts, chapter markers, and subtitle files without manual editing.

The custom vocabulary feature is particularly valuable for podcasts in technical domains — allowing hosts to specify product names, acronyms, and proper nouns that would otherwise be misrecognized. A software engineering podcast, for instance, can include terms like “Kubernetes”, “WebAssembly”, “gRPC”, and specific library names to dramatically improve accuracy.

Call Center Quality Assurance

Call centers processing thousands of hours of audio daily can use GPT-Transcribe for batch QA workflows, feeding transcripts into downstream analysis for compliance monitoring, sentiment analysis, and agent performance scoring. The improved accuracy on telephony-quality 8 kHz audio (7.2% WER vs. 14.8% for Whisper) directly translates to fewer QA errors and lower manual review costs.

For live call assistance — where agents need real-time transcription to surface knowledge base articles or scripts — GPT-Live-Transcribe’s 220 ms median first-token latency is fast enough to display relevant content before the caller even finishes their first sentence.

Accessibility and Live Captioning

Live captioning for deaf and hard-of-hearing audiences has strict latency and accuracy requirements. GPT-Live-Transcribe’s sub-400 ms partial token delivery makes it competitive with dedicated captioning services, and its automatic punctuation and formatting removes the need for post-processing before display.

For public events and broadcasts, deploying GPT-Live-Transcribe behind a CDN-connected relay server allows multiple simultaneous viewers to receive captions with consistent, low latency. When building WCAG 2.1 AA-compliant captioning systems, integrating this model into your accessibility pipeline is both technically feasible and cost-effective.

Medical Dictation and Clinical Documentation

Healthcare providers can use GPT-Transcribe’s custom vocabulary feature to inject clinical terminology directly into the transcription context. A cardiologist’s office can pre-load a vocabulary list of cardiac procedures, drug names, anatomical terms, and ICD-10 codes, dramatically reducing the 11% WER that Whisper produces on raw medical dictation to approximately 5.4% with custom vocabulary enabled.

It is important to note that medical dictation workflows must comply with HIPAA or equivalent regional regulations. OpenAI provides a Business Associate Agreement (BAA) for enterprise API customers, which is a prerequisite for processing any audio containing Protected Health Information (PHI).

Language Learning and Pronunciation Tools

GPT-Live-Transcribe’s word-level timestamps and partial token streaming enable interactive pronunciation feedback tools. A language learning app can capture a learner’s spoken response, stream it to the API, and within 200–400 ms begin comparing the transcription against expected text, highlighting mispronounced words in near real time.

Access 40,000+ AI Prompts for ChatGPT, Claude & Codex — Free!

Subscribe to get instant access to our complete Notion Prompt Library — the largest curated collection of prompts for ChatGPT, Claude, OpenAI Codex, and other leading AI models. Optimized for real-world workflows across coding, research, content creation, and business.

Get Free Access Now →

Combined with OpenAI’s TTS models for pronunciation modeling, developers can build end-to-end voice tutoring experiences. The architecture for building this type of voice-based AI tutor is covered in the guide on Building AI Voice Tutors with OpenAI Speech APIs, which walks through session management, turn-taking logic, and feedback scoring strategies.

Content Moderation at Scale

Platforms hosting user-generated audio content — such as voice social networks, audio messaging apps, or live streaming platforms — can use GPT-Transcribe as the first stage in an automated content moderation pipeline. Converting audio to text enables all existing text-based moderation classifiers and large language model evaluation to be applied to audio content, without requiring specialized audio moderation models.

GPT-Realtime Livestream: August 28 Developer Preview

While GPT-Live-Transcribe and GPT-Transcribe are focused exclusively on speech-to-text, OpenAI announced a third model entering developer preview on August 28, 2026: GPT-Realtime Livestream.

GPT-Realtime Livestream is best understood as a combination of GPT-Live-Transcribe and a full GPT language model running in parallel on the same audio stream. Rather than simply converting speech to text, it can reason about what is being said, interrupt with clarifications, provide real-time summaries, and generate spoken responses — all while the input audio stream is still active.

Key Capabilities (Announced)

  • Simultaneous listen-and-reason: The model processes incoming audio while maintaining a live context window, enabling it to answer questions about earlier content without waiting for the full session to complete.
  • Turn detection: Built-in voice activity detection distinguishes between speech turns, allowing the model to interject at natural pause points rather than waiting for explicit “end of utterance” signals.
  • Live summarization: The model can emit periodic summary tokens describing what has been discussed so far, updating every configurable interval (e.g., every 5 minutes).
  • Configurable personas: Like chat completions, the model accepts a system prompt that shapes its behavior — enabling use cases like “broadcast monitor that flags factual claims” or “real-time meeting coach that tracks action items.”
  • TTS output (optional): When paired with OpenAI’s voice synthesis capability, GPT-Realtime Livestream can produce spoken responses with low enough latency for natural conversational turn-taking.

What Developers Should Do Now to Prepare

If you plan to integrate GPT-Realtime Livestream when it enters preview on August 28, the best preparation is to build your WebSocket infrastructure now using GPT-Live-Transcribe. The streaming protocol and connection management patterns are expected to be very similar, allowing most of your integration code to carry over with minimal changes.

Sign up for early access at platform.openai.com/waitlist/gpt-realtime-livestream to receive preview credentials and the beta API specification ahead of the launch date.

Understanding how the existing Realtime API works — especially its session management and turn-detection configuration — will give you a strong foundation for GPT-Realtime Livestream integration. The complete breakdown of the current OpenAI Realtime API at OpenAI Realtime API Complete Developer Reference covers the session lifecycle, event schemas, and error handling patterns that will translate directly to the new model.

Integration Patterns and Architecture

Choosing the right integration architecture is as important as choosing the right model. Below are the most common patterns for production deployments, with their trade-offs clearly outlined.

Pattern 1: Direct Client-to-API (Browser/Mobile)

In this pattern, the end-user device opens a WebSocket connection directly to OpenAI’s streaming endpoint. This minimizes latency by eliminating your server from the audio path.

Pros: Lowest possible latency; minimal server infrastructure; simplest architecture.

Cons: Requires exposing your API key to the client (mitigated with ephemeral tokens); no server-side logging or filtering; limited ability to inject server-side context or business logic mid-stream.

Best for: Consumer mobile apps, browser-based meeting tools, personal productivity applications.

Pattern 2: Server-Relay Architecture

In this pattern, audio from the client is sent to your own server, which acts as a relay to OpenAI’s API. The server can inject additional context, log audio for compliance, apply VAD filtering, and route to different models based on business logic.

Pros: API key never leaves your infrastructure; full logging and auditing capability; ability to modify requests in flight; supports multi-tenant applications with per-user configurations.

Cons: Adds 10–50 ms of server-side relay latency; requires your server to handle potentially thousands of concurrent WebSocket connections; increases infrastructure complexity and cost.

Best for: Enterprise SaaS products, call center platforms, multi-tenant applications, compliance-sensitive deployments.

Pattern 3: Hybrid Live + Batch Pipeline

This pattern combines GPT-Live-Transcribe for real-time display during a session, with GPT-Transcribe reprocessing the full recording afterward for higher-accuracy archival transcripts. The live transcript is used for immediate user experience, while the batch transcript is used for downstream processing (search indexing, compliance archiving, analytics).

Implementation notes: Buffer the audio stream on your server during the live session. After the session ends, submit the buffered audio to GPT-Transcribe. Use a simple text alignment algorithm to merge the live and batch transcripts for display, showing the corrected batch version once it is available.

Best for: Meeting platforms, court reporting systems, medical dictation platforms where both real-time utility and archival accuracy are required.

Pattern 4: Asynchronous Batch Queue

For high-volume batch processing (call centers, media archives, content moderation), process audio through a message queue (e.g., AWS SQS, Google Pub/Sub, or Redis Queue). Workers pull audio jobs from the queue and submit them to the GPT-Transcribe API, with results stored in a database and notifications sent to downstream consumers.

# Pseudocode for a Celery-based batch transcription worker
from celery import Celery
import openai

app = Celery("transcription_worker", broker="redis://localhost:6379/0")
client = openai.OpenAI()

@app.task(bind=True, max_retries=3, default_retry_delay=60)
def transcribe_audio_job(self, audio_url: str, job_id: str):
    try:
        import urllib.request
        with urllib.request.urlopen(audio_url) as f:
            audio_data = f.read()

        # Submit to GPT-Transcribe
        response = client.audio.transcriptions.create(
            model="gpt-transcribe",
            file=("audio.mp3", audio_data, "audio/mpeg"),
            response_format="verbose_json",
        )

        # Store result (pseudo-database call)
        save_transcription_result(job_id, response)
        notify_downstream_systems(job_id)

    except openai.RateLimitError as exc:
        raise self.retry(exc=exc, countdown=120)
    except Exception as exc:
        raise self.retry(exc=exc)

Error Handling and Resilience

Production deployments must handle the following error conditions gracefully:

  • WebSocket disconnections: Implement exponential backoff reconnect logic. Buffer audio chunks locally during disconnection and replay the buffer after reconnection. GPT-Live-Transcribe supports a session_resume_token parameter for reconnecting to an interrupted session within a 30-second window.
  • Rate limit errors (429): Implement a token bucket rate limiter on your server side to stay within your OpenAI tier limits. The API returns Retry-After headers on 429 responses — honor these values.
  • Audio format errors (400): Validate audio format, sample rate, and file size before submitting to the API. GPT-Transcribe will return a detailed error message for unsupported formats, but validating client-side prevents unnecessary API calls.
  • Timeout handling: For GPT-Transcribe batch requests on very long files (1–4 hours), use asynchronous job polling rather than holding a synchronous HTTP connection open. The API supports a ?async=true parameter that returns a job_id immediately, with results retrievable via a polling endpoint.

Best Practices and Common Pitfalls

Audio Quality Fundamentals

Even the most advanced transcription model is bounded by the quality of audio it receives. The following audio quality practices have an outsized impact on transcription accuracy:

  • Use close-talk or headset microphones when possible. Room acoustics and distance-to-microphone ratios are the single largest driver of WER degradation in meeting scenarios.
  • Apply noise suppression before streaming. Browser MediaRecorder supports noiseSuppression: true natively. On the server side, libraries like RNNoise or WebRTC’s audio processing module (bundled in many VoIP SDKs) can reduce background noise before sending to the API.
  • Avoid re-encoding audio unnecessarily. Each encoding step introduces quality loss. If your pipeline captures audio as PCM, send it as PCM rather than encoding to MP3 and back.
  • Maintain consistent sample rates. Resampling audio from 44.1 kHz to 16 kHz before sending is correct practice. Do not send audio with variable or misreported sample rates — this causes the model to misinterpret speech speed.

Common Pitfalls to Avoid

  1. Not handling partial tokens correctly: Partial tokens are not finalized text. Never store or display partial tokens as authoritative — always wait for the transcription.final event before persisting data. Building UI that shows partials as live updates while only writing finals to storage is the correct pattern.
  2. Sending silence: Sending long stretches of silence to GPT-Live-Transcribe wastes money and can confuse the model’s VAD. Implement client-side silence detection to pause audio transmission when the input level drops below a threshold for more than 500 ms.
  3. Ignoring the language parameter: When you know the language of the audio, always pass it explicitly. Automatic language detection adds a small amount of latency and occasional errors on short utterances or heavily accented speech.
  4. Overloading custom vocabulary: Adding every possible domain term to your vocabulary list dilutes its effectiveness. Focus on terms that are genuinely uncommon in everyday speech — proper nouns, brand names, technical acronyms — rather than terms the model already handles correctly.
  5. Not implementing WebSocket keepalive: Long-running streaming sessions can have their WebSocket connections dropped by intermediary proxies. Send a WebSocket ping frame every 30 seconds to maintain the connection.

Security Considerations

Audio data is often sensitive — it may contain personally identifiable information, trade secrets, or protected health information. Developers should implement the following security controls:

  • Never embed API keys in client-side JavaScript or mobile app binaries. Use server-side ephemeral token generation for browser and mobile clients.
  • Enable OpenAI’s zero data retention (ZDR) mode if your use case involves sensitive audio. Under ZDR, OpenAI does not store audio or transcripts after processing is complete.
  • Encrypt audio at rest if you buffer it in your own infrastructure for the hybrid live/batch pattern described above.
  • Implement user consent flows before recording audio. In many jurisdictions, two-party consent laws require all parties on a recorded call to be notified.

When building transcription features into larger SaaS products, user data governance — including right-to-erasure requests and audit logs — becomes a product requirement as much as a technical one. The framework described in GDPR Compliance Guide for AI API Applications is directly applicable to audio data handled through these APIs and covers data classification, retention policies, and deletion request handling in the context of OpenAI API usage.

Frequently Asked Questions

Can GPT-Live-Transcribe and GPT-Transcribe handle multiple languages in the same audio file?

Yes. Both models support code-switching — detecting and transcribing multiple languages within the same audio segment. In benchmarks on EN/ES code-switching audio, GPT-Transcribe achieved an 8.9% WER, compared to 22.1% for Whisper Large v3. Set language: "auto" to enable automatic multilingual detection. Note that word-level timestamps and speaker diarization are fully supported in multilingual mode.

Is there a difference between the -preview model variants and the stable releases?

Preview variants carry a discounted price but may include experimental features that are not yet finalized. They are appropriate for development and testing. OpenAI may change the behavior or output format of preview variants with shorter notice than stable releases. Stable release model IDs (gpt-transcribe, gpt-live-transcribe) will maintain backward compatibility for at least 12 months from the date of a breaking change announcement.

How does speaker diarization work, and how accurate is it?

Speaker diarization assigns a speaker label (e.g., “Speaker 1”, “Speaker 2”) to each segment of speech by embedding each speaker’s voice characteristics and clustering similar voices together. GPT-Transcribe’s diarization achieves a Diarization Error Rate (DER) of approximately 8.2% on the AMI meeting corpus benchmark — significantly better than Whisper with third-party diarization tools chained in. For GPT-Live-Transcribe’s real-time diarization, the DER increases to approximately 12.4% due to the limited look-ahead window, but this improves progressively over the course of a session as the model accumulates more voice samples per speaker.

What happens if I exceed the 4-hour file limit in GPT-Transcribe?

The API will return a 400 error with the message “Audio duration exceeds maximum limit of 4 hours.” To process longer recordings, split the file into segments at natural break points (e.g., chapter boundaries, speaker transitions) and submit each segment separately. OpenAI provides a utility in the Python SDK for automatic audio chunking: openai.audio.utils.split_audio(file_path, max_duration_minutes=240).

Can I use GPT-Live-Transcribe for phone calls through Twilio or a SIP trunk?

Yes

Get Free Access to 40,000+ AI Prompts for ChatGPT, Claude & Codex

Subscribe for instant access to the largest curated Notion Prompt Library for AI workflows.

More on this