Qwen-Audio-Realtime Eventos do cliente
Qwen-Audio-Realtime Referência de evento do cliente API
Os eventos do cliente são enviados pelo cliente ao servidor para configurar a sessão, enviar áudio, gerenciar a conversa e controlar a inferência.
Guia do usuário: Conversa por voz em tempo real (Qwen-Audio-Realtime). Para ver o cronograma de interação do evento, consulte API WebSocket.
sessão.atualização
Após estabelecer a conexão, envie este evento para atualizar a configuração padrão da sessão. Inclua apenas os campos que você want mudar; os campos omitidos mantêm seu valor atual. O servidor valida os parâmetros no recebimento — se forem inválidos, retorna um erro; se válido, aplica as alterações e retorna a configuração completa.
turn_detection só pode ser alterado antes do primeiro áudio ser enviado (estado IDLE).
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como session.update. |
| sessão | objeto | Opcional | Configuração da sessão. |
| sessão.modalidades | matriz | Opcional | As modalidades de saída do modelo. Opções: ["text"] (somente saída de texto); ["audio", "text"] (padrão, gera texto e áudio). |
| sessão.voz | corda | Opcional | Nome de voz TTS. O padrão é longanqian_v3.1 para 3.1 Plus e longanqian para 3.0 Plus/Flash. Só pode ser definido no primeiro session.update; ignorado nas chamadas subsequentes. Suporta vozes do sistema e vozes de clonagem de voz (um voice_id criado por meio da API de clonagem de voz). Vozes adicionais do sistema para 3.1 Plus: longanqian_v3.1, longanhuan_v3.1, longanlingxin_v3.1, longanfengyue_v3.1, xunanchuan_v3.1, beth_v3.1, betty_v3.1, cally_v3.1; vozes do sistema compartilhadas pelo 3.1 Plus e 3.0 Plus/Flash: longanqian, longanlingxin, longanlingxi, longanxiaoxin, longanlufeng. |
| session.enable_speech_emotion | booleano | Opcional | Seja para ativar o aprimoramento da emoção. Quando habilitada, a voz de resposta apresenta variações emocionais mais pronunciadas. Padrão: true. Opções: true, false. |
| sessão.instruções | corda | Opcional | Instruções do sistema que definem a personalidade, o estilo de resposta e as preferências de comportamento do modelo. Aplica-se a toda a sessão. |
| sessão.input_audio_format | corda | Opcional | Formato de áudio de entrada. Atualmente apenas pcm (16 kHz, 16 bits, mono) é suportado e é o padrão. Só pode ser alterado antes do envio do primeiro áudio (estado IDLE). |
| sessão.output_audio_format | corda | Opcional | Formato de áudio de saída. Atualmente apenas pcm (24 kHz, 16 bits, mono) é suportado e é o padrão. |
| session.input_audio_transcription | objeto | Opcional | Configuração de transcrição de áudio de entrada. Aplica-se a qwen-audio-3.1-realtime-plus. |
| session.input_audio_transcription.idioma | corda | Opcional | O idioma de origem do áudio de entrada. Valores válidos: zh (chinês), en (Inglês), ja (japonês), ko (coreano), vi (vietnamita), th (tailandês), id (indonésio), ms (malaio), tl (Filipino), hi (hindi), ar (Árabe), fr (francês), de (Alemão), es (Espanhol), pt (português), ru (Russo), it (italiano), nl (holandês), sv (sueco), da (dinamarquês), fi (finlandês), no (norueguês), el (Grego), pl (polonês), cs (Tcheco), hu (húngaro), ro (Romeno), bg (búlgaro), hr (croata), sk (Eslovaco). |
| sessão.saída_audio | objeto | Opcional | Configuração de áudio de saída. Aplica-se a qwen-audio-3.1-realtime-plus. |
| session.output_audio.idioma | corda | Opcional | O idioma de destino do áudio de saída. Aplica-se à síntese de fala (TTS). O modelo faz todos os esforços para produzir fala no idioma alvo, mas isso não é garantido e o idioma do texto de resposta não é alterado. Para gerar texto no idioma de destino, indique explicitamente o requisito no prompt, por exemplo, especificando o idioma de resposta em instructions. Valores válidos: zh (chinês), en (Inglês), fr (francês), de (Alemão), ja (japonês), ko (coreano), ru (Russo), pt (português), th (tailandês), id (indonésio), vi (vietnamita), es (Espanhol), it (italiano), ms (malaio), fil (Filipino), ar (Árabe). |
| session.max_history_turns | inteiro | Opcional | O número máximo de turnos históricos de controle de qualidade permitidos por solicitação. Faixa: 1-50. Padrão: 20. |
| session.enable_search | booleano | Opcional | Aplica-se ao qwen-audio-3.1-realtime-plus, qwen-audio-3.0-realtime-pluse qwen-audio-3.0-realtime-flash modelos. Especifica se a pesquisa na web deve ser habilitada. Padrão: false. Quando ativado, o modelo decide se deseja pesquisar na web com base na consulta em tempo real. tools e enable_search não pode ser ativado ao mesmo tempo. |
| session.search_options | objeto | Opcional | Configuração de pesquisa na web. Só entra em vigor quando enable_search está definido para true. |
| session.search_options.enable_source | booleano | Opcional | Especifica se as fontes dos resultados da pesquisa devem ser retornadas. Definir como true para retornar as fontes. |
| sessão.ferramentas | matriz | Opcional | Uma lista de definições de ferramentas de chamada de função. Uma vez configurado, o modelo pode decidir por si mesmo se deseja chamar uma ferramenta com base na entrada do usuário. Cada ferramenta inclui type (fixado como function), function.name (obrigatório), function.description (opcional) e function.parameters (opcional, contendo type, properties, required). tools e enable_search não pode ser ativado ao mesmo tempo. |
| session.turn_detection | objeto\ | nulo | Opcional |
| session.turn_detection.type | corda | Opcional | Tipo VAD. server_vad (padrão): detecta o início e o fim da fala com base nos recursos acústicos e aciona automaticamente a inferência. smart_turn: detecção inteligente de mudança de direção que combina percepção acústica com compreensão semântica — sons não semânticos (como "um" ou "uh") não acionam uma mudança de conversa nem interrompem a reprodução do modelo. |
| session.turn_detection.threshold | flutuar | Opcional | Sensibilidade do DAV. Efetivo apenas no modo server_vad (não tem efeito no modo smart_turn). Valores mais baixos são mais sensíveis. Faixa: [-1,0, 1,0]. Padrão: 0,5. |
| session.turn_detection.silence_duration_ms | inteiro | Opcional | A duração mínima do silêncio (em milissegundos) necessária após o término da fala antes de acionar uma resposta do modelo. Efetivo apenas no modo server_vad (não tem efeito no modo smart_turn). Faixa: [200, 6000]. Padrão: 800. Para cenários de conversação, recomenda-se 400-800. |
| session.turn_detection.voiceprint_audio_urls | matriz | Opcional | Eficaz apenas no modo smart_turn. Uma lista de URLs publicamente acessíveis para o áudio pré-gravado do locutor alvo, usado para aprimoramento do locutor. Suporta até 5 URLs. Formato de áudio necessário: 16 kHz PCM ou WAV. Só pode ser configurado no primeiro session.update evento; as ocorrências subsequentes deste campo são ignoradas. |
Exemplo de configuração básica:
{
"type": "session.update",
"session": {
"modalities": [
"text",
"audio"
],
"voice": "longanqian",
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"silence_duration_ms": 800
}
}
}
Exemplo de chamada de função:
{
"type": "session.update",
"session": {
"modalities": [
"text",
"audio"
],
"voice": "longanqian",
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather for a specified city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"title": "City"
}
},
"required": ["city"]
}
}
}
],
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"silence_duration_ms": 800
}
}
}
Exemplo de registro de impressão de voz (voiceprint_audio_urls):
{
"type": "session.update",
"session": {
"turn_detection": {
"type": "smart_turn",
"voiceprint_audio_urls": [
"https://example.com/speaker1.pcm",
"https://example.com/speaker2.wav"
]
}
}
}
entrada_audio_buffer.append
Acrescenta dados de áudio ao buffer de entrada. Envie continuamente em alta frequência (por exemplo, um quadro a cada 20-40 ms). Este evento não tem reconhecimento do servidor.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como input_audio_buffer.append. |
| áudio | corda | Obrigatório | Dados de áudio codificados em Base64. |
{
"type": "input_audio_buffer.append",
"audio": "<base64-encoded audio data>"
}
entrada_audio_buffer.commit
somente modo push-to-talk. Confirma o áudio armazenado em buffer como uma mensagem do usuário. A confirmação não aciona automaticamente a inferência - envie response.create para acioná-lo manualmente.
Este evento é ignorado no modo server_vad / smart_turn.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como input_audio_buffer.commit. |
{
"type": "input_audio_buffer.commit"
}
entrada_audio_buffer.clear
somente modo push-to-talk. Limpa qualquer áudio não confirmado no buffer. Ignorado no modo server_vad / smart_turn. O servidor responde com um input_audio_buffer.cleared evento.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como input_audio_buffer.clear. |
{
"type": "input_audio_buffer.clear"
}
Conversa, item, criar.
Insere manualmente um item de conversa no contexto da conversa. Use isso para injetar contexto histórico, adicionar informações de texto ou gravar o resultado de uma chamada de função.
Se item.id já existe na conversa, o servidor retorna um erro e rejeita a criação.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como conversation.item.create. |
| anterior_item_id | corda | Opcional | O item após o qual inserir o novo item. Se omitido, o item será anexado ao final da conversa. |
| item | objeto | Obrigatório | O item de conversa a ser criado. |
| item.id | corda | Opcional | O identificador exclusivo do item de conversa. Se omitido, o servidor gera um automaticamente. Se o ID especificado já existir na conversa, o servidor retornará um erro. |
| item.tipo | corda | Obrigatório | O tipo de item de conversa. message: uma mensagem de conversa normal; function_call: uma solicitação de chamada de função (normalmente gerada pelo servidor, mas o cliente também pode usá-la para adicionar contexto histórico); function_call_output: um resultado de execução da ferramenta (após o cliente receber um function_call, ele executa a ferramenta e grava o resultado usando esse tipo). |
| item.role | corda | Obrigatório para message tipo |
A função da mensagem. Opções: system, user, assistant. |
| item.conteúdo | matriz | Obrigatório para message tipo |
A lista de conteúdo da mensagem. Cada elemento inclui um type e seu campo de dados correspondente. system suporta input_text (campo obrigatório text); user suporta input_text (campo obrigatório text) e input_audio (campo obrigatório audio, codificado em Base64); assistant suporta output_text (campo obrigatório text). |
| item.call_id | corda | Obrigatório para function_call / function_call_output tipos |
O identificador exclusivo da chamada de função, usado para associar a solicitação ao seu resultado. |
| item.nome | corda | Obrigatório para function_call tipo |
O nome da função a ser chamada. |
| item.argumentos | corda | Obrigatório para function_call tipo |
Os argumentos de chamada de função, como uma string JSON. |
| item.saída | corda | Obrigatório para function_call_output tipo |
O resultado da execução da ferramenta, como uma string JSON. |
Injete uma mensagem de texto do usuário:
{
"type": "conversation.item.create",
"previous_item_id": "item_xxx",
"item": {
"id": "my_item_001",
"type": "message",
"role": "user",
"content": [
{
"type": "input_text",
"text": "Please summarize our last conversation"
}
]
}
}
Escreva um resultado de chamada de função:
{
"type": "conversation.item.create",
"item": {
"type": "function_call_output",
"call_id": "call_xxx",
"output": "{\"temperature\":18,\"condition\":\"sunny\"}"
}
}
conversa.item.retrieve
Recupera um item de conversa armazenado no servidor. Para conteúdo do tipo áudio, o item retornado inclui apenas a transcrição (transcript), não os dados de áudio originais.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como conversation.item.retrieve. |
| item_id | corda | Obrigatório | O ID do item de conversa a ser recuperado. O servidor retorna o resultado através de um conversation.item.retrieved evento. |
{
"type": "conversation.item.retrieve",
"item_id": "item_xxx"
}
conversa.item.delete
Exclui o item de conversa especificado do contexto de conversa. O servidor confirma com um conversation.item.deleted evento.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como conversation.item.delete. |
| item_id | corda | Obrigatório | O ID do item de conversa a ser excluído. |
{
"type": "conversation.item.delete",
"item_id": "item_xxx"
}
resposta.criar
Aciona explicitamente uma rodada de inferência de modelo. Comportamento por modo:
- modo push-to-talk: Deve ser chamado manualmente, após confirmar o áudio em buffer via
input_audio_buffer.commitou escrevendo umfunction_call_output. Não permitido enquanto uma resposta já estiver sendo gerada. - modo server_vad: Geralmente acionado automaticamente pelo servidor. O cliente também pode chamá-lo manualmente quando nenhuma resposta estiver sendo gerada; não permitido enquanto uma resposta já estiver sendo gerada.
- modo smart_turn: Permitido enquanto aguarda a próxima entrada do usuário. Não permitido dentro de um turno ativo (de
input_audio_buffer.speech_startedpararesponse.done).
O response campo é opcional e substitui a configuração padrão da sessão para esta rodada de inferência. Em cenários de chamada de função, o cliente também usa esse evento para acionar a segunda rodada de inferência após escrever um function_call_output.
No modo server_vad / smart_turn, uma resposta acionada manualmente ainda pode ser interrompida por uma nova fala.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como response.create. |
| resposta | objeto | Opcional | Substitui a configuração padrão da sessão para esta rodada de inferência. Se omitido, a configuração da sessão atual será usada. |
| resposta.modalidades | matriz | Opcional | Substitui as modalidades de saída desta rodada. As opções são as mesmas que modalities em session.update. |
| resposta.voz | corda | Opcional | Substitui a voz do TTS nesta rodada. |
{
"type": "response.create",
"response": {
"modalities": ["audio", "text"]
}
}
resposta.cancelar
Cancela a resposta que está sendo gerada no momento. Qualquer texto já produzido é gravado na cadeia de itens e o servidor retorna response.done com status=cancelled.
Retorna um erro se nenhuma inferência estiver em andamento.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | corda | Obrigatório | Tipo de evento, fixado como response.cancel. |
{
"type": "response.cancel"
}