# Speech-to-Speech Models in Production: A Guide | APIFleet

> Speech-to-speech models on 1,908 APIFleet calls: response latency, openings, errors, cost and tokens per minute for gpt-live-1, Gemini Live and gpt-realtime.

Canonical URL: https://apifleet.dev/blog/speech-to-speech-models
Last updated: 2026-10-30
Markdown Mirror URL: https://apifleet.dev/blog/speech-to-speech-models.md
LLM index: https://apifleet.dev/llms.txt
MCP discovery: https://apifleet.dev/.well-known/mcp.json

Speech-to-speech models on APIFleet calls cannot all be timed, and the ones that can were timed from different starting points. On turns that did not wait for a tool, first reply audio from the three OpenAI Realtime models reached APIFleet's server a median 452 to 762 ms after OpenAI's own end-of-speech event (six phone and web samples of 74 to 379 turns from 17 to 80 calls, 14 August to 27 September 2026), while Gemini 3.1 Flash Live took 1,274 ms on the phone from APIFleet's own end-of-speech decision (324 turns, 97 calls, 5 to 7 September), or 1,016 ms (85 turns, 29 calls) without 5 September, the day that held every such phone turn over 10 seconds. gpt-live-1, which carried 1,073 of the 1,319 phone calls, records no end of caller speech to time from; its phone calls from 11 September to 29 October cost an estimated $0.0574 per connected minute in provider and carrier charges, before APIFleet's platform fee. These are observational numbers from 1,908 production and test calls between 14 August and 29 October 2026, not a controlled benchmark, and every table below gives sample sizes, channel and dates.

APIFleet team · 30 October 2026 · 22 min read

## Response latency, where it can be measured

Response latency here runs from the caller endpoint that each pipeline records to the first reply audio that APIFleet's server receives, counting only turns where no tool call finished in between. That endpoint is OpenAI's end-of-speech event for OpenAI Realtime and APIFleet's own voice activity detection (VAD) decision for Gemini 3.1 Flash Live, so the table names it on every row. Phone rows are Telnyx calls, and web rows are browser test sessions.

Among rows that share a clock, gpt-realtime-mini had the lowest medians: 467 ms on the phone (133 turns, 21 calls) and 452 ms on the web (112 turns, 26 calls). The gpt-realtime-2.1 and gpt-realtime-2.1-mini rows sat between 739 and 762 ms on both channels (74 to 379 turns from 17 to 80 calls per row). The gpt-realtime-mini phone row comes from four assistants, one of them behind 44% of its turns, so it does not describe other deployments.

The gpt-realtime-2.1 rows are thin as well: its 74 phone turns come from 17 calls, and all 195 of its web turns from 5 and 6 September.

Almost all of that time passes after OpenAI creates the response. On the same turns, every OpenAI row shows the response created a median 4 to 8 ms after the end-of-speech event and the first audio a median 448 to 759 ms after that.

The gpt-live-1 and Gemini 3.8 Live rows read not measurable because their sessions record no usable end of caller speech, as the next section explains. Turns that waited for a tool are left out here; tool waits have their own page in this series.

Response latency without a tool wait: caller endpoint to the first reply audio received by APIFleet's server. Medians with call-level 95% bootstrap intervals; dates are 2026, UTC.

| Model and channel | Clock starts at | Turns (calls) | Median, ms (95% interval) | p90, ms | Dates, 2026 |
| --- | --- | --- | --- | --- | --- |
| gpt-live-1, phone and web | No end-of-speech event | Not measurable | Not measurable | Not measurable | 10 Sep to 29 Oct |
| Gemini 3.1 Flash Live, phone, all days | APIFleet VAD decision, about 500 ms after the last voiced audio | 324 (97) | 1,274 (975 to 12,647) | 23,445 | 5 to 7 Sep |
| Gemini 3.1 Flash Live, phone, without 5 Sep | APIFleet VAD decision, about 500 ms after the last voiced audio | 85 (29) | 1,016 (884 to 1,135) | 1,544 | 6 to 7 Sep |
| Gemini 3.1 Flash Live, web, all days | APIFleet VAD decision, mostly 800 ms after the last voiced audio | 277 (42) | 1,435 (1,089 to 2,228) | 8,206 | 5 to 15 Sep |
| Gemini 3.1 Flash Live, web, without 5 Sep | APIFleet VAD decision, mostly 800 ms after the last voiced audio | 39 (11) | 865 (779 to 2,074) | 2,452 | 8 to 15 Sep |
| gpt-realtime-2.1-mini, phone | OpenAI end-of-speech event | 174 (37) | 752 (688 to 829) | 1,164 | 17 Aug to 9 Sep |
| gpt-realtime-2.1-mini, web | OpenAI end-of-speech event | 379 (80) | 762 (718 to 809) | 1,308 | 14 Aug to 5 Sep |
| gpt-realtime-mini, phone | OpenAI end-of-speech event | 133 (21) | 467 (349 to 522) | 691 | 17 to 27 Aug |
| gpt-realtime-mini, web | OpenAI end-of-speech event | 112 (26) | 452 (415 to 476) | 725 | 23 Aug to 1 Sep |
| gpt-realtime-2.1, phone | OpenAI end-of-speech event | 74 (17) | 748 (669 to 828) | 1,207 | 24 Aug to 27 Sep |
| gpt-realtime-2.1, web | OpenAI end-of-speech event | 195 (20) | 739 (693 to 778) | 1,176 | 5 to 6 Sep |
| Gemini 3.8 Live, web | Automatic VAD, no endpoint event | Not measurable | Not measurable | Not measurable | 20 to 29 Sep |

## Why the latency clocks start at different points

No pipeline records the moment a caller actually stops talking, so every latency row starts at a decision about it. On OpenAI Realtime the clock starts when APIFleet receives OpenAI's end-of-speech event, and OpenAI describes its semantic voice activity detection as a classifier that waits for a timeout when the caller's words sound unfinished. That wait happens before the clock starts, and although semantic detection is APIFleet's current default for these models, the call records do not store each call's setting.

Gemini 3.1 Flash Live rows come only from calls where APIFleet ran its own voice activity detection and sent Gemini manual activity signals. The detector ends a turn after 500 ms without voiced audio on the phone, and after 800 ms on 347 of 351 web turn ends, so adding that window to the same turns as the table above estimates the time from the caller's last voiced audio: 1,774 ms on the phone (324 turns, 97 calls) or 1,516 ms without 5 September (85 turns, 29 calls), and 2,235 ms on the web (277 turns, 42 calls) or 1,665 ms without that day (39 turns, 11 calls). Google's Live API guide recommends a silence threshold of at least 500 ms for manual detection.

The gpt-live-1 model listens and speaks at the same time and gives APIFleet no caller speech start or stop events, so there is nothing to start a clock from. On sessions that use Gemini's automatic detection, which includes all 64 Gemini 3.8 Live calls here, the end-of-turn signal is only recorded when the reply audio, a tool call or the end of the model's turn arrives, so it measures nothing.

Every row stops when APIFleet's server receives the first reply audio, not when the caller hears it. Phone audio is then paced out in 20 ms frames behind the carrier's own buffering, and browsers buffer too, so callers wait longer than these figures show. Compare OpenAI rows with each other, and treat the gap between OpenAI and Gemini rows as unmeasured.

## The 5 September 2026 caveat for Gemini 3.1 Flash Live

Gemini 3.1 Flash Live's phone sample covers only 5 to 9 September 2026, and 108 of its 154 phone calls fell on 5 September, the first day on which end-of-turn events from APIFleet's own turn detection for Gemini appear in the traces. On that day 49% of its phone calls were outbound, against 11% on the other days.

Every Gemini 3.1 Flash Live turn without a tool wait that took more than 10 seconds fell on that day: 137 of 239 phone turns and 20 of 238 web turns, against none of the 85 phone and 39 web turns on other days. On 5 September alone the phone median was 13,641 ms (239 turns, 68 calls), against 1,016 ms (85 turns, 29 calls) on the other days. A change adding recovery for silent Gemini requests is dated 23:30 UTC that day, and when it was deployed is not recorded.

Setting the day aside moves more than latency. The phone opening median falls from 1,618 ms (92 calls) to 1,178 ms (38 calls), phone calls of 10 seconds or more with no assistant audio go from 3 of 147 to 3 of 46, and the estimated cost per connected minute rises from $0.0389 (154 calls) to $0.0907 (46 calls).

Neither version is a stable estimate for Gemini 3.1 Flash Live on the phone, because the three other days with calls hold 46 calls from 16 assistants, 54% of them on 7 September. Google now calls the model a legacy preview and recommends Gemini 3.8 Live, which this data covers only through 64 short web test calls.

## Greeting time from session start to the first opening audio

Openings are the one timing metric with the same starting point for every provider. Each session records its start just before APIFleet opens the WebSocket to the model vendor, so the time covers connecting, setting up the session and generating the first audio of a model-spoken greeting, but not the carrier answering or the media connection being set up. The end point is the first audio chunk for OpenAI Realtime and Gemini, and the first audible frame for gpt-live-1, whose audio stream runs continuously.

The shortest medians were Gemini 3.8 Live's 1,173 ms over 64 web calls, 95% of them on 21 September 2026, and Gemini 3.1 Flash Live's 1,178 ms over 38 phone calls after 5 September (1,618 ms over all 92). On the phone, gpt-realtime-2.1-mini took 2,346 ms (40 calls) and gpt-live-1 3,775 ms (309 calls), and the Live session alone took a median 1,606 ms to report ready on those same 309 calls.

The gpt-live-1 phone row counts only openings the model spoke itself, and most of them came from one assistant. On 632 of its 1,073 phone calls APIFleet's bridge started a recorded greeting clip instead, a clip APIFleet installs per assistant, used by two assistants here; those calls are left out, and since the clips and the spoken openings came almost entirely from different assistants, no difference between them can be read as a model or caching effect.

Two OpenAI phone rows are marked insufficient because too few calls had a model-spoken opening. The caller spoke first, or no opening was configured, on 18 of 23 gpt-realtime-2.1 calls and 11 of 23 gpt-realtime-mini calls.

Greeting time: session start to the first audio of a model-spoken opening, as received by APIFleet's server. Medians with call-level 95% bootstrap intervals; dates are 2026, UTC.

| Model and channel | Calls with a model-spoken opening | Median, ms (95% interval) | p90, ms | Dates, 2026 | Note |
| --- | --- | --- | --- | --- | --- |
| gpt-live-1, phone | 309 | 3,775 (3,657 to 3,904) | 4,764 | 11 Sep to 29 Oct | mostly from one assistant; the bridge started a recorded clip on 632 other calls |
| gpt-live-1, web | 158 | 2,368 (2,285 to 2,506) | 3,928 | 13 Sep to 28 Oct | 144 assistants |
| Gemini 3.1 Flash Live, phone, all days | 92 | 1,618 (1,227 to 2,823) | 23,886 | 5 to 9 Sep | 54 of the 92 openings on 5 Sep |
| Gemini 3.1 Flash Live, phone, without 5 Sep | 38 | 1,178 (1,065 to 1,319) | 2,250 | 6 to 9 Sep | 11 assistants |
| Gemini 3.1 Flash Live, web, all days | 147 | 1,383 (1,207 to 1,546) | 3,233 | 31 Aug to 22 Oct | 138 assistants |
| Gemini 3.1 Flash Live, web, without 5 Sep | 107 | 1,425 (1,314 to 1,598) | 2,740 | 31 Aug to 22 Oct | 98 assistants |
| gpt-realtime-2.1-mini, phone | 40 | 2,346 (2,036 to 2,632) | 3,188 | 24 Aug to 9 Sep | 5 assistants |
| gpt-realtime-2.1-mini, web | 112 | 2,188 (1,894 to 2,332) | 2,845 | 14 Aug to 5 Sep | 110 assistants |
| gpt-realtime-mini, phone | 12 | Insufficient | Insufficient | 17 to 27 Aug | Fewer than 20 openings; dates are the group's |
| gpt-realtime-mini, web | 43 | 1,917 (1,626 to 2,076) | 2,390 | 19 Aug to 1 Sep | 43 assistants |
| gpt-realtime-2.1, phone | 4 | Insufficient | Insufficient | 24 Aug to 27 Sep | Fewer than 20 openings; dates are the group's |
| gpt-realtime-2.1, web | 24 | 1,869 (1,517 to 2,166) | 2,319 | 24 Aug to 6 Sep | 79% of this model's web calls on 5 Sep |
| Gemini 3.8 Live, web | 64 | 1,173 (1,136 to 1,192) | 1,387 | 20 to 29 Sep | 95% of calls on 21 Sep; 13 assistants |

## Calls that ended in an error or stayed silent

Model-session errors ended 1.0% of gpt-live-1 phone calls (11 of 1,073, 95% interval 0.5% to 1.7%) and 1.9% of Gemini 3.1 Flash Live phone calls (3 of 154, or 1 of 46 without 5 September). An error-ended call is one whose end reason records a fatal failure reported by the model session, a dropped connection is a lost provider or assistant connection, and a silent call is one connected for 10 seconds or more with no assistant audio.

The OpenAI Realtime rows show no error rate because APIFleet's OpenAI Realtime session has no path that ends a call with a model-error reason. A failure there can only appear as a dropped connection or an ordinary hang-up, so their zero dropped connections are not evidence that nothing failed.

Small groups cannot rule much out. When nothing was seen, the table gives the rule-of-three 95% upper bound, 3 divided by the number of calls, which is 13% for a 23-call group. Gemini 3.1 Flash Live's web errors also cluster on 5 September, with 5 of its 6 error-ended web calls on that day.

Calls ended by a model-session error or a dropped connection, and calls of 10 s or more with no assistant audio. When the count is zero, the bracket gives the 95% upper bound; dates are 2026, UTC.

| Model and channel | Ended by a model-session error | Ended by a dropped connection | Silent, of calls of 10 s or more | Dates, 2026 |
| --- | --- | --- | --- | --- |
| gpt-live-1, phone | 11 of 1,073 (1.0%) | 0 of 1,073 (upper bound 0.3%) | 7 of 745 (0.9%) | 11 Sep to 29 Oct |
| gpt-live-1, web | 3 of 183 (1.6%) | 0 of 183 (upper bound 1.6%) | 2 of 168 (1.2%) | 10 Sep to 28 Oct |
| Gemini 3.1 Flash Live, phone, all days | 3 of 154 (1.9%) | 2 of 154 (1.3%) | 3 of 147 (2.0%) | 5 to 9 Sep |
| Gemini 3.1 Flash Live, phone, without 5 Sep | 1 of 46 (2.2%) | 0 of 46 (upper bound 6.5%) | 3 of 46 (6.5%) | 6 to 9 Sep |
| Gemini 3.1 Flash Live, web, all days | 6 of 156 (3.8%) | 0 of 156 (upper bound 1.9%) | 2 of 140 (1.4%) | 31 Aug to 22 Oct |
| Gemini 3.1 Flash Live, web, without 5 Sep | 1 of 111 (0.9%) | 0 of 111 (upper bound 2.7%) | 2 of 98 (2.0%) | 31 Aug to 22 Oct |
| gpt-realtime-2.1-mini, phone | Not reported | 0 of 46 (upper bound 6.5%) | 1 of 45 (2.2%) | 17 Aug to 9 Sep |
| gpt-realtime-2.1-mini, web | Not reported | 0 of 118 (upper bound 2.5%) | 0 of 107 (upper bound 2.8%) | 14 Aug to 5 Sep |
| gpt-realtime-mini, phone | Not reported | 0 of 23 (upper bound 13%) | 0 of 23 (upper bound 13%) | 17 to 27 Aug |
| gpt-realtime-mini, web | Not reported | 0 of 44 (upper bound 6.8%) | 0 of 42 (upper bound 7.1%) | 19 Aug to 1 Sep |
| gpt-realtime-2.1, phone | Not reported | 0 of 23 (upper bound 13%) | 1 of 20 (5.0%) | 24 Aug to 27 Sep |
| gpt-realtime-2.1, web | Not reported | 0 of 24 (upper bound 12.5%) | 0 of 23 (upper bound 13%) | 24 Aug to 6 Sep |
| Gemini 3.8 Live, web | 0 of 64 (upper bound 4.7%) | 0 of 64 (upper bound 4.7%) | 0 of 62 (upper bound 4.8%) | 20 to 29 Sep |

## Cost per connected minute, before the platform fee

On the phone, estimated provider and carrier charges per connected minute were $0.0574 for gpt-live-1 (1,073 calls), $0.0303 for gpt-realtime-2.1-mini (44 calls), $0.0277 for gpt-realtime-mini (20 calls) and $0.0669 for gpt-realtime-2.1 (23 calls). Gemini 3.1 Flash Live came to $0.0389 over all 154 phone calls but $0.0907 over the 46 calls after 5 September, which makes it the least settled figure in the table.

Each figure is a group's summed charges divided by its connected minutes, priced from APIFleet's configured rate cards, which changed during the period, rather than from invoices. The current rate card prices gpt-realtime-2.1 text output at $16 per million tokens where OpenAI now lists $24, so that model's rows may understate its text output. Phone totals include Telnyx carrier time at a flat configured $0.0055 per minute, web calls have no carrier charge, and no figure includes APIFleet's platform fee of $0.03 per connected AI minute, billed per second.

As illustrative arithmetic, adding that fee to the gpt-live-1 phone estimate gives about $0.087 per connected minute. Most of gpt-live-1's charge is its Live voice fee of $0.05 per session minute, which came to $0.0488 of the $0.0574 on the phone while the GPT-5.6 Luna backend added $0.0031; on the web, mostly with the GPT-5.6 Terra backend, the backend share was $0.0165 of $0.0659 (183 calls).

Token-billed models move with prompt size and call shape. The gpt-realtime-mini and gpt-realtime-2.1-mini models share a list price, yet their pooled web figures were $0.0123 (44 calls) and $0.0226 (118 calls), while their per-call medians were close at $0.0231 (42 calls) and $0.0220 (107 calls). The pooled figure weights each call by its length, so long calls with low per-minute costs pull it down.

Read the small OpenAI phone groups with care: the 20 costed gpt-realtime-mini calls come from four assistants, and the interval for gpt-realtime-2.1 on the phone runs from $0.0535 to $0.0902 (23 calls).

Estimated provider and carrier cost per connected minute in USD, from APIFleet's configured rate cards, pooled over each group with call-level 95% bootstrap intervals. Excludes APIFleet's $0.03 platform fee; phone totals include $0.0055 for the carrier.

| Model, channel and dates (2026) | Calls | Total per minute (95% interval) | Model tokens | Live voice fee | Per-call median (calls of 10 s or more) |
| --- | --- | --- | --- | --- | --- |
| gpt-live-1, phone, 11 Sep to 29 Oct | 1,073 | 0.0574 (0.0571 to 0.0576) | 0.0031 (backend) | 0.0488 | 0.0584 (745 calls) |
| gpt-live-1, web, 10 Sep to 28 Oct | 183 | 0.0659 (0.0636 to 0.0681) | 0.0165 (backend) | 0.0494 | 0.0601 (168 calls) |
| Gemini 3.1 Flash Live, phone, 5 to 9 Sep | 154 | 0.0389 (0.0333 to 0.0453) | 0.0334 | None | 0.0315 (147 calls) |
| Gemini 3.1 Flash Live, phone, 6 to 9 Sep (without 5 Sep) | 46 | 0.0907 (0.0730 to 0.1061) | 0.0852 | None | 0.0706 (46 calls) |
| Gemini 3.1 Flash Live, web, 31 Aug to 22 Oct | 156 | 0.0513 (0.0475 to 0.0554) | 0.0513 | None | 0.0540 (140 calls) |
| Gemini 3.1 Flash Live, web, 31 Aug to 22 Oct without 5 Sep | 111 | 0.0576 (0.0524 to 0.0630) | 0.0576 | None | 0.0561 (98 calls) |
| gpt-realtime-2.1-mini, phone, 17 Aug to 9 Sep | 44 | 0.0303 (0.0261 to 0.0346) | 0.0248 | None | 0.0263 (43 calls) |
| gpt-realtime-2.1-mini, web, 14 Aug to 5 Sep | 118 | 0.0226 (0.0211 to 0.0242) | 0.0226 | None | 0.0220 (107 calls) |
| gpt-realtime-mini, phone, 17 to 27 Aug | 20 | 0.0277 (0.0231 to 0.0328) | 0.0222 | None | 0.0284 (20 calls) |
| gpt-realtime-mini, web, 19 Aug to 1 Sep | 44 | 0.0123 (0.0088 to 0.0174) | 0.0123 | None | 0.0231 (42 calls) |
| gpt-realtime-2.1, phone, 24 Aug to 27 Sep | 23 | 0.0669 (0.0535 to 0.0902) | 0.0614 | None | 0.0675 (20 calls) |
| gpt-realtime-2.1, web, 24 Aug to 6 Sep | 24 | 0.0605 (0.0340 to 0.0911) | 0.0605 | None | 0.0981 (23 calls) |
| Gemini 3.8 Live, web, 20 to 29 Sep | 64 | 0.0498 (0.0458 to 0.0560) | 0.0498 | None | 0.0486 (62 calls) |

## Tokens per connected minute are billing counts, not audio

Text input was the largest count in every row, with medians from 15,202 tokens per connected minute for gpt-live-1 on the web (168 calls) to 72,626 for Gemini 3.1 Flash Live on the phone after 5 September (46 calls; 23,438 over all 147 calls). These are the counts each vendor reported for billing, divided by connected minutes on calls of 10 seconds or more, and they do not measure how much audio anyone heard.

OpenAI Realtime input counts include the conversation context that the model reads again on every response, and Gemini's are summed turn by turn, so long prompts and tool lists multiply them. The gpt-live-1 figure is its delegated backend's prompt, not audio.

Token accounting also differs between generations: gpt-realtime-2.1-mini recorded a median of 57 audio input tokens per minute on the phone (43 calls) next to 25,015 text input tokens, while gpt-realtime-mini recorded 1,536 audio input tokens per minute on the phone (20 calls). Use the table to size prompts and budgets, not to rank models.

Median tokens per connected minute on calls of 10 s or more, as recorded for billing; audio and text input include cached tokens

| Model, channel and dates (2026) | Calls | Audio in | Audio out | Text in | Note |
| --- | --- | --- | --- | --- | --- |
| gpt-live-1, phone, 11 Sep to 29 Oct | 745 | Not token-billed | Not token-billed | 49,730 | Backend prompt; voice billed per Live minute |
| gpt-live-1, web, 10 Sep to 28 Oct | 168 | Not token-billed | Not token-billed | 15,202 | Backend prompt; voice billed per Live minute |
| Gemini 3.1 Flash Live, phone, 5 to 9 Sep | 147 | 1,502 | 219 | 23,438 | Includes 5 Sep |
| Gemini 3.1 Flash Live, phone, 6 to 9 Sep (without 5 Sep) | 46 | 3,205 | 598 | 72,626 | 16 assistants |
| Gemini 3.1 Flash Live, web, 31 Aug to 22 Oct | 137 | 3,533 | 529 | 45,956 | 3 calls without recorded tokens excluded |
| Gemini 3.1 Flash Live, web, 31 Aug to 22 Oct without 5 Sep | 95 | 2,956 | 611 | 49,664 | 3 calls without recorded tokens excluded |
| gpt-realtime-2.1-mini, phone, 17 Aug to 9 Sep | 43 | 57 | 701 | 25,015 | Few audio input tokens recorded |
| gpt-realtime-2.1-mini, web, 14 Aug to 5 Sep | 107 (text in: 100) | 123 | 646 | 29,871 | Few audio input tokens recorded |
| gpt-realtime-mini, phone, 17 to 27 Aug | 20 | 1,536 | 491 | 46,003 | 4 assistants |
| gpt-realtime-mini, web, 19 Aug to 1 Sep | 42 | 358 | 551 | 37,167 | 42 assistants |
| gpt-realtime-2.1, phone, 24 Aug to 27 Sep | 19 | Insufficient | Insufficient | Insufficient | Fewer than 20 calls with tokens |
| gpt-realtime-2.1, web, 24 Aug to 6 Sep | 23 | 574 | 555 | 37,968 | 22 assistants |
| Gemini 3.8 Live, web, 20 to 29 Sep | 62 | 2,394 | 1,249 | 30,135 | Median call 13.6 s |

## The six models, as their vendors describe them

The descriptions and list prices below come from OpenAI's and Google's own pages, checked on 29 October 2026, and they are the vendors' claims rather than APIFleet measurements. The last column records how the calls in this data were set up, one of the differences between rows that the tables cannot separate from the model.

Two pairs share a rate card: gpt-realtime-mini and gpt-realtime-2.1-mini list the same token prices, as do Gemini 3.1 Flash Live and Gemini 3.8 Live. The gpt-live-1 model is the only one billed per session minute, at $0.05 billed per second, with its backend model's tokens on top.

Two of the six are no longer the vendors' recommended choice. OpenAI's model page marks gpt-realtime-mini as deprecated, and Google calls Gemini 3.1 Flash Live a legacy preview and recommends Gemini 3.8 Live for most voice agents, so their rows describe past traffic, which ended on 1 September 2026 for gpt-realtime-mini and on 22 October 2026 for Gemini 3.1 Flash Live, rather than a current pick.

Vendor descriptions and list prices checked on 29 October 2026 (USD per million tokens unless stated), and how each model ran on APIFleet in this data

| Model | Vendor description | List price | On APIFleet in this data |
| --- | --- | --- | --- |
| gpt-live-1 | Full-duplex voice model that hands reasoning and tool calls to a backend model | $0.05 per session minute, billed per second, plus backend model and tool usage | Phone: willow voice with a GPT-5.6 Luna backend on 99.7% of calls; web: mostly marin with GPT-5.6 Terra |
| gemini-3.1-flash-live-preview | Legacy preview for real-time dialogue with sequential tool calls; Google recommends moving to Gemini 3.8 Live | Audio in $3, audio out $12, text in $0.75 | APIFleet turn detection with manual activity signals on 110 of 154 phone calls (34 of the 46 after 5 Sep) and 78 of 156 web calls; Google's automatic detection on the rest (45 web calls from 31 Aug to 4 Sep record no setting) |
| gpt-realtime-2.1-mini | Distilled reasoning model for faster, lower-cost realtime voice | Audio in $10, audio out $20, text in $0.60 | Mostly the marin voice; 118 of its 164 calls were browser tests |
| gpt-realtime-mini | Cost-efficient version of GPT-Realtime, now marked deprecated | Same as gpt-realtime-2.1-mini | Phone calls mostly used the echo voice; last call in this data on 1 Sep 2026 |
| gpt-realtime-2.1 | Speech-to-speech reasoning model with tool use | Audio in $32, audio out $64, text in $4 | Mostly the marin voice; 19 of its 23 phone calls were outbound |
| gemini-3.8-live | Stable default for low-latency voice agents, with asynchronous function calling | Same as Gemini 3.1 Flash Live | Google's automatic detection on all 64 web calls; no phone calls |

## The calls behind these numbers

The data is an extract of APIFleet's call logs and trace events without transcripts, phone numbers or customer details, analysed only in aggregate. It holds 1,908 calls that ran one of these six models between 14 August and 29 October 2026: 1,319 phone calls over Telnyx media streams and 589 web calls, which are browser test sessions, and the two channels are never pooled. Two older OpenAI realtime models, with two calls each, are left out.

A group needs at least 20 calls before any statistic appears, a median or percentile needs at least 20 samples, and a rate needs at least 20 calls; anything smaller is marked insufficient. Intervals are 95% bootstrap intervals that resample whole calls, so they describe uncertainty about these calls, not about other deployments.

Web rows are browser tests and demos, some possibly automated, and phone rows include developer test calls, so neither channel is a sample of ordinary caller traffic. Several groups are concentrated in one day or a few assistants, as the table shows.

Calls per model and channel, 14 August to 29 October 2026 (UTC dates)

| Model | Channel | Calls (assistants) | Dates, 2026 | Median call length | Busiest day's share of calls |
| --- | --- | --- | --- | --- | --- |
| gpt-live-1 | Phone | 1,073 (20) | 11 Sep to 29 Oct | 37.3 s | 7% (15 Sep) |
| gpt-live-1 | Web | 183 (159) | 10 Sep to 28 Oct | 58.8 s | 13% (17 Sep) |
| Gemini 3.1 Flash Live | Phone | 154 (83) | 5 to 9 Sep | 151.8 s (97.1 s over the 46 calls without 5 Sep) | 70% (5 Sep) |
| Gemini 3.1 Flash Live | Web | 156 (145) | 31 Aug to 22 Oct | 66.0 s | 29% (5 Sep) |
| gpt-realtime-2.1-mini | Phone | 46 (7) | 17 Aug to 9 Sep | 87.1 s | 26% (25 Aug) |
| gpt-realtime-2.1-mini | Web | 118 (116) | 14 Aug to 5 Sep | 48.8 s | 14% (4 Sep) |
| gpt-realtime-mini | Phone | 23 (4) | 17 to 27 Aug | 174.6 s | 52% (17 Aug) |
| gpt-realtime-mini | Web | 44 (44) | 19 Aug to 1 Sep | 115.2 s | 27% (27 Aug) |
| gpt-realtime-2.1 | Phone | 23 (14) | 24 Aug to 27 Sep | 45.2 s | 43% (27 Sep) |
| gpt-realtime-2.1 | Web | 24 (23) | 24 Aug to 6 Sep | 168.5 s | 79% (5 Sep) |
| Gemini 3.8 Live | Web | 64 (13) | 20 to 29 Sep | 13.6 s | 95% (21 Sep) |

## Confounders that matter for this comparison

No group was randomised or matched, and no difference between rows should be read as caused by the model. Each model ran on different assistants, prompts, tools and weeks: two assistants made most of gpt-live-1's 1,073 phone calls, most web groups have close to one assistant per call, and each phone group comes from one or two tenants.

The runtime changed throughout the period, and changes on the vendors' side are invisible in these logs. OpenAI Realtime traffic ran from 14 August to 27 September, Gemini 3.1 Flash Live from 5 to 9 September on the phone and 31 August to 22 October on the web, Gemini 3.8 Live on the web from 20 to 29 September, and gpt-live-1 from 10 September to 29 October.

Call direction and length differ too: 83% of gpt-realtime-2.1's 23 phone calls were outbound against 11% of gpt-live-1's 1,073, and 31% of gpt-live-1's phone calls lasted under 10 seconds, which counts toward its pooled cost but not its per-call figures.

Configuration varies inside groups: Gemini 3.1 Flash Live mixes APIFleet's and Google's turn detection, gpt-live-1 used a different backend on the phone than on the web, and voices differ. Costs are rate-card estimates, and 54 calls that ran more than one session recorded a zero model charge that is rebuilt from the call total, 43 of them Gemini 3.1 Flash Live phone calls (39 of those on 5 September). Five calls with back-filled cost estimates are excluded, and 42 gpt-live-1 calls carry usage that was not fully confirmed.

## How to use these numbers when choosing a model

Treat the tables as a map of what to test, then measure your own candidates on one clock. In APIFleet the model is a per-assistant setting, so two copies of one assistant can differ only in model.

1. Test on the channel you will ship: the phone calls here ran over Telnyx at 8 kHz, while browser sessions add their own buffering and echo cancellation.
2. Time every candidate from the same point, such as the last voiced frame in your own recording, to the first reply audio you send, rather than from each vendor's end-of-speech event.
3. Measure the opening separately, from session start to first audio, because it includes connecting to the vendor and differs from reply timing.
4. Count error-ended and silent calls yourself for every candidate, because some sessions cannot report their own failures.
5. Price token-billed models with your real prompt and tool list; median text input ranged from about 15,000 to 73,000 tokens per minute across these groups.
6. Run an A/A comparison first to learn your noise floor, and check each vendor's model status before building on a preview or deprecated model.

![Diagram of one voice-agent conversation: caller audio, speech to the model, tools and context, then the spoken reply, with platform, AI provider and carrier charges shown as separate costs](https://apifleet.dev/content/voice-agent-workflow.svg)

## Continue with a practical next step

- [gpt-live-1 on APIFleet calls: the full data page](https://apifleet.dev/blog/gpt-live-1)
- [Gemini Live or OpenAI Realtime, answered with call data](https://apifleet.dev/reddit/gemini-live-vs-openai-realtime)
- [Where tool-call latency goes in a voice agent](https://apifleet.dev/reddit/voice-agent-tool-call-latency)
- [Callers talking over the opening greeting](https://apifleet.dev/reddit/barge-in-during-call-opening)
- [Text-to-speech models for phone calls, compared](https://apifleet.dev/blog/tts-models-phone-calls)
- [Set up an OpenAI speech-to-speech assistant](https://apifleet.dev/integrations/openai)
- [Set up a Gemini Live assistant](https://apifleet.dev/integrations/gemini)
- [APIFleet platform fee and billing boundaries](https://apifleet.dev/pricing)
- [Estimate platform, provider and carrier costs](https://apifleet.dev/tools/voice-agent-cost-calculator)
- [Measure a noise floor before comparing models](https://apifleet.dev/blog/voice-agent-evaluation-noise)

## Frequently asked questions

### Which speech-to-speech model responded fastest on APIFleet calls?

Among rows timed on the same clock, gpt-realtime-mini had the lowest medians from the caller endpoint to the first reply audio received by APIFleet's server, on turns that did not wait for a tool: 467 ms on the phone (133 turns, 21 calls, 17 to 27 August 2026) and 452 ms on the web (112 turns, 26 calls, 23 August to 1 September 2026). That clock starts at OpenAI's own end-of-speech event, the phone sample comes from four assistants, and OpenAI now marks the model deprecated.

### Why is there no response latency for gpt-live-1?

The gpt-live-1 session gives APIFleet no caller speech start or stop events, so no turn has a recorded end of caller speech to time from. Its openings, backend timing, errors and costs are measurable, and the gpt-live-1 page covers them.

### Is Gemini 3.1 Flash Live slower than OpenAI Realtime on the phone?

These numbers cannot settle that. Gemini's phone median of 1,274 ms (324 turns, 97 calls, 5 to 7 September 2026), or 1,016 ms (85 turns, 29 calls) without 5 September, the day that held every Gemini phone turn over 10 seconds, starts about 500 ms after the caller's last voiced audio, while the OpenAI rows start at OpenAI's own end-of-speech decision, whose wait is not recorded.

### What does a speech-to-speech model cost per minute on APIFleet?

Estimated provider and carrier charges on the phone, priced from APIFleet's rate cards, were $0.0574 per connected minute for gpt-live-1 (1,073 calls, 11 September to 29 October 2026) and $0.0277 to $0.0669 for the three OpenAI Realtime models (20 to 44 calls each, 17 August to 27 September 2026). Gemini 3.1 Flash Live came to $0.0389 over all 154 phone calls from 5 to 9 September 2026 but $0.0907 over the 46 calls after 5 September. APIFleet's platform fee of $0.03 per connected AI minute, billed per second, comes on top.

### Do the OpenAI Realtime rows without an error rate mean those models never failed?

No. APIFleet's OpenAI Realtime session has no path that ends a call with a model-error reason, so a failure can only show up as a dropped connection or an ordinary hang-up. The table marks those cells as not reported.

### Can these numbers be used as a benchmark?

No. They are observational production and test logs from different assistants, prompts, tenants and weeks, measured from different starting points, and no group was randomised or matched. Use them to decide what to test, then compare candidates on your own route.

## Sources and evidence

- [OpenAI API documentation: GPT-Live 1 model](https://developers.openai.com/api/docs/models/gpt-live-1) · observed 2026-10-29
- [OpenAI API pricing: realtime models and GPT-Live sessions](https://developers.openai.com/api/docs/pricing) · observed 2026-10-29
- [OpenAI API documentation: GPT-Realtime-2.1 model](https://developers.openai.com/api/docs/models/gpt-realtime-2.1) · observed 2026-10-29
- [OpenAI API documentation: GPT-Realtime-2.1 Mini model](https://developers.openai.com/api/docs/models/gpt-realtime-2.1-mini) · observed 2026-10-29
- [OpenAI API documentation: GPT-Realtime Mini model and its deprecation status](https://developers.openai.com/api/docs/models/gpt-realtime-mini) · observed 2026-10-29
- [OpenAI API documentation: voice activity detection](https://developers.openai.com/api/docs/guides/realtime-vad) · observed 2026-10-29
- [Gemini API documentation: Live API capabilities guide](https://ai.google.dev/gemini-api/docs/live-api/capabilities) · observed 2026-10-29
- [Gemini API documentation: Gemini 3.8 Live model](https://ai.google.dev/gemini-api/docs/models/gemini-3.8-live) · observed 2026-10-29
- [Gemini API documentation: Gemini 3.1 Flash Live preview model](https://ai.google.dev/gemini-api/docs/models/gemini-3.1-flash-live-preview) · observed 2026-10-29
- [Gemini Developer API pricing](https://ai.google.dev/gemini-api/docs/pricing) · observed 2026-10-29

Prepared with AI assistance and checked against the linked evidence. Examples are illustrative unless explicitly documented as measured results.

## Next on your reading list.

[What does a voice agent actually cost?](https://apifleet.dev/blog/voice-agent-costs)[Voice Agent Evaluation: How to Run an A/A Test](https://apifleet.dev/blog/voice-agent-evaluation-noise)[Test the conversation, not just the happy path](https://apifleet.dev/blog/test-voice-agents)

## Related

- [APIFleet](https://apifleet.dev/)
- [Documentation](https://apifleet.dev/docs)
- [Pricing](https://apifleet.dev/pricing)
