
Conversa de fala duplex em um único socket, com 88 vozes, busca nativa na web, chamadas de ferramentas e taxas separadas de token de texto e áudio.
Conversa de fala duplex em um único socket, com 88 vozes, busca nativa na web, chamadas de ferramentas e taxas separadas de token de texto e áudio.
A sessão é configurada com eventos session.update pelo socket em vez de parâmetros de requisição. A busca na web está desativada por padrão e não pode ser combinada com chamadas de funções. Tokens de texto e áudio faturam a taxas separadas, e uma resposta falada cobra apenas seus tokens de áudio.
Também conhecido como Qwen Audio Realtime Plus, Qwen Audio Realtime, Alibaba Cloud Qwen Audio 3.1 Realtime Plus
qwen-audio-3-1-realtime-plus/v1/realtimeqwen-audio-3.1-realtime-plusalibaba/qwen-audio-3-1-realtime-plusTarifas pay-as-you-go ao vivo do catálogo EmpirioLabs. Você paga só pelo que usa, sem mínimo mensal.
Qwen Audio 3.1 Realtime Plus mantém uma conversa ao vivo por um WebSocket em wss://api.empiriolabs.ai/v1/realtime?model=qwen-audio-3-1-realtime-plus, e não pelos endpoints HTTP. Conecte-se com o id de modelo qwen-audio-3-1-realtime-plus e envie sua chave de API da EmpirioLabs como cabeçalho Authorization: Bearer no handshake. O áudio trafega nos dois sentidos como PCM de 16 bits em base64. Um navegador não consegue definir cabeçalhos em um WebSocket, então abra esta conexão a partir do seu servidor e repasse o áudio ao navegador pelo seu próprio socket. Obtenha uma chave de API no painel EmpirioLabs.
import asyncio, json, os, websockets
async def main():
async with websockets.connect(
"wss://api.empiriolabs.ai/v1/realtime?model=qwen-audio-3-1-realtime-plus",
additional_headers=[
("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}"),
],
max_size=None,
) as ws:
print(json.loads(await ws.recv())["type"]) # session.created
await ws.send(json.dumps({
"type": "conversation.item.create",
"item": {
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": "Say hello."}],
},
}))
await ws.send(json.dumps({"type": "response.create"}))
async for raw in ws:
event = json.loads(raw)
if event["type"] == "response.audio.delta":
... # base64 audio chunk, append to your playback buffer
elif event["type"] == "response.done":
break
asyncio.run(main())Parâmetros de requisição suportados pela API Qwen Audio 3.1 Realtime Plus na EmpirioLabs. Os padrões valem quando um campo é omitido.
| Parâmetro | Tipo | Padrão | Intervalo / valores | Descrição |
|---|---|---|---|---|
| voice | enum | longanqian_v3.1 | longanqian_v3.1, longanhuan_v3.1, longanlingxin_v3.1, longanf... | Voz falada para a sessão. Defina com session.update antes que o modelo produza qualquer áudio. Essas vozes são específicas para esse modelo. |
| instructions | string | - | - | Orientação do sistema sobre como o modelo deve se comportar e falar durante a conversa. |
| input_language | enum | auto | auto, zh, en, ja, ko, vi, th, id, ar, fr, de, es, pt, ru, it | Linguagem que você fala. A transcrição do seu discurso está escrita nela; detecta automaticamente. Também aceita como input_audio_transcription.language. |
| output_language | enum | auto | auto, zh, en, ja, ko, vi, th, id, ar, fr, de, es, pt, ru, it | Idioma em que a resposta falada é lida, por exemplo, japonês ou chinês para os mesmos caracteres. Não traduz a resposta: peça o idioma dele nas suas instruções. O... |
| speed | number | - | 0.5 a 2 | Taxa de fala da resposta, de 0,5 para 2. Valores mais baixos desaceleram a fala e valores mais altos a aceleram. Também aceito como speech_rate. Quando omitido, o... |
| enable_speech_emotion | boolean | true | - | A emoção é mais pronunciada na resposta falada. Desligue para uma entrega mais uniforme. |
| max_history_turns | integer | - | 1 a 50 | Quantas trocas anteriores o modelo lê para cada resposta, de 1 a 50. Menos exchanges usam menos tokens de entrada. Quando omitidos, o padrão do modelo se aplica. |
| enable_search | boolean | false | - | Pesquise na web informações em tempo real. Não pode ser usado na mesma sessão que a chamada de funções. Os resultados da busca são adicionados à conversa e contam... |
| modalities | string | ["text","audio"] | - | Quais tipos de saída o modelo retorna por um turno. Corte o áudio para uma resposta apenas de texto. |
| input_audio_format | enum | pcm16 | pcm16 | Codificação do áudio que você adiciona ao buffer de entrada: PCM base64 de 16 bits a 16 kHz. |
| output_audio_format | enum | pcm24 | pcm24 | Codificação do áudio que o modelo transmite de volta: PCM de 16 bits a 24 kHz. |
| turn_detection | string | {"type":"server_vad"} | - | Detecção de atividade de voz: decide quando você terminou de falar e o modelo deve responder. Está ativado por padrão como server_vad, o que encerra seu turno após... |
Voz full-duplex sobre um WebSocket na wss://api.empiriolabs.ai/v1/realtime?model=qwen-audio-3-1-realtime-plus, autenticada com o cabeçalho comum Authorization Bearer. Configure a sessão com session.update sobre o socket: voz, instruções, modalidades, detecção de turnos, idiomas e entrega.
Defina input_language para o idioma que você fala, no qual a transcrição do seu discurso está escrita, e output_language para o idioma em que a resposta falada é lida. Cada um aceita auto ou um de zh, en, ja, ko, vi, th, id, ar, fr, de, es, pt, ru e it. A linguagem de saída não traduz a resposta, então peça também o idioma dele nas suas instruções. speed (0,5 para 2) define a taxa de fala, enable_speech_emotion a entrega expressiva e max_history_turns (1 a 50) quantas trocas anteriores o modelo lê.
As vozes deste modelo são um conjunto próprio. Escolha uma da lista de vozes em vez de carregar uma voz de outro modelo, ou deixe-a sem definir e o padrão será fornecido para você.
A busca na web está desativada por padrão. Ative-a com enable_search. Ela não pode ser ativada na mesma sessão que a chamada de funções, e os resultados da busca são adicionados à conversa e contam como tokens de entrada.
Tokens de áudio e texto são precificados separadamente em ambas as direções. Uma resposta falada é cobrada apenas pelos tokens de saída de áudio, e a taxa de saída de texto aplica-se a respostas sem áudio. Cada turno concluído é faturado separadamente a partir do uso que o modelo reporta.
Na EmpirioLabs, Qwen Audio 3.1 Realtime Plus é cobrado por uso: Entrada: áudio $12.80 por 1M de tokens de entrada de áudio; Entrada $1.60 por 1M de tokens de prompt; Saída $12.80 por 1M de tokens gerados, respostas apenas de texto; Saída: áudio $48.00 por 1M de tokens de áudio gerados; Pesquisa Web $0.00 por chamada quando invocada. A tabela de tarifas ao vivo desta página sempre corresponde ao que a API cobra.
Qwen Audio 3.1 Realtime Plus suporta uma janela de contexto de 240K tokens com até 16.384 tokens de saída por resposta.
Qwen Audio 3.1 Realtime Plus é servido por WEBSOCKET /v1/realtime em api.empiriolabs.ai com autenticação padrão por token Bearer.
Abra o playground da EmpirioLabs e clique em Start session para testar no navegador. Qwen Audio 3.1 Realtime Plus funciona sobre um WebSocket em vez de requisição e resposta, então para integrar comece pelo guia rápido de voz em tempo real. Conecte-se do seu servidor com sua chave de API da EmpirioLabs e o id de modelo qwen-audio-3-1-realtime-plus e transmita áudio nos dois sentidos.
Crie uma conta EmpirioLabs e gere uma chave em API Keys no painel. A cobrança usa créditos pay-as-you-go, então você paga apenas pelas requisições que faz.
Confira nossos preços ou entre em contato se quiser que seu próprio modelo seja implementado em nossa pilha.