Visão geral
A integração de voz consiste em três componentes principais:- Token de sala: Um JWT que concede acesso a uma sala LiveKit
- Conexão LiveKit: Comunicação em tempo real baseada em WebRTC
- Agente de voz: Processa entradas de áudio/texto e gera respostas faladas
- STT (Speech-to-Text): O áudio é transmitido via WebSocket a 16 kHz e transcrito
- LLM: O texto transcrito é processado pela API de Respostas MKA1
- TTS (Text-to-Speech): A saída do LLM é sintetizada em áudio a 24 kHz
"voice_mode": "true" nos metadata da solicitação. Isso permite distinguir respostas originadas por voz das baseadas em texto ao revisar o uso ou o histórico de respostas.
Como obter um token de sala
Para iniciar uma sessão de voz, primeiro solicite um token de sala da API MKA1. O endpoint de token requer uma chave de API e opcionalmente aceitaX-On-Behalf-Of para identificar usuários finais. Consulte Autenticação para mais detalhes.
Parâmetros
O corpo da solicitação possui dois objetos de nível superior:llm — Configuração do LLM (obrigatório)
O objeto llm aceita os mesmos campos do corpo da solicitação da API de Respostas, exceto os campos gerenciados pelo agente de voz (input, stream, store, background).
Não é possível especificar
previous_response_id e conversation ao mesmo tempo.
Os metadados do token são incorporados em um JWT, que é transmitido como um cabeçalho HTTP. Mantenha a carga total de
llm abaixo de aproximadamente 8 KB — arrays grandes de tools podem precisar ser reduzidos.stt — Configuração de reconhecimento de fala (opcional)
Controla a detecção de atividade de voz (VAD) no servidor e o comportamento de detecção de fim de fala.
Configuração avançada
Você pode transmitir ferramentas, instruções personalizadas e ajuste de STT em uma única solicitação de token:Resposta
O token inclui metadados que o agente de voz usa para configurar a sessão.
Como continuar uma sessão
Para continuar a partir de uma resposta anterior:Como conectar-se a uma sala
Depois de obter um token, use o SDK do LiveKit para conectar-se à sala.Como enviar entrada de áudio
O agente aceita entrada de áudio por meio da faixa de áudio da sala LiveKit. O áudio é processado a uma taxa de amostragem de 16 kHz.Comportamento de áudio
- Detecção de atividade de voz (VAD): O VAD é tratado no servidor pelo agente MKA1, não localmente. O agente detecta automaticamente quando você para de falar e começa o processamento.
- Taxa de amostragem: O áudio é transmitido a 16 kHz para o serviço STT.
- Detecção de fim de fala: O agente usa detecção de fim de fala no servidor para determinar quando a fala termina. Não há atraso local de detecção de fim de fala.
Como enviar entrada de texto
Você também pode enviar mensagens de texto diretamente ao agente sem falar.Como receber respostas do agente
O agente responde de três maneiras:- Saída de áudio: Fala sintetizada por meio de uma faixa de áudio
- Transcrição: Texto do que o agente está dizendo (para legendas)
- Metadados da resposta: ID da resposta e ID da conversa por meio do canal de dados
Como assinar a saída de áudio
Como receber transcrições
O agente publica transcrições de sua fala. Você pode usá-las para legendas ou registros.Como receber metadados da resposta
O agente publica oresponse_id e o conversation_id (se aplicável) quando começa a gerar uma resposta. Salve o response_id para encadear sessões futuras usando previous_response_id.
Continuidade de conversa
O agente oferece suporte a conversas com vários turnos e memória persistente. Cada resposta recebe automaticamente umresponse_id, enquanto as conversas devem ser criadas e gerenciadas explicitamente por meio da API de Conversas.
Há duas formas de continuar uma conversa:
llm.previous_response_id encadeia uma nova sessão a uma resposta específica. O agente recebe o contexto dessa resposta e de todas as respostas anteriores da cadeia. Use isto quando:
- Você deseja continuar a partir de um ponto específico de uma conversa
- Você está criando um fluxo de conversa linear
- Você deseja criar uma ramificação a partir de uma resposta específica
llm.conversation faz referência a uma conversa criada pela API de Conversas. Use isto quando:
- Você precisa gerenciar metadados da conversa (títulos, tags etc.)
- Você deseja listar ou pesquisar conversas anteriores
- Você está criando uma interface de chat com histórico de conversa persistente
- Vários clientes precisam acessar a mesma conversa
Como iniciar uma nova sessão
Como continuar a partir de uma resposta anterior
Useprevious_response_id para encadear uma nova sessão à última resposta, preservando o contexto da conversa:
Como continuar a partir de uma conversa
Useconversation_id para continuar uma conversa existente criada por meio da API de Conversas:
Como lidar com desconexões
Os tokens expiram após 5 minutos. Se precisar de sessões mais longas, implemente a lógica de reconexão:Exemplo completo
Aqui está um exemplo completo que reúne tudo:Tratamento de erros
Erros do endpoint de token
Eles são retornados como respostas HTTP ao solicitar um token de sala:Erros na sessão
Durante uma sessão de voz ativa, o agente publica erros pelo canal de dados LiveKit. Escute-os junto com os metadados da resposta:
Códigos de erro:
Erros de conexão
Próximas etapas
- Explore o endpoint de token LiveKit na referência da API
- Saiba mais sobre a API de Respostas que alimenta o agente de voz
- Revise os endpoints TTS e STT para casos de uso que não exigem tempo real