This guide explains how to use the Paraformer non-real-time speech recognition Android SDK to convert speech to text.
Paraformer models are available only in the China North 2 (Beijing) region. Use an API key created in that region. See Regions and endpoints.
Getting started
- Obtain an API key: Obtain and configure an API key. For security, configure the API key as an environment variable.
You can use a temporary API key to grant temporary access permissions or to strictly control risky operations, such as accessing or deleting sensitive data. A temporary API key is valid for 60 seconds by default and must be retrieved again after it expires.
-
Download the SDK and run the sample code:
- Download the latest SDK package.
- Unzip the package. In the
app/libsdirectory, find the SDK in AAR format and add it to your project dependencies.
For Android C++ integration, use theandroid_libsandandroid_includedirectories in the ZIP package to obtain the dynamic libraries and header files. - Open the project in Android Studio. The sample code is located in
DashParaformerFileTranscriberActivity.java. Replace the API key and test the feature.
Invocation steps
- Synchronous mode
- Asynchronous mode
- Initialize the SDK.
- Configure the parameters as needed.
- You can start a synchronous recognition task by calling
startFileTranscriberwithasync_requestset tofalse. - In the
onFileTransEventCallbackinterface, you can listen for theEVENT_FILE_TRANS_RESULTevent to obtain the final recognition result. - You can call
releaseto release SDK resources.
Request parameters
Connection and control parameters
To configure these settings, pass a JSON string to the parameters parameter of the initialize interface.
- Example: The following JSON string is an example that does not list all available parameters. Add parameters as needed.
- Parameter descriptions
| Parameter | Type | Required | Description |
|---|---|---|---|
url | String | Yes | The endpoint. This is fixed at wss://cn-beijing.maas.qwencloudapi.com/api-ws/v1/inference. |
apikey | String | Yes | The API key. Use a more secure temporary API key with a short validity period to reduce the risk of leaking a long-term key. |
service_mode | String | Yes | The operating mode. For non-real-time speech recognition, this is fixed at "1". |
device_id | String | Yes | A unique string that identifies the end user. You can set this to an in-app user ID or a unique device identifier generated by the client. This ID is mainly used for log tracking and troubleshooting. |
debug_path | String | No | The storage path for log files. This parameter is effective only if you set save_log to true when you call the initialize interface. In this case, you must specify a log file path. Otherwise, an error occurs.A maximum of two log files are kept locally. |
max_log_file_size | int | No | Sets the maximum size of a log file in bytes. This parameter is effective only if you set save_log to true when you call the initialize interface.Default value: 104857600 (100 × 1024 × 1024 bytes, or 100 MiB). |
log_track_level | int | No | Controls the filtering level of log content sent externally through the log callback (onFileTransLogTrackCallback).Default value: 2. Valid values:
log_track_level and level (set through the initialize interface) together determine which logs are sent to the callback. A log's level value must be greater than or equal to both the log_track_level and level values to trigger the callback. For example, if you set log_track_level to 2 (INFO) and level to 3 (WARNING), only logs at the WARNING level or higher (value >= 3) trigger the callback. |
Speech recognition effect parameters
Use the setParams interface to configure the nls_config parameter. You can also use the startFileTranscriber interface to configure all speech recognition effect parameters.
- Example: The following JSON string is an example that does not list all available parameters. Add parameters as needed.
- Parameter descriptions
| Parameter | Type | Required | Description |
|---|---|---|---|
file_urls | array[string] | Yes | A list of URLs for the audio or video files to transcribe. The HTTP and HTTPS protocols are supported. A single request supports only 1 URL. If audio files are stored in Alibaba Cloud OSS, the SDK does not support temporary URLs with the oss:// prefix.
|
async_request | boolean | No | Specifies whether the speech recognition is an asynchronous request. Default value: false. Valid values:
|
apikey | string | No | If the apikey in the Connection and control parameters is a temporary API key, you can update it here to prevent it from expiring. |
nls_config | object | Yes | The core configuration object for speech recognition. It includes key parameters such as model selection and recognition effect control. |
nls_config.model | string | Yes | The speech recognition model. |
nls_config.language_hints | array[string] | No | Specifies the language codes of the speech to be recognized. This parameter applies only to the paraformer-v2 model. Default value: ["zh", "en"]. Supported language codes:
|
nls_config.disfluency_removal_enabled | boolean | No | Specifies whether to filter disfluent words, such as "um" and "ah". Default value: false. Valid values:
|
nls_config.timestamp_alignment_enabled | boolean | No | Specifies whether to enable the timestamp alignment feature. Default value: false. Valid values:
|
nls_config.special_word_filter | object | No | Specifies the sensitive words to process during speech recognition and supports different processing methods for different sensitive words. If this parameter is not passed, the system enables the built-in sensitive word filtering logic. Words in the recognition result that match the QwenCloud sensitive word list are replaced with an equal number of asterisks (*). If you pass this parameter, you can implement the following sensitive word processing policies:
|
nls_config.channel_id | array[integer] | No | Specifies the audio track indexes to recognize in a multi-track audio file. Indexes start from 0. For example, [0] means recognizing the first track, and [0, 1] means recognizing both the first and second tracks simultaneously. If this parameter is omitted, only the first track is processed by default. Tip: Each specified track is billed independently. For example, requesting [0, 1] for a single file incurs two separate charges. Default value: [0] |
nls_config.diarization_enabled | boolean | No | Automatic speaker diarization. Disabled by default. Only applicable to mono audio. Multi-channel audio does not support speaker diarization. When this feature is enabled, the recognition results will include a speaker_id field to distinguish different speakers. Note: If speaker diarization is enabled, it is recommended that the audio duration does not exceed 2 hours, otherwise recognition may fail or time out. For an example of speaker_id, see Recognition result description. |
nls_config.speaker_count | integer | No | A reference value for the number of speakers. To use this feature, set diarization_enabled to true. By default, the number of speakers is automatically determined. If you configure this parameter, it only helps the algorithm try to output the specified number of speakers. It does not guarantee that the exact number will be output. Value range: [2, 100]. This feature is used to distinguish multiple speakers, so you must set it to at least 2. |
nls_config.vocabulary_id | string | No | The ID of the hotword vocabulary, used to improve the recognition accuracy of specific words. This parameter applies to v2 and later models. For information on how to use hotwords, see Customize hotwords. |
Key interfaces
NativeNui
initialize
Initializes the speech recognition SDK instance. The SDK uses the singleton pattern. Do not initialize it again before you call release.
This method is blocking and must be called from a non-UI thread.
- Method signature
- Parameter descriptions
| Parameter | Type | Description |
|---|---|---|
callback | INativeFileTransCallback | The implementation of the event and data callback interface. |
parameters | String | A JSON string that contains authentication, connection, and debugging parameters. See Connection and control parameters. |
level | Constants.LogLevel | Controls the logging level of the SDK itself. |
save_log | boolean | Specifies whether to save binary logs. If true, you must specify a path using debug_path in the Connection and control parameters. You can also set the file size using max_log_file_size. |
- Return value description
setParams
You can use this method to set or update the nls_config parameter independently. You do not need to call this method if all parameters are provided at once in startFileTranscriber.
- Method signature
- Parameter descriptions
| Parameter | Type | Description |
|---|---|---|
params | String | The nls_config parameter from Speech recognition effect parameters. Parameters other than nls_config cannot be set using this method. Example: See Example 1 below |
- Return value description
startFileTranscriber
Starts recognition.
- Method signature
- Parameter descriptions
| Parameter | Type | Description |
|---|---|---|
params | String | Speech recognition effect parameters. Example: See Example 1 below |
task_id | byte[] | The task ID. The SDK internally generates a random string. You can get the task_id after this method is called successfully. |
- Return value description
queryFileTranscriber
You can use this method to query the current status and result of an asynchronous task. After a successful call, the result is returned in the onFileTransEventCallback callback through the EVENT_FILE_TRANS_QUERY_RESULT event.
- Method signature
- Parameter descriptions
| Parameter | Type | Description |
|---|---|---|
task_id | byte[] | The ID of the task to query. |
- Return value description
cancelFileTranscriber
Immediately cancels the current task.
- Method signature
- Parameter descriptions
| Parameter | Type | Description |
|---|---|---|
task_id | byte[] | The ID of the task to cancel. |
- Return value description
release
Releases all internal resources of the SDK. After this method is called, the SDK instance becomes unavailable. To use the SDK again, you must call initialize.
- Method signature
- Return value description
GetVersion
Retrieves the current SDK version information.
- Method signature
- Return value description The current SDK version information.
INativeFileTransCallback: Listener callback
onFileTransEventCallback: Listen for events and speech recognition results
- Method signature
- Parameter descriptions
| Parameter | Type | Description |
|---|---|---|
event | NuiEvent | The callback event. |
resultCode | int | Valid only when the EVENT_ASR_ERROR event occurs. |
asrResult | AsrResult | The speech recognition result. |
taskId | String | The task ID. |
arg2 | int | A reserved parameter. |
onFileTransLogTrackCallback: Listen for trace logs
You can use this callback to receive detailed internal logs from the SDK for troubleshooting and debugging.
NuiEvent: Event types
| Event | Description |
|---|---|
| EVENT_FILE_TRANS_CONNECTED | Successfully connected to the service. |
| EVENT_FILE_TRANS_UPLOADED | Successfully uploaded the audio file for recognition. |
| EVENT_FILE_TRANS_QUERY_RESULT | The result of a task query. |
| EVENT_FILE_TRANS_RESULT | The final recognition result. |
| EVENT_ASR_ERROR | An error occurred during speech recognition. |