All Products
Search
Document Center

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

Last Updated:Oct 30, 2026

Fun-ASR-Flash non-real-time speech recognition HarmonyOS 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. For security, we recommend that you configure the API key in an environment variable.
  2. Download the SDK and run the sample code:
    • Download the latest SDK bundle.
    • Extract the TAR archive. Obtain the SDK in HAR format from neonui and add it to your project dependencies. For C++ integration, use native/libs and native/include in the TAR archive to obtain the dynamic libraries and header files.
    • Open the project in DevEco Studio. The sample code is in DashFunAsrFlashFileTranscriberPage.ets. 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 startFileTranscriber to send a non-real-time speech recognition request and wait for the result.

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

  5. Call release to release SDK resources

Request parameters

Connection and control parameters

Pass a JSON string to the initializeFileTrans 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://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
Parameters
ParameterTypeRequiredDescription

url

string

Yes

The service endpoint. Set this parameter to wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation. Replace {WorkspaceId} with your actual Workspace ID.

apikey

string

Yes

The API key. We recommend using a short-lived, more secure temporary API key to reduce the risk of exposing a long-lived 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 initializeFileTrans with save_log set to true. 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

number

No

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

Recognition parameters

Use setParams to configure nls_config parameters, or use startFileTranscriber 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

NativeNui

initializeFileTrans

Initialize the speech recognition SDK instance.

NoteUnlike real-time speech recognition, non-real-time (recorded-file) transcription requires initializeFileTrans with an INativeFileTransCallback callback instead of initialize.

This method blocks. Call it from a non-UI thread.

Method signature
public initializeFileTrans(callback: INativeFileTransCallback,
                           parameters: string,
                           level: number,
                           save_log: boolean = false): number
Parameters
ParameterTypeDescription

callback

INativeFileTransCallback

The implementation of the file transcription event and data callback interface.

parameters

string

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

level

number

The SDK log level. Use a value from the enumeration.

save_log

boolean

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

setParams

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

Method signature
public setParams(params: string): number
Parameters
ParameterTypeDescription

params

string

Recognition parameters in nls_config parameters; parameters outside nls_config cannot be set with this method.

startFileTranscriber

Start recognition.

Method signature
public startFileTranscriber(params: string, task_id: ArrayBuffer): number
Parameters
ParameterTypeDescription

params

string

Recognition parameters.

Example:

{
 "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"
 }
}

task_id

ArrayBuffer

The task ID buffer. The SDK writes an internally generated random task ID string to this buffer. Its byte length must be >= 33 bytes (the example uses new ArrayBuffer(64)). After a successful call, decode the buffer to obtain the task's task_id.

queryFileTranscriber

Use this method to query the current status and result of an asynchronous task. After a successful call, the result is returned through the onFileTransEventCallback callback's EVENT_FILE_TRANS_QUERY_RESULT event.

Method signature
public queryFileTranscriber(task_id: string): number
Parameters
ParameterTypeDescription

task_id

string

The ID of the task to query (written to the buffer by startFileTranscriber ).

cancelFileTranscriber

Immediately cancel the current task.

Method signature
public cancelFileTranscriber(task_id: string): number
Parameters
ParameterTypeDescription

task_id

string

The ID of the task to cancel.

release

Release all internal SDK resources. After this call, the SDK instance becomes unavailable. To use it again, call initializeFileTrans to initialize it again.

Method signature
public release(): number

GetVersion

Get the current SDK version.

Method signature
public GetVersion(): string
Return value

The current SDK version.

INativeFileTransCallback: Callbacks

onFileTransEventCallback: Listen for events and recognition results

Method signature
onFileTransEventCallback: (event: Constants.NuiEvent, resultCode: number, finish: number,
                           asrResult: AsrResult, taskId: string) => void;
Parameters
ParameterTypeDescription

event

Constants.NuiEvent

The callback event.

resultCode

number

Valid only when the EVENT_ASR_ERROR event occurs.

finish

number

Whether the task has finished.

asrResult

AsrResult

The speech recognition result.

taskId

string

The task ID.

onFileTransLogTrackCallback: Listen for tracing logs

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

To use this callback, download the HarmonyOS SDK package dated 20260908 or later.

onFileTransLogTrackCallback?: (level: Constants.LogLevel, log: string) => void;

Event types

In the HarmonyOS SDK, event types are defined by the Constants.NuiEvent enumeration. The following events are related to recorded-file transcription:

EventDescription

EVENT_FILE_TRANS_CONNECTED

Successfully connected to the service.

EVENT_FILE_TRANS_UPLOADED

The audio file was uploaded successfully.

EVENT_FILE_TRANS_QUERY_RESULT

The task query result.

EVENT_FILE_TRANS_RESULT

The final recognition result.

EVENT_ASR_ERROR

An error occurred during speech recognition.