Utilice el SDK de iOS para Qwen-Audio-3.0-Realtime para crear conversaciones de voz en tiempo real con entrada de audio y salida de audio o texto.
Guía del usuario: Para introducciones a los modelos y consejos de selección, consulte Conversación de voz en tiempo real.
Inicio rápido
-
Obtenga una clave API: Obtenga y configure una clave API.
-
Descargue el SDK y ejecute el código de ejemplo:
- Descargue el paquete más reciente del SDK.
- Extraiga el paquete ZIP y agregue
nuisdk.xcframeworka su proyecto. - En Build Phases > Link Binary With Libraries, agregue
nuisdk.xcframework. - En General > Frameworks, Libraries, and Embedded Content, configure
nuisdk.xcframeworken Embed & Sign. - Abra el proyecto en Xcode. El código de ejemplo se encuentra en
DashQwenAudioChatViewController.m. Reemplace la clave API para probar la función.
Procedimiento de llamada
- Inicialice el SDK.
- Configure los parámetros para su caso de uso. Utilice el argumento
parametersde nui_initialize para establecer los parámetros de conexión y control, y utilice nui_set_params para establecer los parámetros de conversación de voz. - Llame a nui_dialog_start para iniciar la conversación.
- En onNuiAudioStateChanged, inicie el dispositivo de grabación según el estado del audio.
- Suministre datos de grabación continuamente en onNuiNeedAudioData, o llame a nui_update_audio_data para enviar activamente los datos de grabación.
- Reciba continuamente el audio devuelto por el modelo en onNuiAssistEventCallback.
- Escuche los eventos y obtenga la información de los mismos en onNuiEventCallback.
- Llame a nui_dialog_cancel para detener la conversación y escuche
EVENT_TRANSCRIBER_COMPLETEpara confirmar que ha finalizado. - Cuando la función de conversación ya no sea necesaria, llame a nui_release para liberar los recursos del SDK.
Parámetros de solicitud
Parámetros de conexión y control
Pase una cadena JSON en el argumento parameters de nui_initialize.
Ejemplo: La siguiente cadena JSON no enumera todos los parámetros. Agregue los parámetros según sea necesario para su caso de uso.
{
"url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
"apikey": "st-****",
"device_id": "my_device_id",
"service_mode": "1"
}
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
|
| Sí | Endpoint del servicio:
{WorkspaceId} con su ID de espacio de trabajo. |
|
| Sí | Clave de API. |
|
| Sí | Modo de ejecución. Establezca este parámetro en |
|
| Sí | Una cadena única que identifica al usuario final. Puede utilizar un ID de usuario dentro de la aplicación o un identificador de dispositivo generado por el cliente. Este ID se utiliza principalmente para el rastreo de registros y la solución de problemas. |
|
| No | Indica si se deben enviar activamente datos de audio. Valor predeterminado: |
|
| No | La ruta de almacenamiento para los archivos de recursos en el dispositivo. Este parámetro es obligatorio cuando |
|
| No | La ruta de almacenamiento del archivo de registro. Este parámetro solo surte efecto cuando |
|
| No | Indica si se debe guardar el audio de depuración en |
|
| No | El tamaño máximo del archivo de registro en bytes. Este parámetro solo surte efecto cuando |
|
| No | El nivel de filtro para los registros enviados a través de |
Parámetros de conversación de voz
Pase una cadena JSON en el argumento params de nui_set_params.
Ejemplo: La siguiente cadena JSON no enumera todos los parámetros. Agregue los parámetros según sea necesario para su caso de uso.
{
"service_type": 4,
"nls_config": {
"model": "qwen-audio-3.1-realtime-plus",
"sr_format": "pcm"
}
}
Parámetros
| Parámetro de nivel superior | Tipo | Obligatorio | Descripción |
|---|---|---|---|
|
| Sí | Tipo de servicio de voz. Establezca este parámetro en |
|
| Sí | Configuración principal de la conversación de voz, incluida la selección del modelo y el comportamiento de la conversación. |
|
| Sí | Nombre del modelo. Admite las series de modelos |
|
| Sí | Formato de audio de entrada. Solo se admite |
|
| No | Una cadena que contiene una matriz de modalidades de salida. Valores válidos:
|
|
| No | Voz TTS. El valor predeterminado es 3.1 Plus también admite |
|
| No | Indica si se debe habilitar la expresión emocional mejorada. Cuando está habilitada, la voz de respuesta presenta una variación emocional más notable. Valor predeterminado: |
|
| No | Instrucciones del sistema que definen el rol del modelo, el estilo de respuesta y las preferencias de comportamiento para toda la sesión. |
|
| No | Número máximo de turnos históricos de preguntas y respuestas permitidos en una solicitud. Valores válidos: de 1 a 50. Predeterminado: |
|
| No | Una cadena que contiene una matriz de definiciones de herramientas de Function Calling. Después de configurar este parámetro, el modelo decide si llamar a una herramienta basándose en la entrada del usuario. Cada definición utiliza |
|
| No | Una cadena que contiene un objeto JSON para la detección de turnos. Si se omite, la sesión utiliza el modo pulsar para hablar, en el cual el audio se confirma y la inferencia se activa manualmente. Si se establece, se habilita el modo de conversación dúplex. |
|
| No | Tipo de VAD. |
|
| No | Sensibilidad de VAD. Este parámetro solo se aplica a |
|
| No | Duración mínima de silencio después del habla, en milisegundos, antes de que se active la respuesta del modelo. Este parámetro solo se aplica a |
|
| No | Una cadena que contiene una matriz de URL de audio pregrabado de acceso público para el hablante objetivo. Este parámetro solo se aplica a |
API clave
NeoNui
nui_initialize
Inicializa la instancia del SDK de conversación de voz. El SDK es un singleton. No lo inicialice de nuevo antes de llamar a nui_release.
Firma del método-(NuiResultCode) nui_initialize:(const char *)parameters
logLevel:(NuiSdkLogLevel)level
saveLog:(BOOL)save_log;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
| Una cadena JSON que contiene parámetros de autenticación, conexión y depuración. Consulte Parámetros de conexión y control. |
|
| Nivel de impresión para los propios registros del SDK. |
| BOOL | Si se deben guardar los registros localmente. Si se establece en |
nui_set_params
Establece los Parámetros de conversación de voz en formato JSON. Llame a este método antes de nui_dialog_start.
Firma del método-(NuiResultCode) nui_set_params:(const char *)params;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
|
nui_dialog_start
Inicia la conversación.
Firma del método-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
dialogParam:(const char *)dialog_params;
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
|
| Modo VAD. Fijo en |
|
| Si |
nui_dialog_cancel
Finaliza la conversación o cancela inmediatamente la interacción actual.
Firma del método-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
| Si se debe finalizar forzosamente y descartar el resultado final.
|
nui_dialog_action
Envía un comando de acción de conversación durante una interacción para actualizar el comportamiento en tiempo de ejecución, como el contexto de la conversación.
Firma del método- (NuiResultCode) nui_dialog_action:(const char *)params;
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
|
| Una cadena JSON utilizada para actualizar el comportamiento en tiempo de ejecución, como el contexto de la conversación. |
|
| Establecido en |
|
| Comando de tiempo de ejecución. Valores válidos:
|
|
| Actualización de solicitud de llamada de función. Se usa cuando |
|
| Tipo de evento. Este parámetro es obligatorio cuando |
|
| Requerido cuando |
|
| Opcional cuando |
Parámetros de context.item:
| Parámetro | Tipo | Descripción |
|---|---|---|
|
| ID de elemento de conversación único opcional. Si se omite, el servidor genera uno. Se devuelve un error si el ID especificado ya existe. |
|
| Tipo de elemento obligatorio. Valores válidos:
|
|
| Requerido para |
|
| Obligatorio para |
|
| Requerido para |
|
| Requerido para |
|
| Requerido para |
|
| Requerido para |
Parámetros de context.response:
| Parámetro | Tipo | Descripción |
|---|---|---|
|
| Modalidades de salida. |
|
| Anula la voz TTS para esta inferencia. |
Ejemplo:
{
"type": "action",
"command": "function_call",
"context": {
"item": {
"call_id": "call_xxxx",
"output": "{\"city\":\"Hangzhou\",\"condition\":\"sunny\",\"temperature\":18}",
"type": "function_call_output"
},
"type": "conversation.item.create"
}
}
{
"type": "action",
"command": "function_call",
"context": {
"response": {
"modalities": ["text", "audio"]
},
"type": "response.create"
}
}
nui_update_audio_data
Cuando audio_update_manually se establece en "true", los datos de grabación ya no se suministran a través de onNuiNeedAudioData. Utilice este método para enviarlos activamente en su lugar.
-(NuiResultCode) nui_update_audio_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
| Los datos de audio a enviar. |
|
| La longitud de los datos de audio, en bytes. |
|
| No necesita utilizar este parámetro. |
nui_push_reference_data
Cuando audio_update_manually se establece en "true" y la cancelación de eco acústico (AEC) en el dispositivo está habilitada, utilice este método para enviar el audio reproducido por el reproductor como señal de referencia.
-(NuiResultCode) nui_push_reference_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
| Los datos de audio a enviar. |
|
| La longitud de los datos de audio, en bytes. |
|
| No necesita utilizar este parámetro. |
nui_release
Libera todos los recursos internos del SDK y termina forzosamente todas las tareas en ejecución. Después de llamar a este método, la instancia del SDK deja de estar disponible. Para utilizarla de nuevo, debe llamar a nui_initialize para inicializarla nuevamente.
Firma del método-(NuiResultCode) nui_release;
nui_get_version
Obtiene la versión actual del SDK. Este método devuelve un valor solo después de llamar a nui_initialize.
-(const char*) nui_get_version;
Valor de retorno
La versión actual del SDK.
nui_get_all_response
Obtiene la información completa para la devolución de llamada del evento actual.
Firma del método-(const char*) nui_get_all_response;
Valor de retorno
La información completa del evento como una cadena JSON.
NeoNuiSdkDelegate: listeners de devolución de llamada
onNuiEventCallback: escucha de información de eventos
Firma del método-(void) onNuiEventCallback:(NuiCallbackEvent)nuiEvent
dialog:(long)dialog
kwsResult:(const char *)wuw
asrResult:(const char *)asr_result
ifFinish:(BOOL)finish
retCode:(int)code;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
| Evento de callback. | |
|
| ID de sesión. No necesita utilizar este parámetro. |
|
| Activación por voz. No necesita utilizar este parámetro. |
|
| Resultado del reconocimiento de voz. |
|
| Si la ronda de reconocimiento actual ha finalizado. |
|
| Válido solo cuando ocurre el evento |
onNuiAudioStateChanged: escucha del estado de audio
El SDK utiliza esta devolución de llamada para notificarle cuándo iniciar o detener la grabación.
Firma del método-(void) onNuiAudioStateChanged:(NuiAudioState)state;
Estados NuiAudioState
Parámetro | Descripción |
|---|---|
| La interacción ha comenzado. Puede abrir el dispositivo de grabación e iniciar la grabación. |
| La interacción se ha detenido. Puede detener la grabación. |
| La instancia del SDK ha sido liberada. Puede cerrar el dispositivo de grabación por completo. |
onNuiNeedAudioData: suministro de datos de audio
Después de que comienza la conversación, esta devolución de llamada se activa continuamente. Proporcione los datos de audio en esta devolución de llamada. No necesita utilizar esta devolución de llamada cuando audio_update_manually está establecido en "true".
-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
| Los datos de audio a suministrar. |
|
| El tamaño de los datos de audio suministrados, en bytes. |
onNuiAssistEventCallback: recepción de datos e información auxiliar
Recibe eventos auxiliares y datos relacionados del SDK.
Firma del método-(void) onNuiAssistEventCallback:(NuiCallbackEvent)nuiEvent
info:(char*)info
infoLen:(int)info_len
buffer:(char*)buffer
len:(int)len;
Descripciones de parámetros
Parámetro | Tipo | Descripción |
|---|---|---|
|
| El evento de devolución de llamada. |
|
| No necesita utilizar este parámetro. |
|
| No necesita utilizar este parámetro. |
|
| Datos auxiliares, como el audio TTS devuelto por el modelo. |
|
| La longitud de los datos auxiliares, en bytes. |
onNuiLogTrackCallback: escuchar registros de seguimiento
Esta devolución de llamada recibe los registros internos detallados del SDK para ayudarle a localizar y depurar problemas.
-(void) onNuiLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
NuiCallbackEvent: tipos de eventos
| Evento | Descripción |
|---|---|
| La tarea se inició correctamente. |
| Se activa inmediatamente después de que comienza la tarea. Esto no significa que se haya detectado el inicio del habla. |
| Se detectó el final del habla. |
| Un resultado intermedio del reconocimiento de voz. |
| Ocurrió un error durante la conversación de voz. |
| Se activa cuando no se reciben datos de audio durante dos segundos consecutivos. |
| Se detectó el final de una oración y se devolvió un resultado de reconocimiento completo. |
| La conversación de voz finalizó. |
| Un evento de transcripción de texto incremental para la salida de audio. Los segmentos de transcripción se devuelven en modo streaming. |
| La transcripción de la salida de audio está completa. |
| Otra información de eventos, como un resultado de Function Calling. |
| El modelo comenzó a devolver audio TTS. |
| Audio TTS devuelto por el modelo. |
| El modelo terminó de devolver audio TTS. |
| Datos de audio procesados por AEC. |