Esta guía le muestra cómo utilizar el SDK de iOS para reconocimiento de voz en tiempo real de Fun-ASR-Realtime para transcribir voz a texto.
Inicio rápido
-
Obtener una clave de API: Obtener una clave de 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 el nuisdk.xcframework incluido a su proyecto.
- En Build Phases → Link Binary With Libraries, agregue nuisdk.xcframework.
- En General → Frameworks, Libraries, and Embedded Content, configure nuisdk.xcframework en Embed & Sign.
- Abra el proyecto de ejemplo en Xcode. El código de ejemplo se encuentra en
DashFunAsrSpeechTranscriberViewController.m. Reemplace la clave API por la suya propia para probar la función.
Secuencia de llamadas
- Inicialice el SDK.
- Configure los parámetros para su caso de uso: utilice la API
nui_initializepara establecer los Parámetros de conexión y control, y utilice la APInui_set_paramspara establecer los Parámetros de calidad de reconocimiento. - Llame a
nui_dialog_startpara iniciar el proceso de reconocimiento. - En la devolución de llamada
onNuiAudioStateChanged, abra el dispositivo de grabación según el estado del audio. - En la devolución de llamada
onNuiNeedAudioData, suministre datos de grabación continuamente o llame anui_update_audio_datapara enviar activamente los datos de grabación. - En la devolución de llamada
onNuiEventCallback, escuche los eventos y recupere los resultados del reconocimiento de voz. - Llame a
nui_dialog_cancelpara detener el reconocimiento y confirme que el reconocimiento ha finalizado escuchando el evento EVENT_TRANSCRIBER_COMPLETE. - Cuando ya no necesite la función de reconocimiento, llame a
nui_releasepara liberar los recursos del SDK.
Parámetros de solicitud
Parámetros de conexión y control
Configure estos parámetros pasando una cadena JSON en el argumento parameters de la API nui_initialize.
Parámetros de ejemplo: La siguiente cadena JSON es un ejemplo y no enumera todos los parámetros. Agregue los parámetros que necesite al escribir su código:
{
"url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
"apikey": "st-****",
"device_id": "my_device_id",
"service_mode": "1"
}
Descripciones de parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
url | String | Sí | Dirección del servicio:
{WorkspaceId} con su ID de espacio de trabajo real. |
apikey | String | Sí | Clave de API. |
service_mode | String | Sí | Modo de ejecución. Fijado en "1" para reconocimiento de voz en tiempo real. |
device_id | String | Sí | Una cadena única que identifica al usuario final. Puede configurarla como un ID de usuario dentro de la aplicación o un identificador de dispositivo generado en el cliente. Este ID se utiliza principalmente para el rastreo de registros y la solución de problemas. |
audio_update_manually | String | No | Si se debe habilitar el envío activo de datos de audio. Predeterminado: "false".Si se establece en "true" y la versión del SDK admite capacidades de procesamiento de audio en el dispositivo, como AEC o VAD, dichas capacidades se habilitan de forma predeterminada. |
workspace | String | No | La ruta donde se almacenan los archivos de recursos en el dispositivo. Este parámetro es obligatorio cuando audio_update_manually se establece en "true" y está habilitada una capacidad de procesamiento de audio en el dispositivo, como AEC o VAD. |
debug_path | String | No | Ruta de almacenamiento para el archivo de registro.Este parámetro solo surte efecto cuando save_log se establece en YES en la API nui_initialize. En ese caso, debe configurar la ruta del archivo de registro; de lo contrario, se producirá un error.Se conservan como máximo dos archivos de registro localmente. |
save_wav | String | No | Indica si se debe guardar un archivo de audio para depuración. El archivo de audio se guarda en debug_path.Predeterminado: "false".Valores válidos:
save_log se establece en true en la API nui_initialize. Además, también se debe establecer debug_path. |
max_log_file_size | int | No | Tamaño máximo del archivo de registro, en bytes.Este parámetro solo surte efecto cuando save_log se establece en YES en la API nui_initialize.Predeterminado: 104857600 (100 * 1024 * 1024 bytes, es decir, 100 MiB). |
log_track_level | int | No | Nivel de filtro para el contenido de registro enviado a través de la devolución de llamada de registro (onNuiLogTrackCallback).Predeterminado: 2.Valores válidos:
log_track_level y level (configurados a través de la API nui_initialize) determinan conjuntamente qué registros se envían finalmente a la devolución de llamada. Un registro se envía a la devolución de llamada solo cuando su valor de nivel es mayor o igual tanto a log_track_level como a level. Por ejemplo, si log_track_level se establece en 2 (INFO) y level se establece en 3 (WARNING), entonces solo los registros de nivel WARNING o superior (valor >= 3) se envían a la devolución de llamada. |
Parámetros de calidad de reconocimiento
Configure estos parámetros pasando una cadena JSON en el argumento params de la API nui_set_params.
Parámetros de ejemplo: La siguiente cadena JSON es un ejemplo y no enumera todos los parámetros. Agregue los parámetros que necesite al escribir su código:
{
"service_type": 4,
"nls_config": {
"model": "fun-asr-realtime",
"sr_format": "pcm",
"sample_rate": "16000"
}
}
Descripciones de parámetros
| Parámetro de nivel superior | Tipo | Obligatorio | Descripción |
|---|---|---|---|
service_type | int | Sí | Tipo de servicio de voz. Fijado en 4 para reconocimiento de voz en tiempo real. |
nls_config | object | Sí | El objeto de configuración de reconocimiento principal. Contiene parámetros clave como la selección del modelo y los controles de calidad del reconocimiento. |
nls_config.model | string | Sí | El nombre del modelo. |
nls_config.sr_format | string | Sí | El formato de audio. Valores válidos:
ImportanteSi proporciona datos de audio PCM y establece este parámetro en |
nls_config.sample_rate | int | Sí | La tasa de muestreo, en Hz. Valores válidos: Los modelos de 8 kHz solo admiten 8000 Hz; otros modelos admiten cualquier frecuencia de muestreo. ImportanteNo se admite 8000 Hz cuando están habilitadas las capacidades de procesamiento de audio en el dispositivo, como AEC o VAD. |
nls_config.max_sentence_silence | int | No | El umbral de silencio del VAD para la segmentación, en ms. Cuando el silencio posterior a un segmento de voz supera este umbral, el sistema determina que la oración ha finalizado. Valor predeterminado: 1300. Valores válidos: [200, 6000]. |
nls_config.multi_threshold_mode_enabled | boolean | No | Si se debe habilitar el modo de umbral múltiple. Cuando está habilitado, esto evita que los segmentos VAD sean demasiado largos. Valor predeterminado: false. |
nls_config.heartbeat | boolean | No | Si se habilitan los paquetes de latido. Valor predeterminado: false.
El audio silencioso se refiere al contenido en un archivo de audio o flujo de datos que no contiene señal de sonido. Puede generar audio silencioso de varias maneras, como utilizando software de edición de audio como Audacity o Adobe Audition, o utilizando una herramienta de línea de comandos como FFmpeg. |
nls_config.vocabulary_id | string | No | El ID de una lista de palabras calientes precompilada. Genere este ID con antelación llamando a la API de creación de lista de palabras clave. Pase el ID durante el reconocimiento para usar las palabras clave de la lista. Adecuado para escenarios donde el vocabulario es conocido y relativamente estable, y donde necesita reutilizar la misma lista de palabras en distintas solicitudes. Para obtener detalles sobre el uso, consulte Palabras clave precompiladas. |
nls_config.language_hints | array[string] | No | El idioma del audio a reconocer. No hay valor predeterminado; si no se establece, el modelo detecta el idioma automáticamente. Puede establecer 1 valor. Si establece más, solo el primer valor surte efecto. Haga clic para ver los códigos de idioma admitidos
|
nls_config.speech_noise_threshold | float | No | El umbral para distinguir el habla del ruido, utilizado para ajustar la sensibilidad de la Detección de Actividad de Voz (VAD). Valores válidos: [-1.0, 1.0]. Descripciones de valores:
Este es un parámetro de configuración avanzada. Ajustarlo puede afectar significativamente los resultados del reconocimiento. Recomendaciones:
|
nls_config.special_word_filter | object | No | Especifica las palabras sensibles que se deben procesar durante el reconocimiento de voz y permite configurar diferentes métodos de procesamiento para cada una. Para más detalles, consulte Filtrado de palabras sensibles. |
nls_config.enable_connection_fast_check | BOOL | No | Si se deben habilitar comprobaciones rápidas de red para que las desconexiones se notifiquen lo antes posible. Valor predeterminado: NO. |
API clave
NeoNui
nui_initialize
Inicializa la instancia del SDK de reconocimiento de voz. El SDK es un singleton. No lo inicialice de nuevo antes de llamar a nui_release.
-(NuiResultCode) nui_initialize:(const char *)parameters
logLevel:(NuiSdkLogLevel)level
saveLog:(BOOL)save_log;
Descripciones de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
parameters | char* | Una cadena JSON que contiene parámetros de autenticación, conexión y depuración. Consulte Parámetros de conexión y control. |
level | NuiSdkLogLevel | Nivel de impresión para los registros propios del SDK. |
save_log | BOOL | Si se deben guardar los registros localmente. Si se establece en YES, especifique una ruta con debug_path en Parámetros de conexión y control, y opcionalmente configure el tamaño del archivo con max_log_file_size. |
nui_set_params
Establece los parámetros de calidad de reconocimiento en formato JSON. Llame a este método antes de nui_dialog_start.
-(NuiResultCode) nui_set_params:(const char *)params;
Descripciones de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
params | char* | Parámetros de calidad de reconocimiento. |
nui_dialog_start
Inicia el reconocimiento.
Firma del método-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
dialogParam:(const char *)dialog_params;
Descripciones de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
vad_mode | NuiVadMode | Modo VAD. Fijado en MODE_P2T. |
dialog_params | char* | Si el parámetro apikey en Parámetros de conexión y control es una clave API temporal, puede actualizarla aquí cuando caduque. También puede proporcionar contexto aquí para mejorar la precisión del reconocimiento mediante la mejora de contexto.El contenido está en formato JSON: |
nui_dialog_cancel
Finaliza el reconocimiento o cancela la interacción actual inmediatamente.
Firma del método-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
Descripciones de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
force | BOOL | Indica si se debe finalizar forzosamente y descartar el resultado final.
|
nui_dialog_action
Envía una acción en tiempo de ejecución para notificar al AEC en el dispositivo el estado de reproducción.
Firma del método-(NuiResultCode) nui_dialog_action:(const char *)action_params;
Descripciones de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
action_params | char* | Una cadena JSON que contiene la acción en tiempo de ejecución. |
action_params.type | String | Fijado en "action". |
action_params.command | String |
|
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 |
|---|---|---|
data | const char * | Los datos de audio a enviar. |
length | int | La longitud de los datos de audio, en bytes. |
first_pack | BOOL | 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 |
|---|---|---|
data | const char * | Los datos de audio a enviar. |
length | int | La longitud de los datos de audio, en bytes. |
first_pack | BOOL | 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.
-(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 eventos y resultados del reconocimiento de voz
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 |
|---|---|---|
nuiEvent | NuiCallbackEvent | Evento de callback. |
dialog | long | ID de sesión. No necesita utilizar este parámetro. |
wuw | char* | Activación por voz. No necesita utilizar este parámetro. |
asr_result | char* | Resultado del reconocimiento de voz. |
finish | BOOL | Indica si la ronda de reconocimiento actual ha finalizado. |
code | int | Válido solo cuando ocurre el evento EVENT_ASR_ERROR. |
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 |
|---|---|
STATE_OPEN | La interacción ha comenzado. Puede abrir el dispositivo de grabación e iniciar la grabación. |
STATE_PAUSE | La interacción se ha detenido. Puede detener la grabación. |
STATE_CLOSE | La instancia del SDK ha sido liberada. Puede cerrar el dispositivo de grabación por completo. |
onNuiNeedAudioData: suministrar datos de audio para el reconocimiento
Después de que comienza el reconocimiento, esta devolución de llamada se activa continuamente. Suministre en ella los datos de audio que se van a reconocer.
Firma del método-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
Descripciones de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
audioData | char * | Los datos de audio a suministrar. |
len | int | 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 |
|---|---|---|
nuiEvent | NuiCallbackEvent | El evento de callback. |
info | char * | No necesita utilizar este parámetro. |
info_len | int | No necesita utilizar este parámetro. |
buffer | char * | Datos auxiliares, como datos de audio después del procesamiento AEC. |
len | int | 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 |
|---|---|
EVENT_TRANSCRIBER_STARTED | La tarea se inició correctamente. |
EVENT_VAD_START | Se activa justo después de que comienza la tarea. No significa que se haya detectado el inicio del habla. |
EVENT_VAD_END | Se detectó el final del habla. |
EVENT_ASR_PARTIAL_RESULT | Un resultado intermedio de reconocimiento de voz. |
EVENT_ASR_ERROR | Ocurrió un error durante el reconocimiento de voz. |
EVENT_MIC_ERROR | Activado porque no se recibieron datos de audio durante 2 segundos consecutivos. |
EVENT_SENTENCE_END | Se detectó el final de una oración. Se devuelve un resultado de reconocimiento completo para la oración. |
EVENT_TRANSCRIBER_COMPLETE | Reconocimiento de voz finalizado. |
EVENT_AEC_DATA | Datos de audio después del procesamiento de cancelación de eco acústico (AEC). |