Principais interfaces e parâmetros de solicitação do DashScope Java SDK para o Qwen-Omni real-time .
Pré-requisitos
A versão do Java SDK deve ser v2.22.15 ou posterior. Antes de começar, consulte Real-time multimodal interaction flow.
Primeiros passos
Baixe o código de exemplo no GitHub. Há três métodos de chamada disponíveis:
-
Exemplo de conversa por áudio: Captura áudio em tempo real do microfone, ative o Voice Activity Detection (VAD) mode para detectar automaticamente o início e o fim da fala e permite interrupção por voz.
Defina o parâmetro enableTurnDetection como
true.Use fones de ouvido para reprodução de áudio e evite que ecos acionem a interrupção de voz.
-
Exemplo de conversa por áudio e vídeo: Captura áudio e vídeo em tempo real do microfone e da câmera, ative o VAD mode e permite interrupção por voz.
Defina o parâmetro enableTurnDetection como
true.Use fones de ouvido para reprodução de áudio e evite que ecos acionem a interrupção de voz.
-
Chamada local: Usa arquivos locais de áudio e imagem como entrada e ative o Manual mode, permitindo controle manual do ritmo de envio.
Defina o parâmetro enableTurnDetection como
false.
Parâmetros de solicitação
Configure os parâmetros de solicitação a seguir com os métodos encadeados ou setters do objeto OmniRealtimeParam e passe-o ao construtor OmniRealtimeConversation.
Parâmetro | Tipo | Descrição |
|---|---|---|
model | String | Modelo Qwen-Omni a ser usado. Consulte Model list. |
url | String | URL do endpoint:
Substitua |
OmniRealtimeConfig e passe-o ao método updateSession.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| modalities | List<OmniRealtimeModality> | Modalidade de saída do modelo. Defina como [OmniRealtimeModality.TEXT] para apenas texto ou [OmniRealtimeModality.TEXT, OmniRealtimeModality.AUDIO] para áudio e texto simultaneamente. |
| voice | String | Voz da saída de áudio. Para vozes compatíveis, consulte Voice list.Voz padrão:
|
| inputAudioFormat | OmniRealtimeAudioFormat | Formato do áudio de entrada do usuário. Atualmente, há suporte apenas para PCM_16000HZ_MONO_16BIT, que representa um fluxo de áudio PCM com taxa de amostragem de 16 kHz. |
| outputAudioFormat | OmniRealtimeAudioFormat | Formato do áudio de saída do modelo. Atualmente, há suporte apenas para PCM_24000HZ_MONO_16BIT, que representa um fluxo de áudio PCM com taxa de amostragem de 24 kHz. |
| instructions | String | Mensagem de sistema que define o objetivo ou a função do modelo.Exemplo: "Você é um agente de atendimento ao cliente de IA para um hotel cinco estrelas. Responda às perguntas dos clientes sobre tipos de quartos, instalações, preços e políticas de reserva com precisão e cordialidade. Sempre responda de forma profissional e prestativa. Não forneça informações não verificadas ou fora do escopo dos services do hotel." Defina instructions pelo método parameters da instância OmniRealtimeConfig: |
| smooth_output | Boolean | Parâmetro compatível apenas com a série Qwen3-Omni-Flash-Realtime.
Defina |
| enableInputAudioTranscription | Boolean | Ative o reconhecimento de fala no áudio de entrada. |
| InputAudioTranscription | String | Modelo de reconhecimento de fala para transcrição do áudio de entrada. O valor é sempre qwen3-asr-flash-realtime. Este parâmetro não é configurável. |
| enableTurnDetection | Boolean | Ative o VAD. Se desativado, envie o áudio manualmente para gerar uma resposta. |
| turnDetectionType | String | Tipo de VAD. Valores válidos:
|
| turnDetectionThreshold | Float | Limiar de detecção do VAD. Aumente em ambientes ruidosos e diminua em ambientes silenciosos.
|
| turnDetectionSilenceDurationMs | Integer | Duração do silêncio que indica o fim da fala. Se excedida, o modelo aciona uma resposta. Padrão: 800. Valores válidos: [200, 6000]. |
| turnDetectionParam | Map | Parâmetros adicionais de configuração de turn_detection. Atualmente, há suporte para idle_timeout_ms (Integer): tempo limite de ociosidade em milissegundos. Aplica-se apenas aos modelosqwen3.5-omni-plus-realtimeeqwen3.5-omni-flash-realtimeno modoserver_vad. Após o servidor terminar a reprodução de áudio e o usuário permanecer em silêncio além dessa duração (sem acionar speech.started), o modelo gera proativamente uma resposta para incentivar o usuário a continuar a conversa. Intervalo válido: [5000, 30000].Exemplo: turnDetectionParam(Map.of("idle_timeout_ms", 5000)) |
| enable_search | Boolean | Parâmetro com efeito apenas na série de modelos Qwen3,5-Omni-Realtime.Ative a pesquisa na web. Padrão: false. Quando ativado, o modelo pesquisa na web para responder a perguntas em tempo real.Defina os parâmetros A chamada de ferramentas (tools) e a pesquisa na web (enable_search) são incompatíveis e não podem ser ativadas simultaneamente. |
| search_options | Object | Configurações de opções de pesquisa na web. Este parâmetro só tem efeito após a ativação de enable_search. Defina enable_source (Boolean) como true para retornar uma lista de fontes dos resultados da pesquisa.Defina |
| tools | List<Map<String, Object>> | Parâmetro com efeito apenas na série de modelos Qwen3,5-Omni-Realtime.Definições de ferramentas. Quando fornecidas, o modelo chama ferramentas externas para responder às perguntas do usuário. Se uma ferramenta for chamada, o modelo não gera áudio e retorna apenas os parâmetros de chamada da ferramenta.Cada ferramenta é um Map com os seguintes campos:
Defina |
| temperature | Float | Temperatura de amostragem que controla a diversidade do conteúdo.Valores mais altos produzem conteúdo mais diversificado; valores mais baixos produzem conteúdo mais determinístico.Valores válidos: [0, 2).Como temperature e top_p controlam a diversidade do conteúdo, recomendamos definir apenas um deles.Valores padrão de temperature:
Os modelos Defina o parâmetro |
| top_p | Float | Limiar de probabilidade para amostragem de núcleo que controla a diversidade do conteúdo.Valores mais altos produzem conteúdo mais diversificado; valores mais baixos produzem conteúdo mais determinístico.Valores válidos: (0, 1,0].Como temperature e top_p controlam a diversidade do conteúdo, recomendamos definir apenas um deles.Valores padrão de top_p:
Os modelos Defina |
| top_k | Integer | Tamanho do conjunto de candidatos para amostragem. Por exemplo, 50 significa que apenas os 50 tokens com maior pontuação formam o conjunto de candidatos. Valores maiores aumentam a aleatoriedade; valores menores aumentam o determinismo. Defina como None ou um valor maior que 100 para desativar top_k e usar apenas top_p.O valor deve ser maior ou igual a 0.Valores padrão de top_k:
Os modelos Defina |
| max_tokens | Integer | Número máximo de tokens a retornar.A configuração deOs valores padrão e máximo correspondem ao comprimento máximo de saída do modelo. Consulte Model list para detalhes.Use max_tokens para limitar o comprimento da saída ao gerar resumos ou palavras-chave, controlar custos ou reduzir o tempo de resposta.
Os modelos Defina |
| repetition_penalty | Float | Controla a repetição nas sequências geradas. Valores mais altos reduzem a repetição. 1,0 significa nenhuma penalidade. Deve ser maior que 0.Valores padrão de repetition_penalty:
Os modelos Defina |
| presence_penalty | Float | Controla a repetição de conteúdo na saída do modelo.Valores válidos: [-2,0, 2,0]. Valores positivos reduzem a repetição; valores negativos a aumentam.Valores padrão de presence_penalty:
Os modelos Defina |
| seed | Integer | Torna a geração mais determinística e garante resultados consistentes entre execuções.Usar a mesma seed com parâmetros idênticos produz o mesmo resultado sempre que possível.Valores válidos: 0 a 231−1. Valor padrão: -1.
Os modelos Defina |
Interfaces principais
Classe OmniRealtimeConversation
Importe com import com.alibaba.dashscope.audio.omni.OmniRealtimeConversation;.
| Assinatura do método | Evento de resposta do servidor (enviado via callback) | Descrição |
|---|---|---|
Server eventsSessão criadasession.updated Configuração da sessão atualizada | Estabelece conexão com o servidor. | |
session.updatedConfiguração da sessão atualizada | Atualize a configuração da sessão. Para detalhes dos parâmetros, consulte Parâmetros de solicitação.Após a conexão, o servidor retorna configurações de sessão padrão. Chame este método imediatamente após conectar para atualizar as configurações.Ao receber o evento session.update, o servidor valida os parâmetros. Parâmetros inválidos retornam erro; caso contrário, o servidor atualiza a configuração da sessão. | |
| Nenhum | Adiciona áudio codificado em Base64 ao buffer de entrada na cloud. O buffer é um armazenamento temporário gravável e confirmável posteriormente.
| |
| Nenhum | Adiciona dados de imagem codificados em Base64 ao buffer de vídeo na cloud. Aceita imagens locais ou capturas de fluxo de vídeo em tempo real.Limites de entrada de imagem:
| |
input_audio_buffer.clearedÁudio recebido pelo servidor limpo | Limpa o áudio do buffer atual na cloud. | |
input_audio_buffer.committedServidor recebeu o áudio confirmado | Confirma áudio e vídeo do buffer na cloud. Retorna erro se o buffer estiver vazio.
| |
Server eventsServidor inicia geração de respostaresponse.output_item.added Novo conteúdo de saída disponível na respostaServer events Item de conversa criadoresponse.content_part.added Novo conteúdo de saída adicionado ao item de mensagem do assistenteresponse.audio_transcript.delta Texto transcrito gerado incrementalmenteresponse.audio.delta Áudio gerado incrementalmente pelo modeloresponse.audio_transcript.done Transcrição de texto concluídaresponse.audio.done Geração de áudio concluídaresponse.content_part.done Streaming de conteúdo de texto ou áudio para a mensagem do assistente concluídoresponse.output_item.done Streaming de todo o item de saída para a mensagem do assistente concluídoresponse.done Resposta concluída | Instrui o servidor a crie uma resposta do modelo.Com a sessão configurada no modo "turn_detection", o servidor cria automaticamente uma resposta do modelo. | |
| Nenhum | Cancele a resposta em andamento. Se não houver resposta disponível para cancelar, o servidor retorna erro. | |
| Nenhum | Envia o evento conversation.item.create ao servidor. Em cenários de chamada de ferramenta, use este método para enviar o resultado da execução da ferramenta de volta ao servidor.O parâmetro item é um JsonObject e deve conter os seguintes campos:
| |
| Nenhum | Interrompe a tarefa e fecha a conexão. | |
| Nenhum | Retorna o ID da sessão da tarefa atual. | |
| Nenhum | Retorna o ID da resposta mais recente. |
Interface de callback (OmniRealtimeCallback)
O servidor retorna eventos de resposta e dados por meio de callbacks. Implemente métodos de callback para processar as respostas do servidor.
Importe com import com.alibaba.dashscope.audio.omni.OmniRealtimeCallback;.
| Método | Parâmetro | Valor de retorno | Descrição |
|---|---|---|---|
| Nenhum | Nenhum | Invocado imediatamente após o estabelecimento da conexão com o servidor. | |
| message: Evento de resposta do servidor. | Nenhum | Contém respostas de chamadas de interface, além de texto e áudio gerados pelo modelo. Consulte Server events. | |
| code: Código de status de fechamento do WebSocket.reason: Motivo do fechamento do WebSocket. | Nenhum | Invocado após o fechamento da conexão com o servidor. |
Perguntas frequentes
P: Como ocorre o alinhamento entre áudio de entrada e imagens?
O modelo em tempo real Qwen-Omni usa o fluxo de áudio como linha do tempo de entrada. As imagens são inseridas no fluxo de áudio conforme o momento de envio. É possível adicionar imagens em qualquer ponto da linha do tempo do áudio.
Em cenários de interação em tempo real, ative ou desative a entrada de vídeo a qualquer momento.
P: Qual é a frequência recomendada para entrada de imagens e áudio?
Em cenários de interação em tempo real, recomendamos enviar imagens a uma taxa de quadros de 1 ou 2 fps e áudio em pacotes de 100 ms.
P: Quais são as diferenças entre os dois modos da chave turn_detection?
Com turn_detection ativado, há suporte para dois modos: server_vad e semantic_vad:
-
Ativar "turn_detection":
- Estado de entrada: O VAD baseado em cloud detecta o fim de uma frase no áudio de entrada e aciona imediatamente a inferência do Qwen-Omni para retornar texto e fala de resposta.
- Estado de resposta: Neste estado, continue enviando entrada de áudio e vídeo sem interrupção enquanto o modelo responde. Após a conclusão da resposta, o estado retorna ao estado de entrada para aguardar a próxima fala.
- Interrupção: Se o usuário começar a falar durante a resposta do modelo, uma interrupção é acionada. O service interrompe imediatamente a resposta atual e muda para o estado de entrada.
-
Desativar "turn_detection":
- Determine manualmente o fim de uma rodada de entrada de áudio e vídeo e acione a inferência do Qwen-Omni para obter resposta com commit e create_response.
- Durante a resposta do modelo, pare de enviar entrada de áudio e vídeo. Retome a entrada para a próxima rodada apenas após o modelo terminar de responder.
- Use o método cancel_response para interromper a resposta do modelo.