> ## Documentation Index
> Fetch the complete documentation index at: https://usefulai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Best Speech-to-Speech Models in 2026

export const models = [{
  rank: 1,
  name: "GPT-Realtime-2",
  dev: "OpenAI",
  icon: "/images/icons/openai.com.png",
  url: "https://developers.openai.com/api/docs/models/gpt-realtime-2",
  bestFor: "Complex production voice agents",
  score: "100",
  price: "$4.14/hr",
  license: "Proprietary",
  custom: "1.14s",
  customLabel: "Time to first audio"
}, {
  rank: 2,
  name: "Grok Voice Think Fast 1.0",
  dev: "xAI",
  icon: "/images/icons/x.ai.png",
  url: "https://x.ai/news/grok-voice-think-fast-1",
  bestFor: "Tool-heavy phone agents",
  score: "97",
  price: "$3.00/hr",
  license: "Proprietary",
  custom: "1.25s",
  customLabel: "Time to first audio"
}, {
  rank: 3,
  name: "Fun-Realtime-Audiochat",
  dev: "Alibaba Cloud",
  icon: "/images/icons/qwen.ai.png",
  url: "https://www.linkedin.com/posts/alibaba-tongyi-lab_we-are-honored-to-share-that-our-fun-series-activity-7465748752973336576-o_tL",
  bestFor: "High-quality model to watch",
  score: "96",
  price: "n/a",
  license: "Proprietary",
  custom: "1.39s",
  customLabel: "Time to first audio"
}, {
  rank: 4,
  name: "GPT-Realtime-1.5",
  dev: "OpenAI",
  icon: "/images/icons/openai.com.png",
  url: "https://developers.openai.com/api/docs/models/gpt-realtime-1.5",
  bestFor: "Fast, high-end realtime voice",
  score: "89",
  price: "$11.44/hr",
  license: "Proprietary",
  custom: "0.82s",
  customLabel: "Time to first audio"
}, {
  rank: 5,
  name: "Gemini 3.1 Flash Live",
  dev: "Google",
  icon: "/images/icons/google.com.png",
  url: "https://ai.google.dev/gemini-api/docs/models/gemini-3.1-flash-live-preview",
  bestFor: "Low-cost reasoning voice agents",
  score: "83",
  price: "$1.75/hr",
  license: "Proprietary",
  custom: "2.98s",
  customLabel: "Time to first audio"
}, {
  rank: 6,
  name: "GPT-Realtime",
  dev: "OpenAI",
  icon: "/images/icons/openai.com.png",
  url: "https://developers.openai.com/api/docs/models/gpt-realtime",
  bestFor: "Proven baseline realtime voice",
  score: "82",
  price: "$11.08/hr",
  license: "Proprietary",
  custom: "0.98s",
  customLabel: "Time to first audio"
}, {
  rank: 7,
  name: "Qwen3.5 Omni Plus Realtime",
  dev: "Alibaba Cloud",
  icon: "/images/icons/qwen.ai.png",
  url: "https://www.alibabacloud.com/help/en/model-studio/realtime",
  bestFor: "Hosted multilingual speech reasoning",
  score: "82",
  price: "$0.16/hr",
  license: "Proprietary",
  custom: "2.64s",
  customLabel: "Time to first audio"
}, {
  rank: 8,
  name: "Step-Audio R1.1",
  dev: "StepFun",
  icon: "/images/icons/stepfun.ai.png",
  url: "https://huggingface.co/stepfun-ai/Step-Audio-R1.1",
  bestFor: "Open-weight speech reasoning",
  score: "81",
  price: "$0.06/hr",
  license: "Open weight",
  custom: "1.51s",
  customLabel: "Time to first audio"
}, {
  rank: 9,
  name: "Amazon Nova 2 Sonic",
  dev: "Amazon",
  icon: "/images/icons/aws.amazon.com.png",
  url: "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-amazon-nova-2-sonic.html",
  bestFor: "Enterprise voice agents",
  score: "74",
  price: "$0.27/hr",
  license: "Proprietary",
  custom: "1.14s",
  customLabel: "Time to first audio"
}, {
  rank: 10,
  name: "Grok Voice Agent",
  dev: "xAI",
  icon: "/images/icons/x.ai.png",
  url: "https://docs.x.ai/developers/model-capabilities/audio/voice-agent",
  bestFor: "Fast everyday voice agents",
  score: "71",
  price: "$3.00/hr",
  license: "Proprietary",
  custom: "0.78s",
  customLabel: "Time to first audio"
}, {
  rank: 11,
  name: "Deepslate Opal",
  dev: "Deepslate",
  icon: "/images/icons/deepslate.eu.png",
  url: "https://docs.deepslate.eu/opal",
  bestFor: "Lowest-latency voice responses",
  score: "68",
  price: "$6.48/hr",
  license: "Proprietary",
  custom: "0.44s",
  customLabel: "Time to first audio"
}, {
  rank: 12,
  name: "GPT-Realtime mini",
  dev: "OpenAI",
  icon: "/images/icons/openai.com.png",
  url: "https://developers.openai.com/api/docs/models/gpt-realtime-mini",
  bestFor: "Fast, low-cost realtime chat",
  score: "58",
  price: "$3.04/hr",
  license: "Proprietary",
  custom: "0.81s",
  customLabel: "Time to first audio"
}, {
  rank: 13,
  name: "Qwen3.5 Omni Flash Realtime",
  dev: "Alibaba Cloud",
  icon: "/images/icons/qwen.ai.png",
  url: "https://www.alibabacloud.com/help/en/model-studio/realtime",
  bestFor: "Cheap high-volume voice agents",
  score: "53",
  price: "$0.16/hr",
  license: "Proprietary",
  custom: "0.79s",
  customLabel: "Time to first audio"
}, {
  rank: 14,
  name: "Nemotron Voicechat",
  dev: "NVIDIA",
  icon: "/images/icons/nvidia.com.png",
  url: "https://build.nvidia.com/nvidia/nemotron-voicechat/modelcard",
  bestFor: "Full-duplex enterprise evaluation",
  score: "38",
  price: "n/a",
  license: "Proprietary",
  custom: "n/a",
  customLabel: "Time to first audio"
}, {
  rank: 15,
  name: "PersonaPlex",
  dev: "NVIDIA",
  icon: "/images/icons/nvidia.com.png",
  url: "https://huggingface.co/nvidia/personaplex-7b-v1",
  bestFor: "Controllable local voice personas",
  score: "33",
  price: "n/a",
  license: "Open weight",
  custom: "n/a",
  customLabel: "Time to first audio"
}];

export const Fav = ({icon, size = "h-4 w-4"}) => <img src={icon} alt="" noZoom className={"relative -top-px mr-1 inline rounded-sm object-contain " + size} />;

export const LicenseBadge = ({license}) => license === "Open weight" ? <span className="inline-flex items-center rounded bg-emerald-50 px-1.5 py-[2px] text-xs font-medium leading-4 text-emerald-700 dark:bg-emerald-500/10 dark:text-emerald-400">Open weight</span> : <span className="inline-flex items-center rounded bg-zinc-100 px-1.5 py-[2px] text-xs font-medium leading-4 text-zinc-600 dark:bg-white/10 dark:text-zinc-300">Proprietary</span>;

export const BestForChip = ({children}) => <span className="inline-flex min-w-0 max-w-full items-center rounded bg-sky-50 px-1.5 py-[2px] dark:bg-sky-500/10">
    <span className="truncate text-xs font-medium leading-4 text-sky-700 dark:text-sky-400">{children}</span>
  </span>;

export const HeaderTip = ({label, tip}) => <span className="inline-flex items-center gap-1.5">
    <span>{label}</span>
    <Tooltip tip={tip}>
      <span className="relative top-0.5 inline-flex cursor-pointer text-zinc-500 transition-opacity hover:opacity-70 dark:text-zinc-400">
        <Icon icon="circle-info" size={12} color="currentColor" />
        <span className="sr-only">About {label.toLowerCase()}</span>
      </span>
    </Tooltip>
  </span>;

export const ModelCard = ({model, children}) => <section className="not-prose my-5 rounded-lg border border-zinc-200 bg-white p-5 shadow-sm dark:border-white/10 dark:bg-white/[0.03]">
    <div className="mb-3"><BestForChip>{model.bestFor}</BestForChip></div>
    <div className="flex items-center gap-3">
      <img src={model.icon} alt={model.dev + " logo"} noZoom className="h-10 w-10 shrink-0 rounded-lg object-contain" />
      <div className="min-w-0 flex-1">
        <h2 className="m-0 max-w-full text-xl font-semibold leading-7 tracking-normal">
          <a href={model.url} target="_blank" rel="noreferrer" className="group inline-flex min-w-0 max-w-full items-center gap-1.5 no-underline text-zinc-950 dark:text-white">
            <span className="min-w-0 break-words"><span className="underline-offset-4 group-hover:underline group-focus-visible:underline">{model.name}</span> <span className="font-normal text-zinc-500 dark:text-zinc-400">({model.dev})</span></span>
            <span aria-hidden="true" className="flex shrink-0 text-zinc-400 transition-colors group-hover:text-zinc-900 group-focus-visible:text-zinc-900 dark:text-zinc-500 dark:group-hover:text-white dark:group-focus-visible:text-white"><Icon icon="arrow-up-right" size={12} color="currentColor" /></span>
          </a>
        </h2>
        <div className="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-[13px] leading-5 uai-ink-muted">
          <LicenseBadge license={model.license} />
          <span aria-hidden="true">∙</span>
          <span>Score <span className="tabular-nums text-zinc-950 dark:text-white">{model.score}</span></span>
          <span aria-hidden="true">∙</span>
          <span>Price <span className="tabular-nums text-zinc-950 dark:text-white">{model.price}</span></span>
          {model.custom && <><span aria-hidden="true">∙</span><span>{model.customLabel} <span className="tabular-nums text-zinc-950 dark:text-white">{model.custom}</span></span></>}
        </div>
      </div>
    </div>
    {children}
  </section>;

export const Take = ({children}) => <div className="not-prose mt-4 text-sm leading-[22px] text-zinc-700 dark:text-zinc-300">{children}</div>;

export const ST = ({label, children}) => <div className="not-prose mt-4">
    <div className="text-sm font-semibold text-zinc-950 dark:text-white">{label}</div>
    <div className="mt-1 flex flex-col gap-2.5 text-sm leading-[22px] text-zinc-700 dark:text-zinc-300">{children}</div>
  </div>;

export const AccessBullets = ({rows}) => <div className="not-prose mt-4 text-sm leading-[22px] text-zinc-700 dark:text-zinc-300">
    <div className="font-semibold text-zinc-950 dark:text-white">How to access</div>
    <div className="mt-1.5 flex flex-col gap-1.5">
      {rows.map(([key, body]) => <span key={key} className="flex items-baseline gap-2.5"><span aria-hidden="true" className="relative -top-0.5 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-zinc-700 dark:bg-zinc-300" /><span><span className="font-semibold text-zinc-950 dark:text-white">{key}</span> — {body}</span></span>)}
    </div>
  </div>;

export const Alt = ({icon, name, dev, url, children}) => <span className="flex items-baseline gap-2.5">
    <span aria-hidden="true" className="relative -top-0.5 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-zinc-300 dark:bg-zinc-600" />
    <span><Fav icon={icon} /><a href={url} target="_blank" rel="noreferrer" className="font-medium text-zinc-950 underline underline-offset-2 dark:text-white">{name}</a> <span className="uai-ink-muted">({dev})</span> — {children}</span>
  </span>;

<div className="not-prose -mt-2 mb-8 flex flex-wrap items-center gap-x-2 text-sm text-zinc-800 dark:text-zinc-200 lg:-mt-5" style={{ paddingLeft: "2px" }}>
  <span className="inline-flex items-center gap-1.5"><Icon icon="clock-rotate-left" size={10} color="currentColor" /> Updated <time dateTime="2026-07-12">July 12, 2026</time></span>
</div>

Speech-to-speech models take audio in and talk back in real time - the engines behind voice agents and live assistants. The catch: the best-sounding, smartest models often aren't the fastest to respond, and price swings widely. We compared 15 on quality, speed, price, and access.

## Best Speech-to-Speech Models

<div className="uai-overview-breakout not-prose my-5">
  <input type="checkbox" id="models-more" className="fy-more-toggle sr-only" aria-label={"Show all 15 realtime voice models"} />

  <div className="fy-more-table overflow-x-auto rounded-lg border border-zinc-200 bg-white dark:border-white/10 dark:bg-white/[0.03]">
    <div className="table text-sm" style={{ width: "100%" }}>
      <div className="table-header-group bg-zinc-50/60 dark:bg-white/[0.02]">
        <div className="table-row">
          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">#</span>
          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">Model</span>
          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">Best for</span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-right text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label="Score" tip={"UsefulAI's 0-100 score uses the Artificial Analysis Speech to Speech benchmark suite across reasoning, conversation, and agentic performance."} />
          </span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-right text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label="Price" tip={"Hourly input-audio price for the represented route. Output audio, text tokens, tools, and session overhead can increase total cost."} />
          </span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label="License" tip="Proprietary means no public model weights. Open weight means weights are available, though exact licenses and commercial-use terms vary." />
          </span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label={"Time to first audio"} tip={"Average seconds until the first audio output in Artificial Analysis runs. Lower is faster; this is not total call latency."} />
          </span>
        </div>
      </div>

      <div className="table-row-group">
        {models.map((model, index) => (
                        <a key={model.name} href={model.url} target="_blank" rel="noreferrer" className={"table-row no-underline transition-colors hover:bg-zinc-50/60 dark:hover:bg-white/[0.02]" + (models.length > 9 && index >= 7 ? " fy-more-row" : "")}>
                          <span className="table-cell w-8 whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle text-[13px] tabular-nums dark:border-white/5"><span className="sr-only">Rank </span><span className="uai-ink-muted">{model.rank}</span></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle dark:border-white/5"><span className="flex items-center gap-2.5"><Fav icon={model.icon} /><span className="text-sm font-semibold leading-5 text-zinc-950 dark:text-white">{model.name}</span></span></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle text-[13px] leading-5 text-zinc-950 dark:border-white/5 dark:text-white"><span className="sr-only">Best for: </span>{model.bestFor}</span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 text-right align-middle text-[13px] leading-5 tabular-nums text-zinc-950 dark:border-white/5 dark:text-white"><span className="sr-only">Score: </span>{model.score}</span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 text-right align-middle text-[13px] leading-5 tabular-nums dark:border-white/5"><span className="sr-only">Price: </span><span className="uai-ink-muted">{model.price}</span></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle dark:border-white/5"><span className="sr-only">License: </span><LicenseBadge license={model.license} /></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle text-[13px] leading-5 text-zinc-950 dark:border-white/5 dark:text-white"><span className="sr-only">Time to first audio: </span>{model.custom}</span>
                        </a>
                      ))}
      </div>
    </div>
  </div>

  {models.length > 9 && <div className="fy-more-pill mt-3 flex justify-center">
      <label htmlFor="models-more" className="inline-flex cursor-pointer items-center gap-1.5 rounded-full border border-zinc-200 px-4 py-1.5 text-[13px] font-medium text-zinc-600 transition-colors hover:text-zinc-900 dark:border-white/15 dark:text-zinc-300 dark:hover:text-white">
        <span className="fy-more-open inline-flex items-center gap-1.5">Show {models.length - 7} more <Icon icon="chevron-down" size={13} /></span>
        <span className="fy-more-close items-center gap-1.5">Show less <Icon icon="chevron-up" size={13} /></span>
      </label>
    </div>}
</div>

The score reflects model quality from the Artificial Analysis Speech to Speech benchmark suite. Time to First Audio is a separate measure of how quickly audio starts, not overall quality - a top scorer can still be slow to answer.

***

<ModelCard model={models[0]}>
  <Take>The most capable speech-to-speech model in this comparison, and the one to beat for demanding, tool-driven voice agents that can't afford to drift.</Take>

  <ST label="Strengths:">
    <div>It leads on speech reasoning and conversational dynamics at once, so it follows multi-step instructions, handles interruptions cleanly, and stays coherent through long, messy calls.</div>
    <div>When the task is hard and the agent has to think, act, and talk without losing the thread, this is the pick.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's priced well above the cheaper realtime tiers, so high-volume, simple flows burn budget fast - GPT-Realtime mini or Qwen3.5 Omni Flash Realtime fit those better.</div>
    <div>And confirm you want this exact model, since the newer GPT-Realtime-2.1 is worth testing beside it.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via the <a href="https://developers.openai.com/api/docs/guides/realtime" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenAI Realtime API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[1]}>
  <Take>xAI's strongest voice model, and the one we'd reach for when an agent has to call tools and take real actions mid-conversation.</Take>

  <ST label="Strengths:">
    <div>It posts the strongest agentic results in the suite, so it stays reliable when a call turns into actual work - looking things up, triggering functions, and pushing a task forward while still sounding natural.</div>
    <div>For phone agents that do more than chat, it's near the very top.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It edges just behind the top scorer overall, so for the hardest reasoning you might still prefer GPT-Realtime-2.</div>
    <div>Keep it distinct from Grok Voice Agent, which starts faster but is noticeably weaker at both reasoning and tool use.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://x.ai/voice" target="_blank" rel="noreferrer" className="underline underline-offset-2">xAI Voice Agent Builder</a>.</span>],
["API", <span>Accessible via the <a href="https://docs.x.ai/developers/model-capabilities/audio/voice-agent" target="_blank" rel="noreferrer" className="underline underline-offset-2">xAI Voice Agent API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[2]}>
  <Take>A near-top quality result with no public deployment route, making this a model to monitor rather than one you can choose today.</Take>

  <ST label="Strengths:">
    <div>In the benchmark data it's a genuine front-runner, matching the best on speech reasoning and natural back-and-forth.</div>
    <div>If Alibaba ships a documented public deployment, it could move straight into the top tier of models you'd actually build on.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Right now there's no verified public API, price, or app for the exact scored model, so you can't ship it today.</div>
    <div>Treat it as a watch-list entry, and don't confuse it with the separate Fun-Audio-Chat project, which isn't the same model.</div>
  </ST>
</ModelCard>

<ModelCard model={models[3]}>
  <Take>Fast and strong, but priced at the top of this list - hard to justify for a new build when GPT-Realtime-2 is cheaper and better.</Take>

  <ST label="Strengths:">
    <div>It's among the highest-accuracy models here, and it starts talking quickly, so exchanges feel responsive without sacrificing much reasoning.</div>
    <div>As a low-latency, high-quality realtime voice model it holds up well on its own - the issue is what it costs, not what it does.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>The price is the problem: it sits at the top of the range while GPT-Realtime-2 scores higher and costs far less.</div>
    <div>For almost any new project, start with GPT-Realtime-2 instead; there's little reason to reach for 1.5.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via the <a href="https://developers.openai.com/api/docs/guides/realtime" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenAI Realtime API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[4]}>
  <Take>Strong reasoning and native audio-to-audio at a genuinely low hourly price, held back mainly by how slowly it starts talking.</Take>

  <ST label="Strengths:">
    <div>It pairs solid speech reasoning with native audio-to-audio, live tool use, and one of the lower price points among the capable models.</div>
    <div>For reasoning-heavy voice agents where you care more about answer quality and cost than instant response, it's a smart, affordable choice.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Its weak spot is the slow first response - the high-quality configuration is among the laggiest here, which hurts on quick back-and-forth.</div>
    <div>If latency is your priority, Deepslate Opal or the fast OpenAI tiers feel far more immediate.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via the <a href="https://ai.google.dev/gemini-api/docs/live" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini Live API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[5]}>
  <Take>The familiar, sub-second realtime model many teams already know - still capable, but both pricier and weaker than the newer GPT-Realtime-2.</Take>

  <ST label="Strengths:">
    <div>It responds in under a second and handles natural conversation reliably, which is why it became a common default for voice agents.</div>
    <div>Nothing about it is broken, and it stays a dependable, well-understood option for straightforward spoken interactions.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's been overtaken: GPT-Realtime-2 is more capable and much cheaper, and GPT-Realtime-1.5 answers faster.</div>
    <div>There's no strong reason to start a new build here - keep it only where it's already wired in and working.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via the <a href="https://developers.openai.com/api/docs/guides/realtime" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenAI Realtime API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[6]}>
  <Take>The strongest speech-reasoner we've seen at a fraction of the top-tier price, as long as you can live with a slow first response.</Take>

  <ST label="Strengths:">
    <div>It's excellent at reasoning out loud, with function calling, search, broad multilingual support, and clean interruption handling - and it's one of the cheapest capable models to run.</div>
    <div>For multilingual, reasoning-led voice work on a tight budget, it's hard to beat.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's slow to start talking, so it's a poor fit for snappy, interactive agents. The listed price also covers input audio only, not a full session, so real costs run higher.</div>
    <div>For low latency, look at the fast OpenAI or Qwen Flash tiers.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://www.alibabacloud.com/help/en/model-studio/realtime" target="_blank" rel="noreferrer" className="underline underline-offset-2">Alibaba Cloud Model Studio</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[7]}>
  <Take>The standout open-weight pick - strong speech reasoning under an Apache-2.0 license, with first-party app and API routes if you'd rather not self-host.</Take>

  <ST label="Strengths:">
    <div>It's the rare open-weight model that competes with hosted leaders on reasoning, and the permissive license lets you deploy it however your compliance needs dictate.</div>
    <div>First-party app and API routes mean you can use it immediately without standing up your own infrastructure.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>"Open weight" here doesn't mean easy - the official self-hosting path is infrastructure-heavy and multi-GPU, not a local-machine setup.</div>
    <div>If you want a voice you truly run yourself, PersonaPlex fits better; if you just want it hosted, the API route is the practical choice.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://www.stepfun.com/studio/audio" target="_blank" rel="noreferrer" className="underline underline-offset-2">StepFun Audio Studio</a>.</span>],
["API", <span>Accessible via the <a href="https://platform.stepfun.com/" target="_blank" rel="noreferrer" className="underline underline-offset-2">StepFun Open Platform</a>.</span>],
["Run locally", <span>Open weights are available from <a href="https://huggingface.co/stepfun-ai/Step-Audio-R1.1" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>, but in practice this needs self-hosting infrastructure, not a local machine.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[8]}>
  <Take>A solid, mid-tier voice model built for production agents - streaming, tools, retrieval, and interruptions - though it trails the top scorers on raw quality.</Take>

  <ST label="Strengths:">
    <div>It's built for real voice-agent work: low-latency streaming, tool use, retrieval, interruption handling, and multilingual support, all geared for production from the start.</div>
    <div>For teams that want a dependable, feature-complete agent model rather than the highest benchmark score, it delivers.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>On pure quality it sits mid-pack, behind GPT-Realtime-2, Grok Voice Think Fast 1.0, and the Gemini and Qwen reasoning models.</div>
    <div>The listed price covers input audio only, and long calls need a session-continuation pattern that adds engineering work.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-amazon-nova-2-sonic.html" target="_blank" rel="noreferrer" className="underline underline-offset-2">Amazon Bedrock</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[9]}>
  <Take>xAI's quick, practical voice agent - sub-second responses and an easy build path, but clearly a step below its Think Fast sibling on quality.</Take>

  <ST label="Strengths:">
    <div>It answers fast, near the quickest here, and comes with a straightforward builder and API, so you can stand up a responsive voice agent without much fuss.</div>
    <div>For everyday, latency-sensitive assistants that don't need frontier reasoning, it's a reasonable pick.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's meaningfully weaker than Grok Voice Think Fast 1.0 on both reasoning and tool use, so don't mix the two up.</div>
    <div>If your agent does real work mid-call, step up to Think Fast; if you only need speed, other fast tiers compete on price.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://x.ai/voice" target="_blank" rel="noreferrer" className="underline underline-offset-2">xAI Voice Agent Builder</a>.</span>],
["API", <span>Accessible via the <a href="https://docs.x.ai/developers/model-capabilities/audio/voice-agent" target="_blank" rel="noreferrer" className="underline underline-offset-2">xAI Voice Agent API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[10]}>
  <Take>The fastest model here by a clear margin on first response, with EU hosting and flexible integration routes, but only mid-tier on quality.</Take>

  <ST label="Strengths:">
    <div>Nothing else starts talking as quickly, so conversations feel genuinely instant - the closest to human turn-taking in this group.</div>
    <div>REST, WebSocket, and SIP routes plus EU-based hosting make it easy to slot into telephony and privacy-sensitive setups.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>That speed comes with only middling reasoning and weaker agentic performance, so it's not the one for complex, tool-heavy tasks.</div>
    <div>The ecosystem is smaller and public pricing is thin. For more capability at similar latency, weigh the fast OpenAI tiers.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://docs.deepslate.eu/opal" target="_blank" rel="noreferrer" className="underline underline-offset-2">Deepslate Assistants and Agents</a>.</span>],
["API", <span>Accessible via <a href="https://deepslate.eu/" target="_blank" rel="noreferrer" className="underline underline-offset-2">Deepslate REST, WebSocket, and SIP integrations</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[11]}>
  <Take>The budget-friendly, low-latency OpenAI realtime option - great at natural conversation, but a real step down in reasoning and tool use.</Take>

  <ST label="Strengths:">
    <div>It's quick to respond and handles everyday back-and-forth smoothly at a lower cost than the flagship.</div>
    <div>For high-volume, lightweight voice - simple Q\&A, routing, casual assistants - it's an efficient workhorse that keeps conversations feeling natural.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Push it toward multi-step reasoning or serious tool use and it falls well short of GPT-Realtime-2 and the reasoning-led models.</div>
    <div>Note it's the older mini - GPT-Realtime-2.1 mini is a newer, distinct option worth testing before you commit.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via the <a href="https://developers.openai.com/api/docs/guides/realtime" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenAI Realtime API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[12]}>
  <Take>The speed-and-value play from the Qwen line - very cheap, quick to respond, and multilingual, but noticeably weaker at reasoning than Omni Plus.</Take>

  <ST label="Strengths:">
    <div>It's among the cheapest models here and starts talking fast, with broad language coverage.</div>
    <div>For high-volume, cost-sensitive voice where you need many concurrent sessions more than deep reasoning, it stretches a budget further than almost anything else on this list.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Its reasoning is well behind Qwen3.5 Omni Plus Realtime, so it's the wrong tool for complex, multi-step conversations.</div>
    <div>Treat it as the speed-and-volume option; when answers have to be right, step up to Omni Plus or a top-tier model.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://www.alibabacloud.com/help/en/model-studio/realtime" target="_blank" rel="noreferrer" className="underline underline-offset-2">Alibaba Cloud Model Studio</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[13]}>
  <Take>A full-duplex enterprise model you can trial, but it's early-access evaluation software - not something to build a product on yet.</Take>

  <ST label="Strengths:">
    <div>The full-duplex design - listening and speaking at once - is its most interesting trait, and a trial endpoint lets you evaluate it directly.</div>
    <div>For teams exploring where always-on, interruptible voice could go, it's worth a look.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's proprietary early-access under an evaluation license, not a normal release, and real deployment expects H100-class infrastructure.</div>
    <div>Overall quality also lands near the bottom here. For something you can actually ship today, almost everything above it is a safer bet.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via the <a href="https://build.nvidia.com/nvidia/nemotron-voicechat/modelcard" target="_blank" rel="noreferrer" className="underline underline-offset-2">NVIDIA Build trial endpoint</a>.</span>],
["Run locally", <span>Qualified model and NIM access are available through <a href="https://developer.nvidia.com/nemotron-voicechat-early-access" target="_blank" rel="noreferrer" className="underline underline-offset-2">NVIDIA Early Access</a>, but in practice this needs self-hosting infrastructure, not a local machine.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[14]}>
  <Take>The one genuinely local, open-weight pick with real persona and voice control - if you've got high-end hardware and don't need strong reasoning.</Take>

  <ST label="Strengths:">
    <div>It's open weight, full-duplex, and unusually good at conversational dynamics, with persona and voice conditioning you can actually steer.</div>
    <div>If you want a private, customizable voice you run yourself and you have the GPU for it, nothing else here offers this mix.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Reasoning is weak, so it's not for agents that need to think problems through, and official guidance targets A100/H100-class hardware, so "local" means a high-end rig, not a laptop.</div>
    <div>For capability, any hosted leader is far ahead.</div>
  </ST>

  <AccessBullets
    rows={[
["Run locally", <span>If you have a high-end machine, you can run it with <a href="https://github.com/NVIDIA/PersonaPlex" target="_blank" rel="noreferrer" className="underline underline-offset-2">PersonaPlex</a> after downloading weights from <a href="https://huggingface.co/nvidia/personaplex-7b-v1" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>.</span>],
]}
  />
</ModelCard>

***

## How to Choose

When choosing between these models, consider:

* **Access:** First decide whether you want an app, an API, or a model you run yourself, because that changes cost, privacy, latency, and setup work. Most main picks are hosted services. Step-Audio R1.1 supports infrastructure-heavy self-hosting, PersonaPlex is the main high-end local option, and the weaker Moshi also runs on a typical machine.
* **Quality:** We use the Artificial Analysis Speech to Speech benchmark suite as the main score - an equal-weighted look at speech reasoning, conversational dynamics, and agentic voice performance. It measures how good the model is, not how fast it responds.
* **Price:** We compare USD per hour of input audio. We use Artificial Analysis's calculated hourly cost where available; otherwise the value is the listed input-audio rate, so output charges may still apply.
* **Time to First Audio:** This is how quickly audio starts, averaged across benchmark runs - not total call latency. Lower feels more human. A strong model can still start slowly (Qwen3.5 Omni Plus Realtime and Gemini 3.1 Flash Live both do), which matters a lot for snappy, interactive agents.

***

## Other Models We Considered

<div className="not-prose my-4 flex flex-col gap-1.5 text-sm text-zinc-700 dark:text-zinc-300">
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-Realtime-2.1"} dev={"OpenAI"} url={"https://developers.openai.com/api/docs/models/gpt-realtime-2.1"}>Current full-size OpenAI API model; test it beside GPT-Realtime-2.</Alt>
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-Realtime-2.1 mini"} dev={"OpenAI"} url={"https://developers.openai.com/api/docs/models/gpt-realtime-2.1-mini"}>Newer low-cost realtime option for lighter voice workloads.</Alt>
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-Live-1"} dev={"OpenAI"} url={"https://openai.com/index/introducing-gpt-live/"}>Powers ChatGPT Voice for paid users, with no API to build on yet.</Alt>
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-Live-1 mini"} dev={"OpenAI"} url={"https://openai.com/index/introducing-gpt-live/"}>The free ChatGPT Voice model, also without an API yet.</Alt>
  <Alt icon={"/images/icons/google.com.png"} name={"Gemini 2.5 Flash Native Audio Dialog Thinking"} dev={"Google"} url={"https://ai.google.dev/gemini-api/docs/live"}>Stronger reasoning than newer Flash, but much slower to respond.</Alt>
  <Alt icon={"/images/icons/google.com.png"} name={"Gemini 2.5 Flash Native Audio Dialog"} dev={"Google"} url={"https://ai.google.dev/gemini-api/docs/live"}>Fast starts, but weaker reasoning than current options.</Alt>
  <Alt icon={"/images/icons/qwen.ai.png"} name={"Qwen3 Omni Realtime"} dev={"Alibaba Cloud"} url={"https://www.alibabacloud.com/help/en/model-studio/realtime"}>Earlier Qwen realtime model, now behind the 3.5 versions.</Alt>
  <Alt icon={"/images/icons/qwen.ai.png"} name={"Qwen3 Omni Flash"} dev={"Alibaba Cloud"} url={"https://www.alibabacloud.com/help/en/model-studio/qwen-omni"}>Older, slower-starting Qwen option with weaker overall value.</Alt>
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-4o Realtime"} dev={"OpenAI"} url={"https://developers.openai.com/api/docs/models/gpt-4o-realtime-preview"}>Legacy realtime model for existing builds, not new ones.</Alt>
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-4o mini Realtime"} dev={"OpenAI"} url={"https://developers.openai.com/api/docs/models/gpt-4o-mini-realtime-preview"}>Legacy mini model; newer Realtime mini tiers are easier picks.</Alt>
  <Alt icon={"/images/icons/huggingface.co.png"} name={"Moshi"} dev={"Kyutai"} url={"https://github.com/kyutai-labs/moshi"}>Runs on a normal machine, but far behind the hosted leaders on quality.</Alt>
</div>

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title={"What is the best speech-to-speech model right now?"}>
    GPT-Realtime-2. It's the top scorer and the most reliable at complex, tool-driven conversations, so it's the default recommendation for demanding production voice agents. The main reason not to use it is cost on very high-volume, simple traffic.
  </Accordion>

  <Accordion title={"What is the best speech-to-speech model for most teams?"}>
    For most new builds, GPT-Realtime-2 if you want peak quality, or Gemini 3.1 Flash Live if you want strong reasoning at a much lower hourly price and can accept a slower start. For high-volume lightweight voice, GPT-Realtime mini or Qwen3.5 Omni Flash Realtime keep costs down.
  </Accordion>

  <Accordion title={"What is the best open-weight speech-to-speech model?"}>
    Step-Audio R1.1. It competes with hosted leaders on reasoning under an Apache-2.0 license, and you can use it through first-party app and API routes. Just know that self-hosting it is infrastructure-heavy, not a local-machine task.
  </Accordion>

  <Accordion title={"What is the best speech-to-speech model you can run locally?"}>
    PersonaPlex is our main local pick, and it needs a high-end GPU (A100/H100-class), not a laptop. Moshi runs on a typical machine but is far weaker. For serious quality, a hosted model is still the better route.
  </Accordion>

  <Accordion title={"Which speech-to-speech model has the lowest latency?"}>
    Deepslate Opal starts talking faster than anything else on this list, which makes conversations feel close to instant. It's only mid-tier on reasoning, though, so it's best where responsiveness matters more than deep capability.
  </Accordion>

  <Accordion title={"Do the benchmark scores match real-world use?"}>
    For quality, mostly yes - the score tracks how well a model reasons and holds a conversation. But it says nothing about speed. Always check Time to First Audio too, since a high-scoring model like Qwen3.5 Omni Plus Realtime can still feel sluggish in a live call.
  </Accordion>

  <Accordion title={"Is GPT-Realtime-2 better than Grok Voice Think Fast 1.0?"}>
    They're close. GPT-Realtime-2 edges ahead on overall quality and the hardest reasoning, while Grok Voice Think Fast 1.0 posts the strongest agentic, tool-using results. If your agent mainly takes actions and calls tools, test Think Fast; for the toughest reasoning, GPT-Realtime-2.
  </Accordion>

  <Accordion title={"What should I use instead of GPT-Realtime or GPT-4o Realtime?"}>
    GPT-Realtime-2 for most cases - it's more capable than both and much cheaper than GPT-Realtime. If you need lower latency or lower cost within the same realtime family, look at GPT-Realtime-1.5 for speed or GPT-Realtime mini for budget.
  </Accordion>
</AccordionGroup>
