Transmita audio a Qwen-ASR-Realtime mediante WebSocket y reciba resultados de transcripción en tiempo real a través del SDK de Python de DashScope.
Requisitos previos
Antes de comenzar, asegúrese de tener:
- SDK de DashScope 2.0.1 o posterior
- Una clave de API
- Comprensión del flujo de interacción
Ejemplo completo
El código de ejemplo lee
your_audio_file.pcm (PCM16, 16 kHz, mono). Si solo tiene un MP3, WAV o un formato similar, conviértalo con ffmpeg:Python
Parámetros de solicitud
client.audio.realtime.connect
Los siguientes parámetros se configuran con client.audio.realtime.connect.
Haga clic para ver código de ejemplo
Haga clic para ver código de ejemplo
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
model | str | Sí | Modelo a utilizar. |
ws_url | str | No | Endpoint WebSocket completo. Si no se especifica, el endpoint se selecciona automáticamente según el workspace y la region del Client: China (Pekín): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime Singapur: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime. Reemplace {WorkspaceId} con su ID de espacio de trabajo real. |
Configuración de sesión
Después de conectarse, llame a update_session para configurar los parámetros de la sesión.
Haga clic para ver código de ejemplo
Haga clic para ver código de ejemplo
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
output_modalities | List[str] | Sí | Modalidad de salida. Fija en ["text"]. |
enable_turn_detection | bool | No | Habilita la Detección de Actividad de Voz (VAD) del lado del servidor. Predeterminado: True. Cuando es False, llame a commit() manualmente para activar el reconocimiento. |
turn_detection_type | str | No | Tipo de VAD del lado del servidor. Fijo en server_vad. |
turn_detection_threshold | float | No | Umbral de sensibilidad de VAD. Predeterminado: 0.5. Recomendado: 0.0. Rango válido: [-1, 1]. Valores más bajos = mayor sensibilidad (puede activarse con ruido de fondo). Valores más altos = menos activaciones falsas en entornos ruidosos. |
turn_detection_silence_duration_ms | int | No | Duración del silencio (ms) que marca el final de una declaración. Predeterminado: 800. Recomendado: 400. Rango válido: [200, 6000]. Valores más bajos (por ejemplo, 300 ms) = respuesta más rápida pero puede dividir pausas naturales. Valores más altos (por ejemplo, 1200 ms) = mejor manejo de pausas en oraciones largas pero mayor latencia. |
transcription_params | dict | No | Configuraciones de reconocimiento de voz. Consulte transcription_params. |
transcription_params
Configure los ajustes de reconocimiento de voz con el diccionario transcription_params de update_session.
Haga clic para ver código de ejemplo
Haga clic para ver código de ejemplo
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
language | str | No | Idioma de origen del audio. Valores admitidos: zh (chino: mandarín, sichuanés, minnan, wu), yue (cantonés), en (inglés), ja (japonés), ko (coreano), de (alemán), fr (francés), es (español), pt (portugués), it (italiano), ru (ruso), ar (árabe), hi (hindi), id (indonesio), th (tailandés), tr (turco), uk (ucraniano), vi (vietnamita), cs (checo), da (danés), fi (finlandés), fil (filipino), is (islandés), ms (malayo), no (noruego), pl (polaco), sv (sueco) |
sample_rate | int | No | Tasa de muestreo de audio en Hz. Predeterminado: 16000. Admitidos: 16000, 8000. Con 8000, el servidor realiza un sobremuestreo a 16,000 Hz antes del reconocimiento, lo que puede añadir una ligera latencia. Utilice 8000 solo para audio fuente de 8 kHz, como grabaciones telefónicas. |
input_audio_format | str | No | Formato de audio. Predeterminado: pcm. Admitidos: pcm, opus. |
corpus_text | str | No | Texto de fondo, vocabularios de entidades u otra información de referencia para el sesgo contextual. Máx.: 10,000 tokens. Para más detalles, consulte Sesgo contextual. |
Interfaces clave
Clase RealtimeSession
Se crea una sesión de reconocimiento en tiempo real con client.audio.realtime.connect(model=...): la conexión se establece al entrar en el contexto with (o al llamar al método connect() de la sesión).
| Método | Evento de respuesta del servidor (entregado mediante events()) | Descripción |
|---|---|---|
connect() | session.created, session.updated | Abre una conexión WebSocket con el servidor. Se llama automáticamente al entrar en el contexto with; no llame a connect() y luego entre en el contexto with de la misma sesión. |
update_session(...) | session.updated | Configura la sesión. Llame después de connect(). Si se omite, se aplican los valores predeterminados. Consulte Configuración de la sesión para ver los parámetros. |
append_audio(audio: Union[str, bytes]) | None | Añade un fragmento de audio al búfer de entrada del servidor. Un valor str se considera ya codificado en Base64; los bytes se codifican automáticamente en Base64. Con enable_turn_detection=True, el servidor detecta los límites del habla y confirma automáticamente. Con enable_turn_detection=False, el cliente controla el momento de la confirmación (máx. 15 MiB por evento). Los fragmentos más pequeños mejoran la capacidad de respuesta de la VAD. |
commit() | input_audio_buffer.committed | Confirma el audio almacenado en el búfer para su reconocimiento. Devuelve un error si el búfer está vacío. Deshabilitado cuando enable_turn_detection=True. |
end_session() | session.finished | Finaliza la sesión después de que el servidor completa el reconocimiento final. En el modo VAD (predeterminado), llame después de enviar todo el audio. En el modo Manual, llame después de commit(). |
close() | None | Finaliza la tarea y cierra la conexión (idempotente, no envía session.finish). |
events() | Eventos del servidor (el tipo de evento está en event["type"]) | Lee continuamente los eventos del servidor. La iteración termina después de que se devuelve session.finished; consuma los eventos desde un único hilo receptor y no cree varios lectores concurrentes. |
session.session_id, session.last_response_id | None | El ID de sesión de la tarea actual y el ID de respuesta más reciente (atributos). |
Iteración de eventos (events())
El servidor devuelve eventos de respuesta y datos al cliente en forma de eventos. Itere events() de la sesión en un hilo receptor y distribuya según event["type"] (consulte la lista completa de eventos en Eventos del servidor).
| Método | Parámetros | Descripción |
|---|---|---|
events() | event: un evento del servidor | Lee y devuelve continuamente eventos del servidor (dict). La iteración termina cuando se cierra la conexión o se recibe session.finished. |
recv_event() | None | Bloquea la lectura de un único evento del servidor sin iterar; devuelve None cuando no hay eventos (la conexión está cerrada). |