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

# Conversa de voz em tempo real GPT-Live

> OpenAI generation API guide - Ace Data Cloud

O GPT-Live oferece suporte para ouvir e falar simultaneamente, legendas bidirecionais e tarefas em segundo plano. A chamada de voz do ChatGPT no Studio usa `gpt-live-1` para processar a voz, e questões complexas continuam sendo processadas pelo modelo de chat atualmente selecionado.

## Conexão

Use o API Token da plataforma para conectar a `wss://realtime.acedata.cloud/v1/live/sessions`. As credenciais do Studio ou do serviço de chat usam `wss://realtime.acedata.cloud/aichat2/live`. O servidor autentica por meio de `Authorization: Bearer <token>`; o navegador transmite as credenciais por meio do subprotocolo WebSocket, evitando escrevê-las na URL:

```javascript theme={null}
const socket = new WebSocket('wss://realtime.acedata.cloud/aichat2/live', [
  'live', `acedata-token.${token}`
]);
socket.onopen = () => socket.send(JSON.stringify({
  type: 'session.start',
  session: {
    model: 'gpt-live-1',
    instructions: '简洁友好地回答，使用用户的语言。复杂问题交给后台处理。',
    audio: { format: { type: 'audio/pcm', rate: 24000 }, output: { voice: 'marin' } },
    delegation: { type: 'client' },
    store: false
  }
}));
```

Após aguardar `session.started`, envie continuamente `session.input_audio.append`, em que `audio` é o Base64 de áudio bruto PCM little-endian de 16 bits, mono, a 24 kHz, sem incluir o cabeçalho do arquivo WAV. Envie o áudio na velocidade de amostragem real, e os segmentos silenciosos também devem permanecer contínuos.

Reproduza em ordem `session.output_audio.delta.delta`. As legendas do usuário e do assistente vêm respectivamente de `session.input_transcript.delta` e `session.output_transcript.delta`; preserve o `delta`, `start_ms` e `end_ms` de cada segmento; as legendas de ambas as partes podem crescer simultaneamente. O Live não tem um evento de término para cada resposta de voz, devendo-se atualizar o estado de “respondendo” com base na fila de reprodução local.

## Tarefas em segundo plano

Atualmente, o modo de delegação `client` é compatível. Após receber `session.delegation.created`, o aplicativo chama seu próprio back-end com base nas legendas de voz e no contexto salvo, e retorna o resultado por meio de `session.thinking.append` ou `session.commentary.append`, incluindo o `delegation_id` correspondente e `content` em texto simples de no máximo 500 tokens. Os resultados devem vir de operações de back-end concluídas; a interrupção da voz não significa que a tarefa em segundo plano foi cancelada.

A delegação Responses hospedada, o armazenamento de gravações, `session.update`, a recuperação de sessão ou a reconexão automática ainda não são compatíveis. O modelo é fixo em `gpt-live-1`, o áudio é fixo em PCM16 a 24 kHz, e a voz é selecionada ao iniciar a chamada. A antiga API Realtime ainda pode ser usada.

## Cobrança e encerramento da chamada

A voz é cobrada pela duração da sessão ativa: **0,01 Credits/segundo, ou seja, 0,6 Credits/minuto**, sem arredondamento para cima por minutos completos. O tempo em que o usuário fala, o assistente fala, há silêncio, ambas as partes permanecem em silêncio e se aguarda por tarefas em segundo plano é cobrado. As chamadas de modelos ou ferramentas em segundo plano são cobradas separadamente conforme a API correspondente. O preço em dólares correspondente aos Credits depende do pacote de recarga, prevalecendo o preço atual no console.

`session.usage.updated.usage.seconds` é o uso acumulado. Por exemplo, se primeiro forem recebidos 12 segundos e depois 15 segundos, o total será 15 segundos. A plataforma liquida apenas a duração adicional, sem acumular repetidamente os snapshots.

Ao encerrar, envie `session.close`, continue recebendo até receber `session.closed`, depois feche a conexão e libere o microfone. Uma desconexão forçada pode fazer com que o uso final não seja confirmado, devendo a interface informá-lo claramente. A conexão será encerrada quando o saldo for insuficiente, a cobrança falhar ou o limite da sessão for atingido. Por padrão, uma única chamada dura no máximo 30 minutos.

Erros de parâmetros são retornados por meio do evento `error`; `error.client_event_id` corresponde ao comando que falhou. Uma falha na inicialização deve interromper a gravação e exibir o erro, sem alternar automaticamente o modelo ou tentar novamente gerando novos custos.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.