Conecte-se ao serviço de síntese de fala em tempo real do Qwen-TTS via WebSocket. Este tópico aborda o endpoint do serviço, os cabeçalhos de requisição e o fluxo de interação.
Para obter uma visão geral dos modelos e orientações sobre como escolhê-los, consulte Síntese de fala em tempo real.
A API em tempo real do Qwen-TTS utiliza o protocolo WebSocket. Aplicações Java e Python podem usar o DashScope SDK para evitar o gerenciamento manual do WebSocket. Para outras linguagens, conecte-se diretamente com uma biblioteca WebSocket.
Endpoint do serviço
Use a URL abaixo. Defina o modelo por meio do parâmetro de consulta model:
China (Pequim)
URL do WebSocket: wss://dashscope.aliyuncs.com/api-ws/v1/realtime?model=qwen3-tts-flash-realtime
Singapura
URL do WebSocket: wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime?model=qwen3-tts-flash-realtime
Singapura
URL do WebSocket: wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime?model=qwen3-tts-flash-realtime
China (Pequim)
URL do WebSocket: wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime?model=qwen3-tts-flash-realtime
ImportanteA URL deve usar obrigatoriamente o protocolo wss://. Configure o cabeçalho Authorization (consulte Cabeçalhos de requisição) e especifique o modelo com o parâmetro de consulta model.
Cabeçalhos de requisição
Configure os seguintes cabeçalhos na requisição:
Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Formato: |
user-agent | string | Não | Identificador do cliente para rastreamento de source no lado do servidor. |
X-DashScope-WorkSpace | string | Não | O ID do workspace do Alibaba Cloud Model Studio. |
ImportanteA autorização é verificada durante o handshake do WebSocket. Uma chave de API inválida ou ausente causa falha no handshake com HTTP 401/403.
Fluxo de interação
Para descrições detalhadas sobre eventos do cliente e do servidor, consulte Eventos do cliente e Eventos do servidor.
Esta API oferece suporte a dois modos de operação:
- Modo ServerCommit: O servidor define automaticamente a segmentação do texto e o momento da síntese.
- Modo Commit: O cliente controla quando enviar cada segmento de texto. Chame
input_text_buffer.commitexplicitamente para iniciar a síntese.
Detalhes dos modos
- No modo ServerCommit, use
input_text_buffer.appendpara armazenar texto em buffer. O sistema decide automaticamente o momento da síntese. - Chamar
input_text_buffer.commitno modo ServerCommit sintetiza o conteúdo atual do buffer imediatamente. A sessão então retoma o comportamento padrão do modo ServerCommit. - No modo Commit, apenas
input_text_buffer.appendnão inicia a síntese. Chameinput_text_buffer.commitpara iniciar o processo.
-
Conexão: O cliente abre uma conexão WebSocket. Quando pronto, o servidor retorna o evento
session.created. -
Configuração da sessão: Envie
session.updatepara definir a voz, o formato de áudio e o modo de operação. -
Entrada de texto: Use
input_text_buffer.appendpara adicionar texto ao buffer. -
Disparo da síntese:
- No modo ServerCommit, a síntese ocorre automaticamente. Para forçar a síntese imediata do buffer, chame
input_text_buffer.commit. - No modo Commit, a síntese só é acionada ao chamar
input_text_buffer.commit.
- No modo ServerCommit, a síntese ocorre automaticamente. Para forçar a síntese imediata do buffer, chame
-
Geração de áudio: O servidor envia
response.createde transmite o áudio codificado em base64 por meio de eventosresponse.audio.deltaaté emitirresponse.audio.done. -
Encerramento da sessão: Para liberar recursos, envie
session.finish. O servidor responde comsession.finishede fecha a conexão.
Após a conexão, o servidor retorna o seguinte evento session.created:
{
"event_id": "event_xxx",
"type": "session.created",
"session": {
"object": "realtime.session",
"mode": "server_commit",
"model": "qwen3-tts-flash-realtime",
"voice": "Cherry",
"response_format": "pcm",
"sample_rate": 24000,
"id": "sess_xxx"
}
}