Esta página documenta los eventos de cliente a servidor para la API WebSocket en tiempo real de Qwen-ASR. Cada sección cubre un tipo de evento, sus parámetros y las respuestas del servidor.
Para obtener una descripción general de las funciones y código de ejemplo completo, consulte Reconocimiento de voz en tiempo real - Qwen. Para eventos de servidor a cliente, consulte Eventos de servidor para Qwen-ASR-Realtime.
Ciclo de vida del evento
Una sesión típica sigue esta secuencia:
- Establezca una conexión WebSocket.
- Envíe
session.updatepara configurar el formato de audio, el idioma y los ajustes de VAD. - Envíe
input_audio_buffer.appendrepetidamente para transmitir datos de audio. - En modo manual, envíe
input_audio_buffer.commitpara activar el reconocimiento de una expresión completa. En modo VAD, el servidor activa el reconocimiento automáticamente. - Envíe
session.finishpara finalizar la sesión y, a continuación, desconéctese tras recibir la respuestasession.finished.
session.update
Configura la sesión. Envíe este evento inmediatamente después de establecer la conexión WebSocket para definir el formato de audio, el idioma y los parámetros de VAD. Si se omite, se aplican los valores predeterminados.
El servidor responde con un evento session.updated en caso de éxito.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| type | string | Sí | Valor fijo: session.update. |
| event_id | string | Sí | Un ID de evento único. |
| session | object | Sí | Objeto de configuración de sesión. Consulte la tabla de configuración de sesión a continuación. |
Configuración de sesión
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| input_audio_format | string | No | Formato de codificación de audio. Valores válidos: pcm, opus. Valor predeterminado: pcm. |
| sample_rate | integer | No | Tasa de muestreo de audio en Hz. Valores válidos: 16000, 8000. Valor predeterminado: 16000. Establecer 8000 provoca un sobremuestreo en el servidor a 16,000 Hz (retraso menor). Use 8000 solo para audio nativo de 8,000 Hz, como telefonía. |
| input_audio_transcription | object | No | Configuración de reconocimiento de voz. |
| input_audio_transcription.language | string | No | Idioma del audio. Consulte la tabla de idiomas admitidos a continuación. |
| input_audio_transcription.corpus.text | string | No | Texto de contexto para sesgo contextual: texto de fondo, vocabularios de entidades o material de referencia que mejora la precisión del reconocimiento. Máximo: 10,000 tokens. |
| turn_detection | object | No | Configuración de VAD. Establezca en null para modo manual. Si está presente, modo VAD está habilitado. |
| turn_detection.type | string | Obligatorio cuando se establece turn_detection | Valor fijo: server_vad. |
| turn_detection.threshold | float | No | Umbral de sensibilidad de VAD. Valor predeterminado: 0.2. Rango válido: [-1, 1]. Los valores más bajos aumentan la sensibilidad (pueden activarse con ruido de fondo). Los valores más altos reducen la sensibilidad y evitan activaciones false en entornos ruidosos. Consulte los ajustes preestablecidos de VAD recomendados a continuación. |
| turn_detection.silence_duration_ms | integer | No | Duración del silencio en milisegundos que marca el final de la expresión. Valor predeterminado: 800. Rango válido: [200, 6000]. Duraciones más cortas (por ejemplo, 300 ms) aceleran las respuestas pero pueden dividir pausas naturales. Duraciones más largas (por ejemplo, 1,200 ms) gestionan mejor las pausas pero aumentan la latencia. Consulte los ajustes preestablecidos de VAD recomendados a continuación. |
Preajustes de VAD recomendados
Utilice estos preajustes como puntos de partida. Ajústelos según sus resultados:
| Preajuste | threshold | silence_duration_ms | Ideal para |
|---|---|---|---|
| Baja latencia | 0.0 | 400 | Interacciones rápidas como comandos de voz o asistencia de agente, donde las respuestas rápidas son más importantes que gestionar pausas largas |
| Equilibrado (predeterminado) | 0.2 | 800 | Transcripción de uso general con un equilibrio entre capacidad de respuesta y precisión |
Idiomas admitidos
| Code | Idioma |
|---|---|
| zh | Chino (mandarín, sichuanés, minnan y wu) |
| yue | Cantonés |
| en | Inglés |
| ja | Japonés |
| de | Alemán |
| ko | Coreano |
| ru | Ruso |
| fr | Francés |
| pt | Portugués |
| ar | Árabe |
| it | Italiano |
| es | Español |
| hi | Hindi |
| id | Indonesio |
| th | Tailandés |
| tr | Turco |
| uk | Ucraniano |
| vi | Vietnamita |
| cs | Checo |
| da | Danés |
| fil | Filipino |
| fi | Finlandés |
| is | Islandés |
| ms | Malayo |
| no | Noruego |
| pl | Polaco |
| sv | Sueco |
Ejemplo
{
"event_id": "event_123",
"type": "session.update",
"session": {
"input_audio_format": "pcm",
"sample_rate": 16000,
"input_audio_transcription": {
"language": "zh"
},
"turn_detection": {
"type": "server_vad",
"threshold": 0.0,
"silence_duration_ms": 400
}
}
}
input_audio_buffer.append
Transmite un fragmento de audio al búfer de entrada del servidor: el evento principal para enviar datos de audio.
El comportamiento difiere según el modo de interacción:
- Modo VAD: El servidor supervisa el búfer en busca de actividad de voz y activa el reconocimiento automáticamente.
- Modo manual: El cliente controla los límites de las expresiones. Envíe fragmentos más pequeños para reducir la latencia.
ImportanteEl campo audio contiene datos codificados en Base64. En modo manual, el tamaño máximo por evento es de 15 MiB. El servidor no envía una respuesta de confirmación.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| type | string | Sí | Valor fijo: input_audio_buffer.append. |
| event_id | string | Sí | Un ID de evento único. |
| audio | string | Sí | Datos de audio codificados en Base64. |
Ejemplo
{
"event_id": "event_2728",
"type": "input_audio_buffer.append",
"audio": "<Base64-encoded-audio-data>"
}
input_audio_buffer.commit
Activa el reconocimiento de todo el audio en el búfer como una sola expresión. Utilícelo en modo manual cuando su aplicación controle los límites de las expresiones (por ejemplo, pulsar para hablar).
Deshabilitado en modo VAD.
El servidor responde con un evento input_audio_buffer.committed en caso de éxito.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| type | string | Sí | Valor fijo: input_audio_buffer.commit. |
| event_id | string | Sí | Un ID de evento único. |
Ejemplo
{
"event_id": "event_789",
"type": "input_audio_buffer.commit"
}
session.finish
Finaliza la sesión. La respuesta del servidor depende de la detección de voz:
- Voz detectada: El servidor completa el reconocimiento final, envía un evento
conversation.item.input_audio_transcription.completedcon el resultado y luego envía un eventosession.finished. - No se detectó voz: El servidor envía
session.finisheddirectamente.
Después de recibir session.finished, desconecte la conexión WebSocket.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| type | string | Sí | Valor fijo: session.finish. |
| event_id | string | Sí | Un ID de evento único. |
Ejemplo
{
"event_id": "event_341",
"type": "session.finish"
}