
Conversación de voz dúplex en un solo socket, con 88 voces, búsqueda web nativa que funciona junto con la llamada a herramientas, y tasas separadas de tokens de texto y audio.
Conversación de voz dúplex en un solo socket, con 88 voces, búsqueda web nativa que funciona junto con la llamada a herramientas, y tasas separadas de tokens de texto y audio.
La sesión se configura con los eventos session.update a través del socket en lugar de parámetros de solicitud. La búsqueda web está desactivada por defecto y funciona junto con la llamada de funciones. Los tokens de texto y audio facturan a tarifas separadas, y una respuesta hablada factura solo sus tokens de audio.
También conocido como Qwen Audio Realtime Flash, Alibaba Cloud Qwen Audio 3.1 Realtime Flash
qwen-audio-3-1-realtime-flash/v1/realtimeqwen-audio-3.1-realtime-flashalibaba/qwen-audio-3-1-realtime-flashTarifas de pago por uso en vivo del catálogo de EmpirioLabs. Solo pagas por lo que usas, sin mínimo mensual.
Qwen Audio 3.1 Realtime Flash mantiene una conversación en vivo a través de un WebSocket en wss://api.empiriolabs.ai/v1/realtime?model=qwen-audio-3-1-realtime-flash, no a través de los endpoints HTTP. Conéctate con el id de modelo qwen-audio-3-1-realtime-flash y envía tu clave de API de EmpirioLabs como cabecera Authorization: Bearer en el handshake. El audio viaja en ambos sentidos como PCM de 16 bits en base64. Un navegador no puede establecer cabeceras en un WebSocket, así que abre esta conexión desde tu servidor y retransmite el audio al navegador por tu propio socket. Consigue una clave de API en el panel de 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-flash",
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 solicitud compatibles con la API de Qwen Audio 3.1 Realtime Flash en EmpirioLabs. Los valores por defecto se aplican cuando se omite un campo.
| Parámetro | Tipo | Predeterminado | Rango / valores | Descripción |
|---|---|---|---|---|
| voice | enum | longanqian_v3.1 | longanqian_v3.1, longanhuan_v3.1, longanlingxin_v3.1, longanf... | Voz hablada durante la sesión. Configúralo con session.update antes de que el modelo produzca audio. Estas voces son específicas de este modelo. |
| instructions | string | - | - | Guía del sistema sobre cómo debe comportarse y hablar el modelo durante la conversación. |
| input_language | enum | auto | auto, zh, en, ja, ko, vi, th, id, ar, fr, de, es, pt, ru, it | Lenguaje que hablas. La transcripción de tu discurso está escrita en él; la detecta automáticamente. También aceptado 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 en el que se lee la respuesta hablada, por ejemplo, japonés o chino para los mismos caracteres. No traduce la respuesta: pide su idioma en tus instrucciones.... |
| speed | number | - | 0.5 a 2 | Tasa de conversación de la respuesta, de 0,5 a 2. Valores bajos ralentizan el habla y valores altos la aceleran. También aceptado como speech_rate. Cuando se omite,... |
| enable_speech_emotion | boolean | true | - | Más emoción en la respuesta hablada. Apágalo para una entrega más uniforme. |
| max_history_turns | integer | - | 1 a 50 | Cuántas intercambios anteriores lee el modelo por cada respuesta, de 1 a 50. Menos intercambios usan menos tokens de entrada. Cuando se omiten, se aplica el valor... |
| enable_search | boolean | false | - | Busca información en tiempo real en la web. Funciona en la misma sesión que la llamada a funciones. Los resultados de búsqueda se añaden a la conversación y cuentan... |
| modalities | string | ["text","audio"] | - | Qué tipos de salida devolve el modelo durante un turno. Corta el audio para una respuesta solo de texto. |
| input_audio_format | enum | pcm16 | pcm16 | Codificación del audio que añades al búfer de entrada: PCM base64 de 16 bits a 16 kHz. |
| output_audio_format | enum | pcm24 | pcm24 | Codificación del audio que el modelo transmite de vuelta: PCM de 16 bits a 24 kHz. |
| turn_detection | string | {"type":"server_vad"} | - | Detección de actividad de voz: decide cuándo has terminado de hablar y el modelo debe responder. Está activado por defecto como server_vad, lo que termina tu turno... |
Voz full-dúplex sobre un WebSocket en wss://api.empiriolabs.ai/v1/realtime?model=qwen-audio-3-1-realtime-flash, autenticada con la cabecera ordinaria de Portador de Autorización. Configura la sesión con session.update sobre el socket: voz, instrucciones, modalidades, detección de giros, idiomas y entrega.
Establece input_language al idioma que hablas, en el que está escrita la transcripción de tu habla, y output_language al idioma en el que se lee la respuesta hablada. Cada uno toma auto o uno de zh, en, ja, ko, vi, th, id, ar, fr, de, es, pt, ru y it. El idioma de salida no traduce la respuesta, así que pide también su idioma en tus instrucciones. speed (0.5 a 2) establece la tasa de habla, enable_speech_emotion la expresión expresiva y max_history_turns (1 a 50) cuántos intercambios anteriores lee el modelo.
Las voces de este modelo son un set propio. Elige una de la lista de voces en lugar de llevar una voz frente a otro modelo, o déjala sin configurar y se te proporciona la voz predeterminada.
La búsqueda web está desactivada por defecto. Actívala con enable_search. Funciona en la misma sesión que la llamada a una función, y los resultados de búsqueda se añaden a la conversación y cuentan como tokens de entrada.
Los tokens de audio y texto se valoran por separado en ambas direcciones. Una respuesta hablada se factura solo por sus tokens de salida de audio, y la tasa de salida de texto se aplica a respuestas sin audio. Cada turno completado se factura por separado según el uso que el modelo reporte.
En EmpirioLabs, Qwen Audio 3.1 Realtime Flash se factura por uso: Entrada: audio $1.86 por 1M de tokens de entrada de audio; Entrada $0.46 por 1M de tokens de prompt; Salida $1.40 por cada 1M de tokens generados, respuestas solo de texto; Salida: audio $3.74 por cada 1M de tokens de audio generados; Búsqueda web $0.00 por llamada cuando se invoca. La tabla de tarifas en vivo de esta página siempre coincide con lo que cobra la API.
Qwen Audio 3.1 Realtime Flash admite una ventana de contexto de 240K tokens con hasta 16.384 tokens de salida por respuesta.
Qwen Audio 3.1 Realtime Flash se sirve a través de WEBSOCKET /v1/realtime en api.empiriolabs.ai con autenticación estándar de token Bearer.
Abre el playground de EmpirioLabs y pulsa Start session para probarlo en tu navegador. Qwen Audio 3.1 Realtime Flash funciona sobre un WebSocket en lugar de una petición y una respuesta, así que para integrarlo empieza por la guía rápida de voz en tiempo real. Conéctate desde tu servidor con tu clave de API de EmpirioLabs y el id de modelo qwen-audio-3-1-realtime-flash, y luego transmite audio en ambos sentidos.
Crea una cuenta de EmpirioLabs y genera una clave en API Keys en el panel. La facturación es con créditos de pago por uso, así que solo pagas por las solicitudes que haces.
Consulta nuestros precios o contacta con nosotros si quieres que tu propio modelo se implemente en nuestra pila.