Skip to main content

Qwen-LiveTranslate-Realtime Conexión mediante WebSocket

Qwen-LiveTranslate-Realtime Conexión mediante WebSocket

Ámbito de aplicación

Este documento está dirigido a Qwen-LiveTranslate-Realtime; el modelo del ejemplo es qwen3.8-livetranslate-flash-realtime. La serie de guías también abarca qwen3.5-livetranslate-flash-realtime y la versión de instantánea qwen3.5-livetranslate-flash-realtime-2026-05-19. Las configuraciones y los campos de eventos difieren entre 3.8 y 3.5; consulte la referencia de eventos del modelo seleccionado.
  • Use la API Key y el ID del espacio de trabajo correspondientes a la región y al espacio de trabajo seleccionados.
  • Dominio de Pekín: {WorkspaceId}.cn-beijing.maas.aliyuncs.com; dominio de Singapur: {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com.
  • Las API Keys de larga duración se almacenan en el servidor y no deben colocarse en navegadores ni aplicaciones móviles.

Direcciones y autenticación

Pekín: wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime?model=qwen3.8-livetranslate-flash-realtime Singapur: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=qwen3.8-livetranslate-flash-realtime Para obtener detalles de otros dominios, consulte SDK de Python. Establezca Authorization: Bearer <API_KEY> en el encabezado de la solicitud de handshake de WebSocket. Sustituya el ID del espacio de trabajo y el nombre real del modelo; no coloque API Keys de larga duración en navegadores ni aplicaciones móviles. El encabezado opcional user-agent identifica al cliente. La documentación general de integración de WebSocket también enumera X-DashScope-WorkSpace (ID del espacio de trabajo) y X-DashScope-DataInspection (configuración de verificación de cumplimiento de datos), que se usan según los requisitos del modelo. Para obtener instrucciones sobre la generación de API Keys temporales y sus permisos, consulte Generar una API Key temporal.

Configuración de la sesión

Envíe session.update después de establecer la conexión y recibir session.created. Envíe la entrada solo después de recibir la confirmación session.updated; maneje los errores mediante eventos error. Los siguientes ejemplos se aplican a qwen3.8-livetranslate-flash-realtime; para otras versiones, use las configuraciones de sus respectivas referencias de eventos sin mezclar los niveles de campos. El ejemplo activa la clonación de voz en tiempo real: frequency: once extrae la voz de entrada una vez al inicio de la sesión y la reutiliza después, lo que es adecuado para escenarios de una sola persona. Para obtener detalles, consulte Clonación de voz.
{
  "type": "session.update",
  "session": {
    "output_modalities": [
      "text",
      "audio"
    ],
    "audio": {
      "input": {
        "turn_detection": {
          "type": "speaker_detection",
          "threshold": 0.5
        }
      }
    },
    "voice": "default",
    "enable_voice_clone": true,
    "voice_clone_options": {
      "frequency": "once"
    },
    "translation": {
      "language": "en",
      "corpus": {
        "phrases": {
          "人工智能": "Artificial Intelligence",
          "机器学习": "Machine Learning"
        }
      }
    }
  }
}
Al usar qwen3.5-livetranslate-flash-realtime, la configuración y los eventos difieren del ejemplo de 3.8 anterior:
  • El modo de salida usa modalities en session; los valores disponibles y el valor predeterminado son iguales a los de output_modalities en 3.8.
  • El idioma de origen se puede especificar mediante language en el objeto input_audio_transcription de session; si se omite, se usa el reconocimiento automático.
  • El reconocimiento incremental del texto de origen usa conversation.item.input_audio_transcription.text; 3.8 usa conversation.item.input_audio_transcription.delta.
  • Para la salida de solo texto, 3.5 devuelve incrementos de traducción mediante response.text.text y 3.8 usa response.text.delta. Para la salida de texto y audio, 3.5 devuelve incrementos de traducción mediante response.audio_transcript.text y 3.8 usa response.audio_transcript.delta.
Para consultar los campos completos, los valores predeterminados y los eventos, consulte Eventos del cliente, Eventos del servidor y Guía de traducción de voz en tiempo real.

Entrada, resultados y finalización

El audio se envía mediante input_audio_buffer.append; los formatos de entrada, las condiciones de envío y las restricciones de entrada de imágenes se describen en Eventos del cliente. Maneje los resultados, estados y errores según Eventos del servidor; no interprete el establecimiento de la conexión como la finalización de una solicitud de negocio. La traducción en tiempo real usa la configuración y los eventos de traducción de este modelo; no aplique el flujo de diálogo response.create de Omni. Cuando termine la entrada, envíe session.finish, mantenga la conexión abierta y continúe recibiendo los resultados restantes; cierre la conexión de WebSocket solo después de recibir session.finished. Si se requiere reproducir todo el audio traducido, termine primero la reproducción local. Los campos específicos de eventos se detallan en Eventos del cliente y Eventos del servidor.

Manejo de errores

Si falla el handshake, verifique el dominio, la región, el espacio de trabajo, la API Key, el nombre del modelo, su estado de activación y sus permisos. Una vez establecida la conexión, localice el problema según el evento error y consulte Códigos de error. Conserve el ID del evento para el diagnóstico; no suponga que no existe compatibilidad con el protocolo solo porque no haya respuesta.

SDK y referencias