O qwen3.5-livetranslate-flash-realtime é um modelo de tradução em tempo real com aprimoramento visual compatível com 60 idiomas (29 com áudio e texto, 31 apenas com texto). Ele processa entradas de áudio e imagem de fluxos de vídeo ou arquivos locais, usa o contexto visual para melhorar a precisão e gera texto e áudio traduzidos em tempo real.
Experimente uma demonstração online com one-click deployment using Function Compute .
Recursos
- Suporte multilíngue: Traduz entre 60 idiomas — 29 com saída de áudio e texto, 31 apenas com saída de texto — incluindo chinês, inglês, francês, alemão, russo, japonês, coreano, espanhol, português e árabe.
- Aprimoramento visual: Analisa pistas visuais, como movimentos labiais, gestos e textos na tela, para aumentar a precisão da tradução, especialmente em ambientes ruidosos ou para palavras ambíguas.
- Latência de 2,8 segundos: Oferece interpretação simultânea com latência mínima de 2,8 segundos.
- Interpretação simultânea sem perdas: Prevê unidades semânticas para resolver diferenças na ordem das palavras entre idiomas, alcançando qualidade comparável à tradução offline.
- Voz natural: Reproduz automaticamente a entonação e a emoção do áudio original.
- Configuração de hotwords: Hotwords configuráveis melhoram a precisão da tradução para termos específicos.
- Clonagem de voz: Clona a voz do falante para a saída traduzida. Compatível com clonagem em tempo real no servidor e perfis de voz pré-clonados.
- Ignorar saída no mesmo idioma: Quando os idiomas de origem e destino são iguais, o modelo pode ignorar a saída de texto, a saída de áudio ou ambas. Esse recurso entra em vigor apenas quando o idioma de destino é chinês (
zh) ou inglês (en).
Procedimento
1. Configurar a conexão
O modelo se conecta via WebSocket com os seguintes parâmetros:
Além do WebSocket, este modelo também é compatível com os protocolos AOQ e WebRTC. Para integrações no lado do cliente que priorizam latência estável, resiliência em redes instáveis e supressão de ruído e cancelamento de eco full-duplex integrados, recomenda-se o uso do AOQ. Para obter uma comparação dos protocolos, consulte Realtime API overview.
| Parâmetro | Descrição |
|---|---|
| endpoint | Região China (Beijing): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime. Substitua {WorkspaceId} pelo ID real do seu workspace.Região Singapore: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime.Substitua {WorkspaceId} pelo seu workspace ID real. |
| query parameter | Defina o query parameter do modelo com o nome do modelo. Exemplo: ?model=qwen3.5-livetranslate-flash-realtime |
| message header | Use um Bearer Token para autenticação: Authorization: Bearer DASHSCOPE_API_KEYDASHSCOPE_API_KEY é a sua chave de API do Model Studio. |
Código de exemplo em Python para conexão WebSocket
Código de exemplo em Python para conexão WebSocket
2. Configurar idioma, modalidade e voz
Envie o evento de cliente session.update com os seguintes parâmetros:
-
Idioma
-
Idioma de origem: Configure por meio do parâmetro
session.input_audio_transcription.language.Se não for especificado, o modelo detecta automaticamente o idioma de origem.
-
Idioma de destino: Configure por meio do parâmetro
session.translation.language.O valor padrão é
en(inglês).
-
Idioma de origem: Configure por meio do parâmetro
-
Gerar resultados de reconhecimento do idioma de origem
Defina
session.input_audio_transcription.modelcomoqwen3-asr-flash-realtime. Assim, o servidor retorna tanto a tradução quanto o resultado do reconhecimento de fala (texto original) do áudio de entrada. O servidor retorna estes eventos:conversation.item.input_audio_transcription.text: Transmite os resultados de reconhecimento em fluxo contínuo.conversation.item.input_audio_transcription.completed: Retorna o resultado final após a conclusão do reconhecimento.conversation.item.input_audio_transcription.failed: Retorna informações de erro quando o reconhecimento falha.
-
Modalidade de saída
Defina o parâmetro
session.modalitiescomo["text"](apenas texto) ou["text","audio"](texto e áudio). -
Detecção de atividade de voz (VAD) e modo manual
Configure a detecção dos limites de fala usando o parâmetro
session.turn_detection:- Modo VAD (padrão): Defina
turn_detectioncomo um objeto de configuração. O servidor detecta automaticamente os limites de fala e aciona a tradução. Ideal para cenários em que o cliente envia fluxos de áudio continuamente. - Modo manual: Defina
turn_detectioncomonull. O cliente determina os limites de fala e envia um eventoinput_audio_buffer.commitpara submeter o áudio após cada enunciado. Ideal para cenários de "pressionar para falar".
- Modo VAD (padrão): Defina
-
Voz
Configure usando o parâmetro
session.voice. Consulte Supported voices. -
Hotword
Configure hotwords usando o parâmetro
session.translation.corpus.phrases. Hotwords são pares chave-valor que mapeiam termos de origem para traduções de destino, melhorando a precisão para termos específicos. Exemplo: Mapeie"artificial intelligence"para"Artificial Intelligence". -
Clonagem de voz
Configure usando os parâmetros
session.enable_voice_clone,session.voice_clone_options.frequencyesession.voice. Compatível com três modos: perfil de voz pré-clonado (frequency:never), clonagem única no servidor no início da sessão (once) ou clonagem em tempo real antes de cada resposta (always). Consulte Voice cloning.
3. Enviar áudio e imagens
Envie dados de áudio e imagem codificados em Base64 usando os eventos input_audio_buffer.append e input_image_buffer.append. A entrada de áudio é obrigatória; a entrada de imagem é opcional.
As imagens podem vir de um arquivo local ou ser capturadas em tempo real de um fluxo de vídeo.A forma como o modelo determina que um enunciado foi concluído depende do modo VAD ou do modo manual configurado via parâmetro turn_detection:
- Modo VAD (padrão): O cliente envia eventos input_audio_buffer.append continuamente. Quando o servidor detecta o início ou fim da fala, ele retorna os eventos
input_audio_buffer.speech_startedeinput_audio_buffer.speech_stopped, respectivamente, confirma automaticamente o buffer de áudio e aciona a tradução. As respostas de tradução são geradas sincronizadamente com o fluxo de áudio e geralmente começam durante a entrada de áudio, sem esperar que a fala termine. - Modo manual: Defina
session.turn_detectioncomonull. Depois que o cliente termina de enviar um enunciado completo, ele envia um evento input_audio_buffer.commit para confirmar o buffer de áudio. Após o servidor retornar um eventoinput_audio_buffer.committedcomo confirmação, ele inicia automaticamente a geração da resposta de tradução; o cliente não precisa enviar nenhum outro evento para acionar a resposta. Para limpar áudios não confirmados antes da confirmação, envie um evento input_audio_buffer.clear.
4. Receber a resposta do modelo
As respostas de tradução são geradas sincronizadamente com o fluxo de áudio e normalmente não exigem espera até o fim da fala (consulte a descrição dos modos VAD/manual na seção anterior). O formato da resposta depende da modalidade de saída.
- Saída apenas de texto O servidor transmite texto traduzido incrementalmente (incluindo texto confirmado e texto previsto provisoriamente) por meio de eventos response.text.text; após a conclusão, o texto traduzido completo é retornado em um evento response.text.done.
-
Saída de texto e áudio
- Texto O servidor transmite texto traduzido incrementalmente por meio de eventos response.audio_transcript.text; após a conclusão, o texto traduzido completo é retornado em um evento response.audio_transcript.done.
- Áudio O servidor retorna dados de áudio incrementais codificados em Base64 em eventos response.audio.delta.
5. Encerrar a sessão
Após enviar todo o áudio, envie um evento Client events e aguarde o servidor retornar um evento session.finished antes de fechar a conexão WebSocket.
Se você fechar o WebSocket sem enviar session.finish, o VAD do servidor não conseguirá detectar o fim do último segmento de fala. Isso causa a perda total dos resultados de tradução desse segmento, e a conexão pode ficar travada indefinidamente. Sempre envie este evento antes de desconectar.
Modelos compatíveis
Modelos recomendados
| Modelo | Versão | Janela de contexto | Entrada máxima | Saída máxima |
|---|---|---|---|---|
| (tokens) | ||||
qwen3.5-livetranslate-flash-realtimeAlias para qwen3.5-livetranslate-flash-realtime-2026-05-19 | Estável | 53.248 | 49.152 | 4.096 |
| qwen3.5-livetranslate-flash-realtime-2026-05-19 | Snapshot | |||
Modelos legados
O modelo a seguir ainda está disponível, mas não é mais a escolha recomendada. Para novos casos de uso, utilize o modelo mais recente acima para obter melhor qualidade de tradução e custo-benefício.
| Modelo | Versão | Janela de contexto | Entrada máxima | Saída máxima |
|---|---|---|---|---|
| (tokens) | ||||
qwen3-livetranslate-flash-realtimeAlias para qwen3-livetranslate-flash-realtime-2025-09-22 | Estável | 53.248 | 49.152 | 4.096 |
| qwen3-livetranslate-flash-realtime-2025-09-22 | Snapshot | |||
Primeiros passos
-
Preparar o ambiente
Requer Python 3.10 ou superior.
Primeiro, instale o pyaudio.
Em seguida, instale as dependências do WebSocket:macOS
-
Criar o cliente
Crie um arquivo chamado
livetranslate_client.pycom o seguinte código:Código do cliente - livetranslate_client.py
-
Interagir com o modelo
No mesmo diretório, crie um arquivo chamado
main.pycom o seguinte código:Executemain.py
main.pye fale ao microfone. O modelo traduz sua fala e gera áudio e texto em tempo real.
Clonagem de voz
O modelo clona a voz do falante a partir do áudio de entrada e a utiliza na saída traduzida. Use um perfil de voz pré-clonado ou permita que o servidor faça a clonagem em tempo real. Útil para interpretação de conferências, transmissões ao vivo e dublagem de vídeos.
Defina os seguintes parâmetros em session.update para ativar a clonagem de voz:
-
session.enable_voice_clone: Defina comotruepara ativar a clonagem de voz. -
session.voice_clone_options.frequency: Controla quando a clonagem de voz ocorre. Valores aceitos:never: Não realiza clonagem no servidor. Em vez disso, usa um perfil de voz pré-clonado. Definasession.voicecom o ID da sua voz clonada personalizada.once: Clona a voz do áudio de entrada uma única vez no início da sessão e a reutiliza para todas as saídas subsequentes. Ideal para cenários com um único falante. Definasession.voicecomodefault.always: Clona a voz antes de cada resposta, adaptando-se dinamicamente às mudanças de falante. Mais indicado para conversas com múltiplos falantes. Definasession.voicecomodefault.
-
session.voice: Especifica a voz de saída. O valor depende da configuração defrequency:- Defina como
default: Use comfrequencydefinido comoonceoualways. O servidor clona a voz do falante a partir do áudio de entrada. Uma voz padrão é usada até que a clonagem seja concluída. - Defina como um ID de voz clonada personalizada (por exemplo,
qwen-translate-vc-xxx-yyy-zzz): Use comfrequencydefinido comonever. Você deve preparar a voz antecipadamente usando Voice Cloning API comtargetModeldefinido comoqwen3.5-livetranslate-flash-realtime.
- Defina como
Quandofrequencyestiver definido comoonceoualways, o parâmetrovoicedeve ser definido comodefault. Qualquer outro valor fará com que o servidor retorne um erro.
Exemplos de configuração de clonagem de voz
Perfil de voz pré-clonado (qualidade consistente; recomendado quando uma identidade de voz estável é necessária):
Melhorar a tradução com imagens
A entrada de imagens ajuda a desambiguar homônimos e a reconhecer substantivos próprios incomuns durante a tradução. Envie no máximo 2 imagens por segundo.
Baixe as seguintes imagens de exemplo: medical mask.png, masquerade mask.png
Baixe o código abaixo para o mesmo diretório onde está livetranslate_client.py e execute-o. Diga "What is mask?" ao microfone. O modelo usa a imagem para desambiguar: medical mask.png resulta em "What is a medical mask?" e masquerade mask.png resulta em "What is a masquerade mask?".
Implantação com um clique no Function Compute
Para implantar o aplicativo:
- Acesse o modelo do Function Compute, insira sua chave de API e clique em Create and Deploy Default Environment para testar o aplicativo.
- Aguarde cerca de um minuto. Em Environment Details > Environment Context, obtenha o endpoint, altere o protocolo de http para https (por exemplo, https://qwen-livetranslate-flash-realtime-intl.fcv3.xxx.ap-southeast-1.fc.devsapp.net/) e abra a URL em um navegador para interagir com o modelo.
Se for solicitado que você configure permissões do Resource Access Management, siga as instruções na tela.
Para visualizar o código-fonte do projeto, acesse Resource Information > Function Resources .
Tanto o Function Compute quanto o Model Studio oferecem uma cota gratuita para novos usuários, suficiente para depuração básica. Após o esgotamento da cota gratuita, aplica-se o faturamento de pagamento conforme o uso.
Fluxo de interação
A tradução utiliza um modelo WebSocket orientado a eventos. A forma como os limites de fala são determinados depende do modo VAD ou do modo manual (consulte 3. Input audio and images). A tabela abaixo baseia-se no modo VAD (padrão) e anota os diferentes eventos do servidor no modo manual.
| Ciclo de vida | Evento do cliente | Evento do servidor |
|---|---|---|
| Inicialização da sessão | session.updateConfiguração da sessão | session.createdSessão criadasession.updated Configuração da sessão atualizada |
| Entrada de áudio do usuário | input_audio_buffer.appendAdicionar áudio ao bufferinput_image_buffer.append Adicionar imagem ao bufferinput_audio_buffer.commit (Apenas modo manual) Confirmar o buffer de áudio | Modo VAD:input_audio_buffer.speech_startedInício de fala detectadoinput_audio_buffer.speech_stopped Fim de fala detectado; o servidor confirma automaticamente o buffer de áudioModo manual:input_audio_buffer.committed Retornado após o cliente enviar input_audio_buffer.commit, confirmando que o buffer de áudio foi confirmado |
| Saída de áudio do servidor | Nenhum | response.createdIndica que o servidor começou a gerar uma resposta.response.output_item.added Indica que um novo item de saída está disponível.conversation.item.created Um novo item de mensagem é criado na conversa.response.content_part.added Indica que uma nova parte de conteúdo foi adicionada à mensagem do assistente.response.text.text Texto traduzido incremental na modalidade apenas textoresponse.audio_transcript.text Texto traduzido incremental na modalidade áudio+textoresponse.audio.delta Contém um trecho incremental do áudio sintetizado.response.text.done Texto de tradução concluído na modalidade apenas textoresponse.audio_transcript.done Texto de tradução concluído na modalidade áudio+textoresponse.audio.done Indica que o áudio sintetizado está completo.response.content_part.done Indica que uma parte de conteúdo de texto ou áudio da mensagem do assistente está completa.response.output_item.done Indica que todo o item de saída da mensagem do assistente está completo.response.done Indica que toda a resposta está completa. |
| Encerramento da sessão | session.finishNotifica o servidor de que a entrada de áudio foi concluída | session.finishedProcessamento do servidor concluído; sessão encerrada |
session.finish e aguarde session.finished antes de fechar o WebSocket. Se você fechar a conexão sem enviar session.finish, o servidor não saberá que a entrada de áudio terminou, e os resultados de reconhecimento e tradução do último segmento de fala serão perdidos.
API
- Qwen-Livetranslate-Realtime.
- AOQ client SDK
- Realtime API overview (Descrição do protocolo WebRTC)
Faturamento
Qwen3.5-LiveTranslate-Flash-Realtime
- Áudio: 7 tokens por segundo de áudio de entrada; 12,5 tokens por segundo de áudio de saída.
- Imagem: Cada 32×32 pixels consome 0,5 tokens.
- Texto: Quando o reconhecimento de fala no idioma de origem está ativado, o service retorna uma transcrição do áudio de entrada além da tradução. Essa transcrição é cobrada como tokens de texto de saída.
- Áudio: Cada segundo de áudio de entrada ou saída consome 12,5 tokens.
- Imagem: Cada 28×28 pixels consome 0,5 tokens.
- Texto: Quando o reconhecimento de fala no idioma de origem está ativado, o service retorna uma transcrição do áudio de entrada além da tradução. Essa transcrição é cobrada como tokens de texto de saída.
Limites de taxa
Para obter informações sobre os limites de taxa do modelo, consulte Rate limiting.
Idiomas compatíveis
Use os seguintes códigos de idioma para especificar os idiomas de origem e de destino.
Alguns idiomas de destino suportam apenas texto. O modelo legado qwen3-livetranslate-flash-realtime suporta apenas os seguintes 18 idiomas: en, zh, ru, fr, de, pt, es, it, id, ko, ja, vi, th, ar, yue, hi, el, tr.
Código do idioma | Idioma | Saída |
|---|---|---|
zh | Chinês | Áudio + texto |
en | Inglês | Áudio + texto |
ar | Árabe | Áudio + texto |
de | Alemão | Áudio + texto |
fr | Francês | Áudio + texto |
es | Espanhol | Áudio + texto |
pt | Português | Áudio + texto |
id | Indonésio | Áudio + texto |
it | Italiano | Áudio + texto |
ko | Coreano | Áudio + texto |
ru | Russo | Áudio + texto |
th | Tailandês | Áudio + texto |
vi | Vietnamita | Áudio + texto |
ja | Japonês | Áudio + texto |
tr | Turco | Áudio + texto |
hi | Híndi | Áudio + texto |
ms | Malaio | Áudio + texto |
nl | Holandês | Áudio + texto |
ur | Urdu | Áudio + texto |
nb | Norueguês Bokmål | Áudio + texto |
sv | Sueco | Áudio + texto |
da | Dinamarquês | Áudio + texto |
he | Hebraico | Áudio + texto |
fi | Finlandês | Áudio + texto |
pl | Polonês | Áudio + texto |
is | Islandês | Áudio + texto |
cs | Tcheco | Áudio + texto |
fil | Filipino | Áudio + texto |
fa | Persa | Áudio + texto |
yue | Cantonês | Texto |
el | Grego | Texto |
af | Africâner | Texto |
ast | Asturiano | Texto |
be | Bielorrusso | Texto |
bg | Búlgaro | Texto |
bn | Bengali | Texto |
bs | Bósnio | Texto |
ca | Catalão | Texto |
ceb | Cebuano | Texto |
et | Estoniano | Texto |
gl | Galego | Texto |
gu | Guzerate | Texto |
hr | Croata | Texto |
hu | Húngaro | Texto |
jv | Javanês | Texto |
kk | Cazaque | Texto |
kn | Canarês | Texto |
ky | Quirguiz | Texto |
lv | Letão | Texto |
mk | Macedônio | Texto |
ml | Malaiala | Texto |
mr | Marata | Texto |
pa | Panjabi | Texto |
ro | Romeno | Texto |
sk | Eslovaco | Texto |
sl | Esloveno | Texto |
sw | Suaíli | Texto |
tg | Tadjique | Texto |
az | Azeri | Texto |
uk | Ucraniano | Texto |
Vozes compatíveis
Para obter as vozes compatíveis e os valores correspondentes do parâmetro voice, consulte Voice list.