O Qwen-Omni-Realtime processa entradas contínuas de áudio e imagem (incluindo frames de vídeo) e gera respostas em texto e áudio em tempo real.
Regiões suportadas: Singapore, China (Beijing). Cada região exige seu próprio API key.
O Qwen-Omni-Realtime suporta WebSocket e WebRTC. O WebSocket é ideal para integração no lado do servidor com configuração rápida. Já o WebRTC foca em cenários de voz de baixa latência baseados em navegador, transmitindo áudio via UDP com cancelamento de eco e redução de ruído integrados.
Envie o evento de cliente session.update:
A entrada de áudio é obrigatória; a entrada de imagem é opcional. O método de entrada depende do protocolo utilizado.
O formato da resposta depende da modalidade de saída configurada.
O Qwen3.5-Omni-Realtime apresenta melhorias em relação ao Qwen3-Omni-Flash-Realtime nas seguintes áreas:
Get an API key e set it as an environment variable.
Selecione uma linguagem de programação e siga as etapas para iniciar um chat em tempo real.
A pesquisa na web permite que o modelo utilize dados em tempo real para responder a perguntas sobre informações atuais, como cotações de ações e previsão do tempo. O próprio modelo determina automaticamente se uma pesquisa é necessária.
Adicione os seguintes parâmetros ao evento
Com a pesquisa na web ativada, o objeto
Ative a pesquisa na web em uma conversa em tempo real:
O faturamento é baseado em tokens e medido por modalidade (áudio, imagem, texto). Consulte o console do Model Studio para verificar os preços.
Para consultar os limites de taxa dos modelos, veja Rate limiting.
Se a chamada ao modelo falhar e retornar uma mensagem de erro, consulte Error codes para obter a solução.
Para visualizar a lista de vozes disponíveis para o modelo Qwen-Omni-Realtime, consulte Voices.
Como usar
1. Estabelecer conexão
O Qwen-Omni-Realtime suporta WebSocket e WebRTC. O WebSocket é ideal para integração no lado do servidor com configuração rápida. Já o WebRTC foca em cenários de voz de baixa latência baseados em navegador, transmitindo áudio via UDP com cancelamento de eco e redução de ruído integrados.
- WebSocket
- WebRTC
- Native WebSocket
- DashScope Python SDK
- DashScope Java SDK
Parâmetros de conexão:
| Parâmetro | Descrição |
|---|---|
| Endpoint | Região China (Beijing): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtimeRegião Singapore: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtimeSubstitua {WorkspaceId} pelo seu workspace ID real. |
| Parâmetro de consulta | Use o parâmetro de consulta model para especificar o modelo. Exemplo: ?model=qwen3.5-omni-plus-realtime |
| Cabeçalho da requisição | Utilize um token Bearer para autenticação: Authorization: Bearer DASHSCOPE_API_KEY
|
2. Configurar sessão
Envie o evento de cliente session.update:
3. Entrada de áudio e imagens
A entrada de áudio é obrigatória; a entrada de imagem é opcional. O método de entrada depende do protocolo utilizado.
- WebSocket
- WebRTC
Envie dados de áudio e imagem codificados em Base64 para o buffer do servidor usando os eventos input_audio_buffer.append e input_image_buffer.append.
As imagens podem vir de arquivos locais ou de capturas de fluxo de vídeo em tempo real.
Com o VAD no lado do servidor ativado, o servidor envia os dados automaticamente e aciona uma resposta ao final da fala. Com o VAD desativado (modo manual), chame o evento input_audio_buffer.commit para enviar os dados após a transmissão.
4. Receber respostas do modelo
O formato da resposta depende da modalidade de saída configurada.
- WebSocket
- WebRTC
- Apenas texto Receba texto em fluxo contínuo com o evento response.text.delta e o texto completo com o evento response.text.done.
-
Texto e áudio
- Texto: Receba texto em fluxo contínuo com o evento response.audio_transcript.delta e o texto completo com o evento response.audio_transcript.done.
- Áudio: Receba áudio em fluxo contínuo codificado em Base64 com o evento response.audio.delta. O evento response.audio.done indica que a geração de áudio foi concluída.
Seleção de modelo
O Qwen3.5-Omni-Realtime apresenta melhorias em relação ao Qwen3-Omni-Flash-Realtime nas seguintes áreas:
- Nível de inteligência Equivalente ao Qwen3.5-Plus.
- Pesquisa na web Possui pesquisa na web integrada, permitindo que o modelo busque autonomamente respostas para perguntas em tempo real. Para mais detalhes, consulte Web search.
- Chamada de ferramentas Suporta chamada de funções, habilitando o modelo a invocar ferramentas externas de forma autônoma. Para mais detalhes, consulte Qwen-Omni-Realtime series.
- Interrupção semântica Identifica a intenção conversacional para evitar interrupções causadas por sons de confirmação ou ruídos de fundo.
- Controle de voz Permite controlar volume, velocidade de fala e emoção via comandos de voz (por exemplo, "fale mais rápido", "mais alto", "em tom alegre").
- Idiomas suportados Oferece reconhecimento de fala para 113 languages and dialects e geração de fala para 36 languages and dialects.
- Vozes disponíveis Dispõe de 55 vozes, incluindo 47 vozes multilíngues e 8 vozes dialetais. Para a lista completa, consulte Voice list.
- Clonagem de voz Possibilita o uso de uma voz clonada personalizada para conversas em tempo real (Qwen3.5-omni-plus-realtime e Qwen3.5-omni-flash-realtime). Para mais detalhes, consulte Voice cloning.
Verifique no console do Model Studio os nomes dos modelos, contexto, preços e versões de snapshot. Para limites de taxa de concorrência, consulte Rate limiting .
Limitações
- A pesquisa na web e a chamada de ferramentas são mutuamente exclusivas.
- Uma única sessão WebSocket pode durar até 120 minutos. A conexão é encerrada automaticamente ao atingir esse limite.
-
O modelo retém o histórico de conversas até os seguintes limites de turnos e duração. Quando esses limites são excedidos, o histórico mais antigo é descartado. A duração máxima refere-se ao tempo acumulado de áudio ou vídeo (frames de imagem) retido no contexto.
O vídeo é inserido como frames extraídos (recomendado: 1 fps). A duração máxima de vídeo corresponde ao tempo acumulado de frames retidos — por exemplo, 240 s significa que apenas os frames dos últimos 240 segundos são mantidos.
O modelo
qwen3-omni-flash-realtimetem um limite de 8 turnos de diálogo (geralmente atingido primeiro). Seu limite de duração depende do comprimento de contexto do modelo e não está listado separadamente.Modelo
Máx. turnos de áudio
Máx. turnos de vídeo
Duração máx. de áudio
Duração máx. de vídeo
qwen3.5-omni-plus-realtime
100 turnos
50 turnos
600 segundos
240 segundos
qwen3.5-omni-flash-realtime
80 turnos
50 turnos
480 segundos
120 segundos
qwen3-omni-flash-realtime
8 turnos
8 turnos
—
—
Primeiros passos
Get an API key e set it as an environment variable.
Selecione uma linguagem de programação e siga as etapas para iniciar um chat em tempo real.
- WebRTC
- Python
- JavaScript
- Ambiente de execução É necessário ter o Python 3.10 ou superior. Instale as seguintes dependências:
-
Executar a demonstração
Crie um arquivo Python chamado
webrtc_demo.pye cole o código a seguir:Executewebrtc_demo.py
webrtc_demo.pypara iniciar uma conversa em tempo real com o modelo Qwen-Omni-Realtime por meio do seu microfone. O sistema detecta automaticamente o início da sua fala e envia o áudio para o servidor.
Fluxo de interação
- Modo VAD
- Modo Manual
Defina
session.turn_detection.type em session.update como "server_vad" ou "semantic_vad" para enable VAD mode. Esta configuração é adequada para cenários de chamada de voz. Tanto WebSocket quanto WebRTC suportam o modo VAD com os mesmos eventos de servidor; a diferença reside apenas na forma de transmissão de áudio e imagens.O WebRTC suporta exclusivamente o modo VAD e não oferece suporte ao modo Manual. Com WebRTC, o áudio é transmitido diretamente via RTP sem o envio de eventosO fluxo de interação ocorre da seguinte forma:input_audio_buffer.append; as imagens são transmitidas por faixas de vídeo, sem suporte a eventosinput_image_buffer.append. Os comandos de controle e eventos do servidor trafegam via DataChannel, utilizando os mesmos tipos de evento do WebSocket.
- Envie dados de áudio pelo cliente. O WebSocket realiza o envio por meio de eventos input_audio_buffer.append; já o WebRTC transmite automaticamente pela faixa de áudio (RTP), dispensando o envio manual de eventos.
- Ao detectar o início da fala, o servidor envia o evento input_audio_buffer.speech_started via DataChannel (WebRTC) ou WebSocket.
- Quando a fala termina, o servidor detecta o fim e dispara o evento input_audio_buffer.speech_stopped.
- Confirme o buffer de áudio no servidor, que então envia o evento input_audio_buffer.committed.
- Inicie a geração de resposta no servidor, enviando conversation.item.created e outros eventos relacionados. As respostas de áudio retornam incrementalmente pelo evento
response.audio.deltado WebSocket ou são transmitidas diretamente pela faixa de áudio (RTP) do WebRTC. - Durante a resposta, o servidor retorna a transcrição de texto incremental via eventos
response.audio_transcript.deltae envia o eventoresponse.doneao concluir a resposta.
| Ciclo de vida | Eventos do cliente | Eventos do servidor |
|---|---|---|
| Inicialização da sessão | session.updateConfiguração da sessão | session.createdSessão criada.session.updated Configuração da sessão atualizada. |
| Entrada de áudio do usuário | input_audio_buffer.appendWebSocket: Adiciona áudio ao buffer por meio deste evento.input_image_buffer.append WebSocket: Adiciona uma imagem ao buffer por meio deste evento. WebRTC: O áudio é transmitido automaticamente pela faixa de áudio RTP e as imagens pela faixa de vídeo. Estes eventos não são necessários. | input_audio_buffer.speech_startedInício de fala detectado.input_audio_buffer.speech_stopped Fim de fala detectado.input_audio_buffer.committed Buffer de áudio confirmado. |
| Saída de áudio do servidor | Nenhum | response.createdGeração de resposta iniciada.response.output_item.added Novo item de saída adicionado à resposta.conversation.item.created Item de conversa criado.response.content_part.added Nova parte de conteúdo adicionada à mensagem do assistente.response.audio_transcript.delta Texto transcrito gerado incrementalmente.response.audio.delta WebSocket: O áudio gerado incrementalmente pelo modelo retorna por meio deste evento. WebRTC: O áudio é transmitido diretamente pela faixa de áudio RTP; este evento não é retornado.response.audio_transcript.done Transcrição de texto concluída.response.audio.done Geração de áudio concluída.response.content_part.done Streaming do conteúdo de texto ou áudio do assistente concluído.response.output_item.done Streaming completo do item de saída inteiro do assistente.response.done Resposta concluída. conversation.item.input_audio_transcription.completedTranscrição da entrada de áudio do usuário concluída (requer ativação de input_audio_transcription em session.update). |
Pesquisa na web
A pesquisa na web permite que o modelo utilize dados em tempo real para responder a perguntas sobre informações atuais, como cotações de ações e previsão do tempo. O próprio modelo determina automaticamente se uma pesquisa é necessária.
Apenas o modeloqwen3.5-omni-plus-realtimeoferece suporte à pesquisa na web. Este recurso vem desativado por padrão; para ativá-lo, usesession.update.
Para informações sobre faturamento, consulte a política agent em billing rules .
Ativar pesquisa na web
Adicione os seguintes parâmetros ao evento session.update:
enable_search: Defina comotruepara ativar o recurso de pesquisa na web.search_options.enable_source: Configure comotruepara incluir as fontes dos resultados da pesquisa na resposta.
Formato da resposta
Com a pesquisa na web ativada, o objeto usage em response.done passa a incluir um campo plugins contendo informações de medição da pesquisa:
Exemplo de código
Ative a pesquisa na web em uma conversa em tempo real:
- DashScope Python SDK
- DashScope Java SDK
- WebSocket (Python)
Passe os parâmetros
enable_search e search_options na chamada update_session:Referência da API
Faturamento e limites de taxa
Faturamento
O faturamento é baseado em tokens e medido por modalidade (áudio, imagem, texto). Consulte o console do Model Studio para verificar os preços.
Em uma conversa em tempo real com múltiplas turnos, sempre que o modelo gera uma resposta, ele processa todo o conteúdo histórico da conversa dentro da janela de contexto — incluindo áudio, imagens e texto dos turnos anteriores — juntamente com a nova entrada do turno atual como tokens de entrada. Como resultado, os tokens de entrada se acumulam a cada turno, em vez de serem contados apenas para a nova entrada do turno atual.Por exemplo, se uma entrada de áudio de 10 segundos for convertida em 70 tokens (Qwen3.5-Omni-Realtime) e esse áudio ainda estiver dentro da janela de contexto no turno 3, ele ainda será contabilizado nos tokens de entrada desse turno. Os tokens de entrada faturados correspondem à soma dos tokens de todos os turnos históricos dentro da janela de contexto mais os tokens da nova entrada do turno atual.
Regras para conversão de áudio e imagens em tokens
Regras para conversão de áudio e imagens em tokens
- Áudio
- Imagem
-
Qwen3.5-Omni-Realtime:- Áudio de entrada:
total tokens = Audio duration (seconds) * 7 - Áudio de saída:
total tokens = Audio duration (seconds) * 12.5
- Áudio de entrada:
-
Qwen3-Omni-Flash-Realtime:O áudio de entrada e saída utiliza a mesma fórmula:total tokens = Audio duration (seconds) * 12.5 -
Qwen-Omni-Turbo-Realtime:O áudio de entrada e saída utiliza a mesma fórmula:total tokens = Audio duration (seconds) * 25Durações de áudio inferiores a 1 segundo são faturadas como 1 segundo.