Skip to main content

SDK de iOS para reconocimiento de voz no en tiempo real de Fun-ASR

Esta guía le muestra cómo utilizar el SDK de iOS para reconocimiento de voz no en tiempo real de Fun-ASR, para que pueda convertir audio en texto.

Para los requisitos de entrada, como formatos de audio compatibles, límites de tamaño de archivo y límites de duración, consulte Especificaciones de audio.

Inicio rápido

  1. Obtener una clave de API:Obtener una clave de API
  2. Descargue el SDK y ejecute el código de ejemplo:
    • Descargue el paquete más reciente del SDK.
    • Descomprima el paquete ZIP y agregue el nuisdk.framework 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 DashFunAsrFileTranscriberViewController.m. Reemplace la API Key para probar la función.

Pasos de llamada

  • Modo síncrono
  • Modo asíncrono
  1. Inicialice el SDK.
  2. Configure los parámetros relevantes para su caso de uso.
  3. Establezca async_request en false y llame a nui_file_trans_start para enviar una solicitud de reconocimiento de voz no en tiempo real y esperar el resultado.
  4. En el callback onFileTransEventCallback, escuche el evento EVENT_FILE_TRANS_RESULT para obtener el resultado final del reconocimiento.
  5. Llame a nui_release para 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 interfaz nui_initialize. Parámetros de ejemplo La siguiente es una cadena JSON de muestra. No se listan todos los parámetros. Agregue los que necesite cuando escriba su código:
{
    "url": "wss://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
Descripciones de parámetros
ParámetroTipoObligatorioDescripción
urlStringSíPuntos de conexión del servicio:
  • wss://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription
  • China (Pekín): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcription
  • Singapur: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription
Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
apikeyStringSíLa clave de API.
service_modeStringSíEl modo de ejecución. Fijado en "1" para reconocimiento de voz no en tiempo real.
device_idStringSíUna cadena única que identifica al usuario final. Configúrela como 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 resolución de problemas.
debug_pathStringNoLa ruta de almacenamiento para el archivo de registro.Este parámetro surte efecto solo cuando save_log se establece en YES al llamar a la interfaz nui_initialize. En ese caso, debe establecer la ruta del archivo de registro; de lo contrario, se devuelve un error.Se mantienen un máximo de dos archivos de registro localmente.
max_log_file_sizeintNoEl tamaño máximo del archivo de registro, en bytes.Este parámetro surte efecto solo cuando save_log se establece en YES al llamar a la interfaz nui_initialize.Valor predeterminado: 104857600 (100 * 1024 * 1024 bytes, es decir, 100 MiB).
log_track_levelintNoControla el nivel de filtro del contenido de registro enviado a través del callback de registro (onFileTransLogTrackCallback).Valor predeterminado: 2.Valores válidos:
  • 0: LOG_LEVEL_VERBOSE
  • 1: LOG_LEVEL_DEBUG
  • 2: LOG_LEVEL_INFO
  • 3: LOG_LEVEL_WARNING
  • 4: LOG_LEVEL_ERROR
  • 5: LOG_LEVEL_NONE (deshabilita esta función)
Nota: log_track_level y level (establecidos a través de la interfaz nui_initialize) determinan conjuntamente qué registros se envían finalmente al callback. El valor de nivel de un registro debe ser mayor o igual tanto a log_track_level como a level antes de ser enviado al callback. Por ejemplo, si log_track_level se establece en 2 (INFO) y level se establece en 3 (WARNING), solo los registros de WARNING o superior (valor >= 3) se envían al callback.

Parámetros de efecto de reconocimiento de voz

Configure todos los parámetros de reconocimiento de voz a través de la interfaz nui_file_trans_start. Parámetros de ejemplo La siguiente es una cadena JSON de muestra. No se listan todos los parámetros. Agregue los que necesite cuando escriba su código:
{
    "apikey": "st-****",
    "file_urls": [
        "{YOUR_AUDIO_URL}"
    ],
    "async_request": false,
    "nls_config": {
        "model":"fun-asr",
        "diarization_enabled": false
    }
}
Descripciones de parámetros
ParámetroTipoObligatorioDescripción
file_urlsarray[string]SíUna lista de URL de los archivos de audio o video a transcribir. Se admiten HTTP y HTTPS. Una sola solicitud admite únicamente una URL. Para los requisitos de entrada, como formatos de audio compatibles, límites de tamaño de archivo y límites de duración, consulte Especificaciones de audio.Si la grabación se almacena en Alibaba Cloud OSS, la API RESTful admite URLs temporales con el prefijo oss://, mientras que el SDK no admite URLs temporales con el prefijo oss://.
  • Una URL temporal es válida durante 48 horas y no se puede usar después de que expire. No la use en producción.
  • La interfaz de credenciales de carga tiene un límite de tasa de 100 QPS y no se puede escalar. No la use en escenarios de producción, alta concurrencia o pruebas de carga.
  • Para producción, utilice almacenamiento estable como Alibaba Cloud OSS para mantener los archivos disponibles a largo plazo y evitar límites de tasa.
  • Si una URL de archivo de audio configurada como una URL pública temporal de OSS no es accesible, configure X-DashScope-OssResourceResolve en enable en el encabezado de la solicitud (no recomendado). El SDK no admite la configuración de encabezados de solicitud.
async_requestbooleanNoIndica si la solicitud de reconocimiento de voz es asíncrona.Valor predeterminado: false.Valores válidos:
  • true: solicitud asíncrona
  • false: solicitud síncrona
apikeystringNoSi la apikey en Parámetros de conexión y control es una clave de API temporal, puede actualizarla aquí para evitar que caduque.
nls_configobjectSíEl objeto de configuración principal de reconocimiento de voz. Contiene parámetros clave como la selección del modelo y los controles de efecto de reconocimiento.
nls_config.modelstringSíEl nombre del modelo.
nls_config.special_word_filterobjectNoLas palabras sensibles a procesar durante el reconocimiento de voz. Puede establecer un método de manejo diferente para cada palabra sensible. Para más detalles, consulte Filtrado de palabras sensibles.
nls_config.channel_idarray[integer]NoEl índice de las pistas de audio a reconocer en un archivo de audio multipista. El índice comienza en 0. Por ejemplo, [0] reconoce la primera pista, y [0, 1] reconoce la primera y la segunda pista simultáneamente. Si omite este parámetro, solo se procesa la primera pista.
Cada pista especificada se factura de forma independiente. Por ejemplo, solicitar [0, 1] para un solo archivo incurre en dos cargos separados.
Valor predeterminado: [0].
nls_config.diarization_enabledbooleanNoSi se debe habilitar la diarización de hablantes. Deshabilitado de forma predeterminada.Se aplica solo a audio monoaural. El audio multicanal no admite la diarización de hablantes.Cuando está habilitado, el resultado del reconocimiento incluye un campo speaker_id que distingue a los diferentes hablantes.
Cuando la diarización de hablantes está habilitada, mantenga la duración del audio dentro de 2 horas. De lo contrario, el reconocimiento puede fallar o agotar el tiempo de espera.
Valor predeterminado: false.Para ver un ejemplo de speaker_id, consulte Descripción del resultado de reconocimiento.
nls_config.speaker_countintegerNo
Surte efecto solo cuando la diarización de hablantes está habilitada (diarization_enabled está configurado en true).
Un valor de referencia para el número de hablantes. El rango válido es un entero de 2 a 100 (inclusive).De forma predeterminada, el número de hablantes se detecta automáticamente. Si configura este valor, solo guía al algoritmo para generar el recuento especificado cuando sea posible y no garantiza ese recuento exacto.Sin valor predeterminado.
nls_config.vocabulary_idstringNoEl ID de una lista de palabras clave 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.instant_vocabularyobjectNoPalabras clave instantáneas. Pase pares clave-valor cuyas claves sean los textos de las palabras clave (string) y cuyos valores sean pesos enteros (integer). No es necesario crear una lista precompilada.Para conocer su uso, consulte Palabras clave instantáneas.
{
  "张三": 5,
  "李四": 5
}
nls_config.language_hintsarray[string]NoLos códigos de idioma a reconocer. Si no puede determinar el idioma con antelación, déjelo sin configurar y el modelo detectará el idioma automáticamente.Puede especificar hasta 1 valor. Si especifica más, solo se aplican los primeros 1.
  • zh: Chino
  • en: Inglés
  • ja: Japonés
  • ko: Coreano
  • vi: Vietnamita
  • th: Tailandés
  • id: Indonesio
  • ms: Malayo
  • tl: Filipino
  • hi: Hindi
  • ar: Árabe
  • fr: Francés
  • de: Alemán
  • es: Español
  • pt: Portugués
  • ru: Ruso
  • it: Italiano
  • nl: Neerlandés
  • sv: Sueco
  • da: Danés
  • fi: Finés
  • no: Noruego
  • el: Griego
  • pl: Polaco
  • cs: Checo
  • hu: Húngaro
  • ro: Rumano
  • bg: Búlgaro
  • hr: Croata
  • sk: Eslovaco

Interfaces clave

NeoNui

nui_initialize

Inicializa la instancia del SDK de reconocimiento de voz. El SDK es un singleton. No lo inicialice nuevamente 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ámetroTipoDescripción
parameterschar*Una cadena JSON que contiene los parámetros de autenticación, conexión y depuración. Consulte Parámetros de conexión y control.
levelNuiSdkLogLevelControla el nivel de impresión de los propios registros del SDK.
save_logBOOLIndica si se guardan los registros localmente. Si se establece en YES, debe especificar una ruta a través de debug_path en Parámetros de conexión y control, y puede establecer el tamaño del archivo a través de max_log_file_size.

nui_set_params

Utilice esta interfaz para establecer o actualizar el parámetro nls_config de forma independiente. Si proporciona todos los parámetros a la vez en nui_file_trans_start, no necesita llamar a este método. Firma del método
-(NuiResultCode) nui_set_params:(const char *)params;
Descripciones de parámetros
ParámetroTipoDescripción
paramschar*El parámetro nls_config en Parámetros de efecto de reconocimiento de voz. Los parámetros distintos de nls_config no se pueden configurar mediante este método.Ejemplo:
{
    "nls_config": {
        "model":"fun-asr",
        "diarization_enabled": false
    }
}

nui_file_trans_start

Inicia el reconocimiento. Firma del método
-(NuiResultCode) nui_file_trans_start:(const char *)params
                               taskId:(char *)task_id;
Descripciones de parámetros
ParámetroTipoDescripción
paramschar*Parámetros de efecto de reconocimiento de voz.Ejemplo:
{
    "file_urls": [
        "{YOUR_AUDIO_URL}"
    ],
    "async_request": false,
    "nls_config": {
        "model":"fun-asr",
        "diarization_enabled": false
    }
}
task_idchar*El ID de la tarea. El SDK genera una cadena aleatoria internamente y devuelve el task_id cuando esta interfaz se llama exitosamente.

nui_file_trans_query

Utilice esta interfaz para consultar activamente el estado actual y el resultado de una tarea asíncrona. Después de una llamada exitosa, el resultado se devuelve a través del evento EVENT_FILE_TRANS_QUERY_RESULT en el callback onFileTransEventCallback.
Obtenga el task_id pasado a este método del evento EVENT_FILE_TRANS_UPLOADED.
Firma del método
-(NuiResultCode) nui_file_trans_query:(const char *)task_id;
Descripciones de parámetros
ParámetroTipoDescripción
task_idchar*El ID de la tarea a consultar, obtenido del evento EVENT_FILE_TRANS_UPLOADED.

nui_file_trans_cancel

Cancela la tarea actual inmediatamente. Firma del método
-(NuiResultCode) nui_file_trans_cancel:(const char *)task_id;
Descripciones de parámetros
ParámetroTipoDescripción
task_idchar*El ID de la tarea a cancelar, obtenido del evento EVENT_FILE_TRANS_UPLOADED.

nui_release

Libera todos los recursos internos del SDK y termina forzosamente todas las tareas en curso. Después de llamar a este método, la instancia del SDK deja de estar disponible. Para usarla nuevamente, debe llamar a nui_initialize otra vez para inicializarla. Firma del método
-(NuiResultCode) nui_release;

nui_get_version

Obtiene la información de la versión actual del SDK. Firma del método
-(const char*) nui_get_version;
Valor de retorno La información de la versión actual del SDK.

NeoNuiSdkDelegate: callbacks de monitoreo

onFileTransEventCallback: monitorear eventos y resultados de reconocimiento de voz

Firma del método
-(void) onFileTransEventCallback:(NuiCallbackEvent)nuiEvent
                       asrResult:(const char *)asr_result
                          taskId:(const char *)task_id
                        ifFinish:(BOOL)finish
                         retCode:(int)code;
Descripciones de parámetros
ParámetroTipoDescripción
nuiEventNuiCallbackEventEl evento de devolución de llamada.
asr_resultchar*El resultado del reconocimiento de voz.
task_idchar*El ID de la tarea.
finishBOOLIndica si ha finalizado esta ronda de reconocimiento.
codeintVálido solo cuando ocurre el evento EVENT_ASR_ERROR.

onFileTransLogTrackCallback: monitorear registros de seguimiento

Utilice este callback para recibir registros internos detallados del SDK para la resolución de problemas y depuración.
-(void)onFileTransLogTrackCallback:(NuiSdkLogLevel)level
                        logMessage:(const char *)log;

NuiCallbackEvent: tipos de eventos

EventoDescripción
EVENT_FILE_TRANS_CONNECTEDConectado al servicio exitosamente.
EVENT_FILE_TRANS_UPLOADEDEl archivo de audio a reconocer se cargó correctamente. Ahora puede obtener el task_id de la tarea actual.
EVENT_FILE_TRANS_QUERY_RESULTEl resultado de la consulta de la tarea.
EVENT_FILE_TRANS_RESULTEl resultado final del reconocimiento.
EVENT_ASR_ERROROcurrió un error durante el reconocimiento de voz.