GPT-4o Transcribe vs GPT-4o Transcribe Diarize
Which one, when
Same $2.5 per million text input and the same 16000-token context; the diarize variant charges a little more for audio ($6.25 against $6 per million audio input tokens) and far less for text output ($2.5 against $10). What it adds is speaker diarization with diarized_json - speaker labels and segment timestamps - at the cost of requiring chunking_strategy above 30 seconds and dropping prompt support. Pick gpt-4o-transcribe for plain streaming transcripts, the diarize variant when you need to know who spoke.
Benchmarks
GPT-4o Transcribe Diarize: the vendor has not published benchmark scores.
Vendor-published: Alibaba (Qwen) ByteDance Google OpenAI
Pricing
| GPT-4o Transcribe | GPT-4o Transcribe Diarize | Δ | |
|---|---|---|---|
| Audio input / 1M tokens | $6 | $6.25 | 0.96× |
| Text output / 1M tokens | $10 | $2.5 | 4× |
Rates from the live catalogue at build time; each model page carries the current rate card.
Capabilities
| GPT-4o Transcribe | GPT-4o Transcribe Diarize | |
|---|---|---|
| Speaker diarization | no | yes |
| Streaming | yes | yes |
| Timestamps | no | yes |
Specs
| GPT-4o Transcribe | GPT-4o Transcribe Diarize | |
|---|---|---|
| Input modalities | text audio | text audio |
| Output modalities | text | text |
| Released | 2025-03-20 | 2025-10 |
| Knowledge cutoff | 2024-06 | 2024-06 |
| Limits | mp3/mp4/mpeg/mpga/m4a/wav/webm, up to 25MB streaming transcription supported (incl. Realtime transcription sessions) json/text output only no word timestamps or diarization | mp3/mp4/mpeg/mpga/m4a/wav/webm, up to 25MB built-in speaker diarization with diarized_json output (speaker labels + segment timestamps) chunking_strategy required for audio >30s no prompt support |
| Languages | 57 languages listed for the transcriptions endpoint (one shared list for all transcription models) ISO 639-1 / 639-3 codes accepted for GPT-4o-based models | 57 languages listed for the transcriptions endpoint (one shared list for all transcription models) ISO 639-1 / 639-3 codes accepted for GPT-4o-based models |
| Max output | 2K | 2K |
Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: GPT-4o Transcribe · GPT-4o Transcribe Diarize
Switch between them with one line
Both ids are in every tab below; the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.audio.transcriptions.create(
model="gpt-4o-transcribe",
# model="gpt-4o-transcribe-diarize", # uncomment this line, comment the one above
file=open("meeting.mp3", "rb"),
language="en",
)
print(resp.text)import OpenAI from "openai";
import fs from "node:fs";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.audio.transcriptions.create({
model: "gpt-4o-transcribe",
// model: "gpt-4o-transcribe-diarize", // uncomment this line, comment the one above
file: fs.createReadStream("meeting.mp3"),
});
console.log(resp.text);curl https://synthorai.io/v1/audio/transcriptions \
-H "Authorization: Bearer sk-syn-..." \
-F model="gpt-4o-transcribe" \
# -F model="gpt-4o-transcribe-diarize" \ # uncomment this line, comment the one above
-F file=@meeting.mp3package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
f, _ := os.Open("meeting.mp3")
resp, _ := client.Audio.Transcriptions.New(context.TODO(), openai.AudioTranscriptionNewParams{
Model: "gpt-4o-transcribe",
// Model: "gpt-4o-transcribe-diarize", // uncomment this line, comment the one above
File: f,
})
fmt.Println(resp.Text)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.audio.transcriptions.*;
import java.nio.file.Paths;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
Transcription resp = client.audio().transcriptions().create(
TranscriptionCreateParams.builder()
.model("gpt-4o-transcribe")
// .model("gpt-4o-transcribe-diarize") // uncomment this line, comment the one above
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());FAQ
Which is cheaper, GPT-4o Transcribe or GPT-4o Transcribe Diarize?
GPT-4o Transcribe is cheaper on the "Audio input / 1M tokens" row ($6 vs $6.25, 1.0× apart). Other rows may point the other way; the table above carries the full rate card, and real cost depends on your mix.
Can I A/B test GPT-4o Transcribe against GPT-4o Transcribe Diarize without two integrations?
Yes. Both are served through the same OpenAI-compatible endpoint with one API key. Switching is a one-line change to the model id, so you can route a fraction of traffic to each and compare bills directly.
Do GPT-4o Transcribe and GPT-4o Transcribe Diarize support speaker diarization?
The capability table above answers this per model, straight from each vendor’s documentation. Diarization, streaming and timestamps are listed separately because models differ on all three.