🎁 Novo Cadastre-se grátis, 10 chamadas por nossa conta. Até US$ 1, sem cartão.

Voz em tempo real

Crie agentes de voz bidirecionais com gpt-realtime — o modelo ouve a fala e responde com voz em tempo real (como uma ligação telefônica), por meio de uma conexão WebSocket com /v1/realtime. Seu SDK OpenAI Realtime existente funciona sem alterações; basta apontá-lo para o nosso endpoint e usar sua chave Synthorai.

Voz para voz, não transcrição
Esta página cobre voz para voz: voz na entrada, voz na saída. Conecte-se com ?model=gpt-realtime.
Se você só precisa converter áudio em texto (sem resposta falada), use Fala para texto em vez disso — é uma capacidade diferente.

Endpoint e autenticação

Abra um WebSocket para /v1/realtime com o seu modelo na string de consulta. A autenticação é executada antes do upgrade, então uma chave rejeitada nunca abre um socket.

# WebSocket, server-side (Node / Python / Go — anything that can set headers)
GET wss://synthorai.io/v1/realtime?model=gpt-realtime
Authorization: Bearer $YOUR_KEY
# Send only the Authorization header. Do NOT send OpenAI-Beta: realtime=v1
# (the beta protocol is retired; it makes the upstream reject the session).
  • Sua chave sk-syn nunca sai do nosso gateway — a credencial do upstream é trocada do nosso lado.
  • Feito para clientes do lado do servidor (Node, Python, Go — qualquer coisa que possa definir um cabeçalho Authorization). Tokens efêmeros de navegador não são suportados.
  • Apenas WebSocket. SIP (telefonia) e WebRTC conectam o cliente diretamente ao upstream e não são intermediados — em vez disso, faça a ponte do áudio de telefonia para um WebSocket.

Configure a sessão

Depois que a conexão abre, você recebe session.created. Envie um session.update para definir a voz, as modalidades, o formato de áudio e a detecção de turno. Use o formato GA (session.type: "realtime", áudio sob audio.input / audio.output) — o antigo formato plano em beta foi descontinuado.

{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "output_modalities": ["audio"],
    "instructions": "You are a concise customer-support agent.",
    "audio": {
      "input":  { "format": { "type": "audio/pcm", "rate": 24000 },
                  "turn_detection": { "type": "server_vad" } },
      "output": { "format": { "type": "audio/pcm", "rate": 24000 } }
    }
  }
}

Um turno de conversa mínimo:

  1. Transmita o áudio do microfone com input_audio_buffer.append (PCM em base64).
  2. Confirme o turno com input_audio_buffer.commit e depois response.create.
  3. Receba os deltas de áudio (response.output_audio.delta) e a transcrição de texto, depois response.done com o uso.
  4. Com o server VAD ativado, o modelo detecta os turnos para você; os mesmos eventos fluem sem commits manuais.

Ferramentas, chamada de funções e conhecimento

Declare funções em session.update. O modelo as chama no meio da conversa — é assim que você conecta a consulta de pedidos, a emissão de tickets ou qualquer sistema de negócio. Retorne o resultado e o modelo continua falando com base nele:

// 1. Declare tools in session.update: "tools": [{ "type": "function", ... }]
// 2. The model emits a function_call in response.done.
// 3. Return the result, then ask the model to continue:
{ "type": "conversation.item.create",
  "item": { "type": "function_call_output",
            "call_id": "call_abc",
            "output": "{\"status\":\"shipped\"}" } }
{ "type": "response.create" }

Servidores MCP remotos também são suportados ("type": "mcp") — o upstream se conecta diretamente ao servidor MCP. Para uma base de conhecimento, injete fatos por meio de instructions, uma ferramenta de função apoiada pelo seu RAG, ou MCP; o conhecimento embutido no modelo não é uma fonte confiável para fatos de negócio.

Cobrança

Cobrado por uso de cada response.done pelo preço de tabela oficial (sem sobretaxa) — áudio e texto, entrada e saída, com uma tarifa de entrada em cache. Cada sessão grava uma linha de registro no final.

TipoEntrada / 1M tokensSaída / 1M tokens
Áudio$32 / 1M$64 / 1M
Texto$4 / 1M$16 / 1M
Entrada em cache$0.40 / 1M

Os preços exibidos são para gpt-realtime / gpt-realtime-2.1; gpt-realtime-2.1-mini é cerca de um terço. A entrada de áudio é de ~10 tokens/second e a saída de ~20 tokens/second. Manter o histórico da conversa como somente-anexação permite que a tarifa em cache ($0.40/1M) absorva a maior parte de uma chamada longa.

Duração da sessão e troca a quente

!

Uma única sessão Realtime dura no máximo 60 minutes — este é um limite da plataforma OpenAI, não nosso. O upstream fecha a conexão ao atingir o limite.

  • Para chamadas que possam se estender, faça a troca a quente bem antes do limite (por ex. aos 50 minutes): abra uma sessão nova e reproduza a conversa como texto com conversation.item.create (o usuário como input_text, o assistente como output_text — o áudio do assistente não pode ser reproduzido).
  • Não há retomada de sessão: se o WebSocket cair, o estado do upstream é perdido. A reconexão usa o mesmo caminho de reprodução de texto, então construa a reconexão desde o primeiro dia.
  • O contexto é de 128K para gpt-realtime-2.1 / -mini (≈3.5 hours de áudio de entrada); o antigo gpt-realtime é de 32K — não o use para chamadas longas.

Acesso

gpt-realtime está em beta por convite. Ele aparece no catálogo e nos preços, mas usá-lo exige que seu workspace tenha acesso concedido — entre em contato para habilitá-lo.