All Products
Search
Document Center

Alibaba Cloud Model Studio:Non-real-time speech recognition (Fun-ASR-Flash) iOS SDK

Last Updated:Oct 30, 2026

Fun-ASR-Flash non-real-time speech recognition iOS SDK converts speech to text.

For supported audio formats, file size limits, duration limits, and other input requirements, see Audio specifications.

Quick start

  1. Get an API key: Get an API key
  2. Download the SDK and run the sample code:
    • Download the latest SDK bundle.
    • Extract the ZIP archive and add nuisdk.framework to the project.
    • Add nuisdk.xcframework in Build Phases → Link Binary With Libraries.
    • In General → Frameworks, Libraries, and Embedded Content, set nuisdk.xcframework to Embed & Sign.
    • Open the sample project in Xcode. The sample code is in DashFunAsrFlashFileTranscriberViewController.m. Replace the API key to try the feature.

Call procedure

Synchronous mode

  1. Initialize the SDK

  2. Configure the parameters based on your business requirements

  3. Call nui_file_trans_start to send a non-real-time speech recognition request.

  4. Use onFileTransEventCallback to listen for the EVENT_FILE_TRANS_RESULT event and obtain the final recognition result

  5. Call nui_release to release SDK resources

Request parameters

Connection and control parameters

Pass a JSON string to the nui_initialize method's parameters parameter to configure these settings.

Parameter example: The following JSON string is an example and does not list all parameters. Add parameters as needed in your code:

{
    "url": "wss://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
Parameters
ParameterTypeRequiredDescription

url

String

Yes

Service endpoints:

  • wss://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
  • China (Beijing): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

  • Singapore: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Replace {WorkspaceId} with your actual Workspace ID.

apikey

String

Yes

API Key.

service_mode

String

Yes

The operating mode. For non-real-time speech recognition, set this parameter to "1".

device_id

String

Yes

A unique string that identifies the end user. You can use an in-app user ID or a client-generated unique device identifier. This ID is mainly used for log tracing and troubleshooting.

debug_path

String

No

The path for log files. This parameter takes effect only when you call nui_initialize with save_log set to YES. In this case, you must specify the log file path. Otherwise, an error occurs. Up to two log files are retained locally.

max_log_file_size

int

No

The maximum log file size in bytes. This parameter takes effect only when you call nui_initialize with save_log set to YES. Default: 104857600 (100 * 1024 * 1024 bytes, or 100 MiB).

log_track_level

int

No

The filtering level for logs sent through the logging callback (onFileTransLogTrackCallback). Default: 2. Valid values:

  • 0: LOG_LEVEL_VERBOSE
  • 1: LOG_LEVEL_DEBUG
  • 2: LOG_LEVEL_INFO
  • 3: LOG_LEVEL_WARNING
  • 4: LOG_LEVEL_ERROR
  • 5: LOG_LEVEL_NONE (disables this feature).

Notelog_track_level and level (configured through nui_initialize method) jointly determine which logs are delivered. The numeric level of a log must be greater than or equal to both log_track_level and level for the log to be delivered. For example, if log_track_level is set to 2 (INFO) and level is set to 3 (WARNING), only WARNING and higher-severity logs (numeric level >= 3) are delivered.

Recognition parameters

Use nui_file_trans_start to configure all recognition parameters.

Parameter example: The following JSON string is an example and does not list all parameters. Add parameters as needed in your code:

{
  "apikey": "st-****",
  "messages": [
    {
      "content": [
        {
          "input_audio": {
            "data": "{YOUR_AUDIO_URL}"
          },
          "type": "input_audio"
        }
      ],
      "role": "user"
    }
  ],
  "nls_config": {
    "format": "mp3",
    "model": "fun-asr-flash-2026-06-15"
  }
}
Parameters
ParameterTypeRequiredDescription

apikey

string

No

If Connection and control parameters apikey uses temporary API key, you can update it here to prevent expiration.

nls_config

object

Yes

The core speech recognition configuration object, including the model and parameters that control recognition.

nls_config.model

string

Yes

The model name.

nls_config.format

string

Yes

The audio format. Set this parameter to the actual format. Supported formats include wav, mp3, opus. For details, see Audio specifications.

nls_config.sample_rate

string

No

The audio sample rate in Hz. For example, 16000 indicates a sample rate of 16 kHz. For details, see Audio specifications.

nls_config.vocabulary_id

string

No

The precompiled vocabulary ID. Create a vocabulary in advance and pass its ID during recognition to use its hotwords. Use this option when the vocabulary is known, relatively stable, and reused across requests. For usage instructions, see Precompiled hotwords.

nls_config.language_hints

array[string]

No

The language codes to recognize. If the language is unknown in advance, omit this parameter to let the model detect it automatically. You can set up to 1 value. If you set more, only the first 1 take effect.

Supported language codes

  • zh: Chinese
  • en: English
  • ja: Japanese
  • ko: Korean
  • vi: Vietnamese
  • th: Thai
  • id: Indonesian
  • ms: Malay
  • tl: Filipino
  • hi: Hindi
  • ar: Arabic
  • fr: French
  • de: German
  • es: Spanish
  • pt: Portuguese
  • ru: Russian
  • it: Italian
  • nl: Dutch
  • sv: Swedish
  • da: Danish
  • fi: Finnish
  • no: Norwegian
  • el: Greek
  • pl: Polish
  • cs: Czech
  • hu: Hungarian
  • ro: Romanian
  • bg: Bulgarian
  • hr: Croatian
  • sk: Slovak

messages

array[object]

Yes

The list of messages. It contains the audio to recognize and optional conversation context to improve recognition.

See the following descriptions.
messages parameters:

ImportantContext improves the recognition accuracy of specialized terms. For usage instructions, see Context enhancement.

Context messages (input_text and text types) are limited to five each. If the limit is exceeded, only the five most recent messages are retained. The total context text length per turn (the sum of the user and assistant text field lengths) must not exceed 400 characters. Each character counts as one. Excess characters are truncated from the end.

ImportantWhen context is included, messages messages must follow a specific order. Arrange context messages by conversation turn. Within each turn, user (input_text type) must precede the corresponding assistant (text type). The input_audio user message containing input audio must be placed at the end of messages .

ParameterTypeRequiredDescription

role

string

Yes

The message role. Valid values:

  • user (required): A user message. When type is input_audio, it represents the audio to recognize. When type is input_text, it represents recognition results from previous turns or a domain-specific vocabulary (optional context).

  • assistant (optional context): Large language model responses from previous turns.

content

array[object]

Yes

The list of message content. See the following descriptions.

content parameters:
ParameterTypeRequiredDescription

type

string

Yes

The content type. Each request requires at least one input_audio message. Valid values:

  • input_audio (required): The audio input to recognize (role is user). You must also provide the input_audio object.

  • input_text (optional context): Recognition results of user speech from previous turns or a domain-specific vocabulary (role is user). You must also provide the text field.

  • text (optional context): Large language model responses from previous turns (role is assistant). You must also provide the text field.

input_audio

object

No

Required when type is input_audio.

input_audio.data

string

Yes

The audio data to recognize. For supported audio formats, file size limits, duration limits, and other input requirements, see Audio specifications. The following two input methods are supported:

  • Audio file URL: Pass a publicly accessible audio file URL.

  • Base64 Data URI: Pass Base64-encoded audio as a Data URI. Concatenate the data:{MIME_TYPE};base64, prefix with the Base64-encoded audio data. Supported MIME types include audio/wav, audio/mp3.

Example (URL): https://example.com/audio/sample.wav

Example (Base64): data:audio/wav;base64,{BASE64_ENCODED_DATA}

text

string

No

Required when type is input_text, provide recognition results of user speech from previous turns or a domain-specific vocabulary. When type is text, provide large language model responses from previous turns. Text length is counted in characters, with each character counting as one. The total length of all messages' text fields in each context turn must not exceed 400 characters. Excess characters are truncated from the end.

Key interfaces

NeoNui

nui_initialize

Initialize the speech recognition SDK instance. The SDK uses a singleton. Do not initialize it again before calling nui_release .

Method signature
- (NuiResultCode) nui_initialize:(const char *)parameters
                       logLevel:(NuiSdkLogLevel)level
                        saveLog:(BOOL)save_log;
Parameters
ParameterTypeDescription

parameters

char*

A JSON string containing authentication, connection, and debugging parameters. See Connection and control parameters.

level

NuiSdkLogLevel

The level of logs printed by the SDK.

save_log

BOOL

Whether to save logs locally. If set to YES, use Connection and control parameters to set debug_path to specify the path, and use max_log_file_size to set the file size.

nui_set_params

Use this method to set or update nls_config separately. You do not need to call this method if all parameters are provided in nui_file_trans_start in a single call.

Method signature
- (NuiResultCode) nui_set_params:(const char *)params;
Parameters
ParameterTypeDescription

params

char*

Recognition parameters in nls_config and messages parameters.

Example:

{
  "messages": [
    {
      "content": [
        {
          "input_audio": {
            "data": "{YOUR_AUDIO_URL}"
          },
          "type": "input_audio"
        }
      ],
      "role": "user"
    }
  ],
  "nls_config": {
    "format": "mp3",
    "model": "fun-asr-flash-2026-06-15"
  }
}

nui_file_trans_start

Start recognition.

Method signature
- (NuiResultCode) nui_file_trans_start:(const char *)params
                             taskId:(char *)task_id;
Parameters
ParameterTypeDescription

params

char*

Recognition parameters. Example:

{
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_audio",
          "input_audio": {
            "data": "{YOUR_AUDIO_URL}"
          }
        }
      ]
    }
  ],
  "nls_config": {
    "format": "mp3",
    "model": "fun-asr-flash-2026-06-15"
  }
}

task_id

char*

You can ignore this parameter and pass null.

nui_file_trans_query

This non-real-time speech recognition feature only supports synchronous requests. You can ignore this method.

Method signature
- (NuiResultCode) nui_file_trans_query:(const char *)task_id;
Parameters
ParameterTypeDescription

task_id

char*

The ID of the task to query, obtained from EVENT_FILE_TRANS_UPLOADED.

nui_file_trans_cancel

Immediately cancel the current task.

Method signature
- (NuiResultCode) nui_file_trans_cancel:(const char *)task_id;
Parameters
ParameterTypeDescription

task_id

char*

The ID of the task to cancel, obtained from EVENT_FILE_TRANS_UPLOADED.

nui_release

Release all internal SDK resources and forcibly stop all ongoing tasks. After this call, the SDK instance becomes unavailable. To use it again, call nui_initialize to initialize it again.

Method signature
- (NuiResultCode) nui_release;

nui_get_version

Get the current SDK version.

Method signature
- (const char*) nui_get_version;
Return value

The current SDK version.

NeoNuiSdkDelegate: Callbacks

onFileTransEventCallback: Listen for events and recognition results

Method signature
- (void) onFileTransEventCallback:(NuiCallbackEvent)nuiEvent
                       asrResult:(const char *)asr_result
                          taskId:(const char *)task_id
                        ifFinish:(BOOL)finish
                         retCode:(int)code;
Parameters
ParameterTypeDescription

nuiEvent

NuiCallbackEvent

The callback event.

asr_result

char*

The speech recognition result.

task_id

char*

The task ID.

finish

BOOL

Whether recognition for this turn has finished.

code

int

Valid only when the EVENT_ASR_ERROR event occurs.

onFileTransLogTrackCallback: Listen for tracing logs

This callback receives detailed internal SDK logs for troubleshooting and debugging.

- (void)onFileTransLogTrackCallback:(NuiSdkLogLevel)level
                        logMessage:(const char *)log;

NuiCallbackEvent: Event types

EventDescription

EVENT_FILE_TRANS_CONNECTED

Successfully connected to the service.

EVENT_FILE_TRANS_UPLOADED

The audio file was uploaded successfully. You can obtain the current task_id at this point.

EVENT_FILE_TRANS_RESULT

The final recognition result.

EVENT_ASR_ERROR

An error occurred during speech recognition.