Esta sección describe la autenticación, la configuración de medios, el establecimiento de la conexión y el procesamiento de eventos de tareas para acceder a Fun-ASR-Realtime mediante AOQ.
Al acceder a Fun-ASR-Realtime mediante AOQ, el cliente carga audio mediante la pista Audio y envía eventos de tareas mientras recibe resultados de reconocimiento mediante la pista Data.
Establezca la variable de entorno
Si usa Token Plan, el valor de
Use
Espere a que
Serialice el siguiente JSON en UTF-8, escríbalo en
Lea
Lea el texto reconocido de
Cuando termine la grabación, deje de capturar audio nuevo y espere a que se envíe el audio pendiente. Llame a
Cuando la conexión ya no sea necesaria, llame a
Requisitos previos
- Seleccione un modelo compatible con AOQ. Para obtener detalles de compatibilidad, consulte Ámbito de compatibilidad de modelos y protocolos.
- Configure y use la API Key en el AppServer de negocio, de acuerdo con la región y el espacio de trabajo.
- Importe el SDK de AOQ de su plataforma desde SDK. La siguiente explicación usa Android Java y transmisión Opus como ejemplo; importe también el complemento de Opus. Al usar un micrófono para capturar audio, solicite permisos de grabación del lado del cliente.
1. Obtener las credenciales de conexión
Para obtener un token por adelantado o consultar el flujo completo de autenticación, vea los detalles de autenticación de conexión.
DASHSCOPE_API_KEY en AppServer y sustituya {endpoint} por el endpoint de la región y el espacio de trabajo seleccionados. Fun-ASR-Realtime usa la ruta de conexión Inference; el siguiente ejemplo usa fun-asr-realtime.
WorkspaceId en el dominio de acceso es token-plan. clientIp en el cuerpo de la solicitud es opcional; introduzca la IP pública real del cliente para que el gateway seleccione un punto de acceso de Relay. Si se deja vacío, el gateway usa la IP de origen de la solicitud.
La API Key se almacena únicamente en AppServer. AppServer devuelve al cliente los parámetros de conexión de la siguiente tabla; sidExpiresInSecs en la respuesta indica el periodo de validez de la sesión en segundos.
| Campos de respuesta del gateway | Campo de AoqConnectConfig |
|---|---|
aoqTokenForClient | token |
sid | sid |
clientRelayCertFingerprint | certFingerprint |
clientRelayEndpoints | relayEndpoints, convierta endpoint, port y route_index uno por uno |
extraInfo.workspaceIdHash | workspaceIdHash |
2. Inicializar el SDK y conectarse
Use AoqCreateConfig para establecer el directorio de trabajo del SDK y llame a AoqClientEngine.createEngine para crear el motor y registrar las funciones de callback. Maneje el estado de la conexión en onConnectionStatusChange, analice los eventos del modelo en onDataMsg y maneje los errores del SDK en onError. SDK de Android proporciona la documentación completa de la inicialización del motor y los campos de conexión.
Después de introducir en connectConfig las credenciales que devuelve AppServer, publique las pistas Audio y Data y suscríbase a la pista Data. El siguiente ejemplo configura codificación Opus mono de 16 kHz y captura integrada, y desactiva el envío de la pista Audio mientras se establece la conexión. El evento de tarea especifica el formato de entrada del modelo, y la configuración de codificación del SDK se usa para la transmisión por las pistas de medios.
onConnectionStatusChange devuelva AoqConnectionStatusConnected antes de iniciar la tarea. Si hay errores de conexión, borre el estado local de la tarea; para restablecer la conexión es necesario obtener credenciales nuevas.
3. Iniciar la tarea de reconocimiento y manejar los eventos
Serialice el siguiente JSON en UTF-8, escríbalo en AoqDataMsg.data y después envíelo mediante la pista Data con sendDataMsg. Cada tarea genera un task_id nuevo; todos los eventos de este turno usan el mismo valor.
header.event de onDataMsg. El audio ascendente solo se permite después de recibir task-started.
payload.output.sentence en result-generated e ignore los mensajes de latido con heartbeat=true. sentence_end=false representa texto intermedio y sentence_end=true, el texto final de la oración. Actualice el texto de la misma oración según sentence_id. Al recibir task-failed, detenga el envío ascendente de este turno y lea header.error_code y header.error_message.
Para consultar los parámetros de tareas y los campos de eventos, consulte Eventos del cliente y Eventos del servidor.
4. Finalizar la tarea y liberar los recursos
Cuando termine la grabación, deje de capturar audio nuevo y espere a que se envíe el audio pendiente. Llame a enableSendMediaStream para cerrar el envío ascendente de la pista Audio y después envíe finish-task mediante la pista Data. Mantenga la conexión abierta para recibir los resultados de reconocimiento restantes y espere task-finished.
stopAudioCapture, disconnect y AoqClientEngine.destroy, en ese orden, para liberar los recursos.