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 CosyVoice mediante AOQ.
Al acceder a CosyVoice mediante AOQ, el cliente envía texto y eventos de tareas mediante la pista Data y recibe la voz sintetizada mediante la pista Audio.
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
El SDK recibe y reproduce la voz desde la pista Audio.
Después de enviar todo el texto, envíe
Cuando ya no use la conexión, espere a que termine la reproducción del audio recibido y después 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 Descarga del SDK. Los siguientes ejemplos usan Android Java y transmisión Opus; importe también el complemento de Opus. La síntesis de texto a voz no requiere permisos de micrófono ni cámara.
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 dominio de acceso de la región y el espacio de trabajo seleccionados. CosyVoice usa la ruta de conexión Inference; el siguiente ejemplo usa cosyvoice-v3-plus.
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 la pista Data y suscríbase a las pistas Audio y Data. El ejemplo configura decodificación Opus mono de 24 kHz e inicia el reproductor. El evento de tarea especifica el formato de salida del modelo, y la configuración de decodificació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 síntesis y procesar 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 comparten el mismo valor. Use la voz correspondiente al modelo seleccionado.
header.event en onDataMsg. Al recibir task-started, envíe uno o varios eventos continue-task para enviar el texto.
result-generated representa el evento de tarea en la pista Data, mientras que el audio se transmite por la pista Audio. Al recibir task-failed, lea header.error_code y header.error_message, y finalice la tarea actual.
Los parámetros de tareas y los campos de eventos se detallan en Eventos del cliente y Eventos del servidor.
4. Finalizar la tarea y liberar los recursos
Después de enviar todo el texto, envíe finish-task. Mantenga la conexión abierta y espere a que el servidor sintetice el texto restante y devuelva task-finished.
stopAudioPlayer, disconnect y AoqClientEngine.destroy, en ese orden, para liberar los recursos.