The parameters and API of the Paraformer audio file recognition Python SDK.
Alibaba Cloud Model Studio has released a workspace-specific domain for the China (Beijing) region. The new dedicated domain delivers superior performance and higher stability for inference requests. We recommend migrating from dashscope.aliyuncs.com to {WorkspaceId}.cn-beijing.maas.aliyuncs.com.
Replace {WorkspaceId} with your actual Workspace ID. The existing domain remains fully functional.
User guide: Non-real-time speech recognition
Prerequisites
-
You have activated the service and Obtain an API key. Please Configure API key as an environment variable instead of hardcoding it in your code to prevent security risks caused by code leakage.
NoteWhen you need to provide temporary access to third-party applications or users, or when you want to strictly control high-risk operations such as accessing or deleting sensitive data, we recommend using temporary authentication tokens.
Compared with long-term API Keys, temporary authentication tokens have a short validity period (60 seconds) and higher security, making them suitable for temporary call scenarios and effectively reducing the risk of API Key leakage.
Usage: In your code, replace the API Key originally used for authentication with the obtained temporary authentication token.
Getting started
The core class (Transcription) provides methods to submit tasks asynchronously, wait for them to complete synchronously, and query task results asynchronously. You can perform audio file recognition using one of the following two approaches:
-
Asynchronous task submission + synchronous waiting for task completion: After you submit a task, the current thread is blocked until the task is complete and the recognition result is returned.
-
Asynchronous task submission + asynchronous query of task execution results: After you submit a task, you can query the task result at any time.
Asynchronous task submission + synchronous waiting for task completion
-
Call the
async_callmethod of the core class (Transcription) and set the request parameters.NoteThe file transcription service processes tasks submitted through the API on a best-effort basis. After submission, a task enters the queued (
PENDING) state. The queue time depends on the queue length and file duration and cannot be precisely estimated, but typically completes within a few minutes. Once processing begins, speech recognition completes at several hundred times the real-time speed.After each task completes, the recognition result and URL download link are valid for 24 hours. After expiration, you cannot query the task or download results through the previously provided URL.
-
Call the
waitmethod of the core class (Transcription) to wait synchronously for the task to complete.A task can have a status of
PENDING,RUNNING,SUCCEEDED, orFAILED. Thewaitcall is blocked while the task is in thePENDINGorRUNNINGstate. If the task isSUCCEEDEDorFAILED, thewaitmethod returns the task result.The
waitmethod returns a TranscriptionResponse.
Asynchronous task submission + asynchronous query of task execution results
-
Call the
async_callmethod of the Transcription core class and set the request parameters.NoteThe file transcription service processes tasks submitted through the API on a best-effort basis. After submission, a task enters the queued (
PENDING) state. The queue time depends on the queue length and file duration and cannot be precisely estimated, but typically completes within a few minutes. Once processing begins, speech recognition completes at several hundred times the real-time speed.After each task completes, the recognition result and URL download link are valid for 24 hours. After expiration, you cannot query the task or download results through the previously provided URL.
-
You can continue to call the
fetchmethod of the core class (Transcription) until you retrieve the final task result.When the task status is
SUCCEEDEDorFAILED, stop polling and process the result.The
fetchmethod returns a TranscriptionResponse.
Request parameters
Set request parameters using the async_call method of the core class (Transcription).
|
Parameter |
Type |
Default |
Required |
Description |
|
model |
str |
- |
Yes |
The model name used for Paraformer audio and video file transcription. For more information, see models. |
|
file_urls |
list[str] |
- |
Yes |
A list of URLs for audio and video file transcription. 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. |
|
vocabulary_id |
str |
- |
No |
The custom vocabulary ID for the speech recognition task. Supported for v2 series models and requires language configuration. This feature is disabled by default. For more information, see Custom Vocabularies. |
|
phrase_id |
str |
- |
No |
The hotword ID. Applies the specified hotword configuration to this recognition task. Disabled by default. Note: |
|
channel_id |
list[int] |
[0] |
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. Important Each specified track is billed independently. For example, requesting [0, 1] for a single file incurs two separate charges. |
|
disfluency_removal_enabled |
bool |
False |
No |
Specifies whether to filter filler words. This feature is disabled by default. |
|
timestamp_alignment_enabled |
bool |
False |
No |
Specifies whether to enable the timestamp alignment feature. This feature is disabled by default. |
|
special_word_filter |
str |
- |
No |
Specifies sensitive words to process during speech recognition and supports setting different processing methods for different sensitive words. If this parameter is not provided, the system uses the built-in sensitive word filtering logic, and words matching the Alibaba Cloud Model Studio sensitive word list in the recognition results will be replaced with If this parameter is provided, the following sensitive word processing strategies can be implemented:
The value of this parameter should be a JSON string with the following structure: JSON field descriptions:
|
|
language_hints |
list[str] |
["zh", "en"] |
No |
Specifies the language codes of the speech to be recognized. This parameter is only applicable to the paraformer-v2 model. Supported language codes:
|
|
diarization_enabled |
bool |
False |
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 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_count |
int |
- |
No |
A reference value for the number of speakers. The value must be an integer from 2 to 100, inclusive. Takes effect only when speaker diarization is enabled ( By default, speaker count is determined automatically. Setting this parameter guides the algorithm toward the specified speaker count but does not guarantee the exact number. |
Response results
TranscriptionResponse
A TranscriptionResponse object contains task information, such as task_id and task_status, and the execution result. The output property holds the execution result. See TranscriptionOutput.
Key parameters:
|
Parameter |
Description |
|
status_code |
The HTTP request status code. |
|
code |
|
|
message |
|
|
task_id |
The task ID. |
|
task_status |
The task status. The four statuses are When a task contains multiple subtasks, if any subtask succeeds, the entire task status is marked as |
|
results |
The recognition results of the subtasks. |
|
subtask_status |
The subtask status. The four statuses are |
|
file_url |
The URL of the audio file to be recognized. |
|
transcription_url |
The URL corresponding to the audio recognition result. The recognition result is saved as a JSON file. Download the file from the URL in |
TranscriptionOutput
A TranscriptionOutput object is the output property of a TranscriptionResponse object, containing the task execution result.
Important parameters:
|
Parameter |
Description |
|
code |
The error code. Use with the |
|
message |
The error message. Use with the |
|
task_id |
The task ID. |
|
task_status |
The task status. The four statuses are When a task contains multiple subtasks, if any subtask succeeds, the entire task status is marked as |
|
results |
The recognition results of the subtasks. |
|
subtask_status |
The subtask status. The four statuses are |
|
file_url |
The URL of the audio file to be recognized. |
|
transcription_url |
The URL corresponding to the audio recognition result. The recognition result is saved in a JSON file. Download the file from |
Recognition result description
The recognition result is saved as a JSON file.
The key parameters are as follows:
Parameter | Type | Description |
audio_format | string | The audio format of the source file. |
channels | array[integer] | The audio track index information of the source file. Returns [0] for mono audio, [0, 1] for dual-track audio, and so on. |
original_sampling_rate | integer | The sampling rate (Hz) of the audio in the source file. |
original_duration | integer | The original audio duration (ms) of the source file. |
channel_id | integer | The audio track index of the transcription result, starting from 0. |
content_duration | integer | The duration (ms) of content identified as speech in the audio track. Important The Paraformer speech recognition model service only transcribes and meters content identified as speech in the audio track, and bills accordingly. Non-speech content is neither metered nor billed. Typically, the speech content duration is shorter than the original audio duration. Since the determination of whether speech content exists is made by an AI model, there may be some deviation from the actual situation. |
transcript | string | The paragraph-level speech transcription result. |
sentences | array | The sentence-level speech transcription result. |
words | array | The word-level speech transcription result. |
begin_time | integer | The start timestamp (ms). |
end_time | integer | The end timestamp (ms). |
text | string | The speech transcription result. |
speaker_id | integer | The index of the current speaker, starting from 0, used to distinguish different speakers. This field is only displayed in the recognition results when speaker diarization is enabled. |
punctuation | string | The predicted punctuation after the word (if any). |
Key interfaces
Core class (Transcription)
Import the Transcription class: from dashscope.audio.asr import Transcription.
|
Member method |
Method signature |
Description |
|
async_call |
|
Asynchronously submits a speech recognition task. This method returns TranscriptionResponse. |
|
wait |
|
Blocks the current thread until the asynchronous task completes (status is This method returns TranscriptionResponse. |
|
fetch |
|
Asynchronously queries the task execution result. This method returns a TranscriptionResponse. |
Other interfaces: Batch query task status / Cancel task
For details, see Manage asynchronous tasks: Supports batch querying of recorded speech recognition tasks submitted within the last 24 hours, and also supports canceling tasks in PENDING (queued) state.
Error codes
If you encounter errors, see Error codes for troubleshooting.
If the issue persists, join the developer community to report the issue and provide the Request ID for further investigation.
When a task contains multiple subtasks, as long as any subtask succeeds, the overall task status is marked as SUCCEEDED. You need to check the subtask_status field to determine the result of each subtask.
Error response example:
{
"task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-12-16 16:30:59.170",
"scheduled_time": "2024-12-16 16:30:59.204",
"end_time": "2024-12-16 16:31:02.375",
"results": [
{
"file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
"code": "InvalidFile.DownloadFailed",
"message": "The audio file cannot be downloaded.",
"subtask_status": "FAILED"
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 0,
"FAILED": 1
}
}More examples
See GitHub for more examples.
FAQ
Features
Q: Does it support Base64-encoded audio?
No. Base64-encoded audio is not supported. Only audio accessible via publicly accessible URLs is supported. Binary streams and direct local file recognition are not supported.
Q: How to provide audio files as publicly accessible URLs?
Generally, follow these steps (this provides a general approach; specifics vary by storage product. We recommend uploading audio to Alibaba Cloud OSS):
When using the SDK, if audio files are stored in Alibaba Cloud OSS, temporary URLs with the oss:// prefix are not supported.
When using the RESTful API, if audio files are stored in Alibaba Cloud OSS, temporary URLs with the oss:// prefix are supported:
The temporary URL is valid for 48 hours and cannot be used after it expires. Do not use it in a production environment.
The API for obtaining an upload credential is limited to 100 QPS and does not support scaling out. Do not use it in production environments, high-concurrency scenarios, or stress testing scenarios.
For production environments, use a stable storage service such as OSS to ensure long-term file availability and avoid rate limiting issues.
Q: How long does it take to get recognition results?
After submission, the task enters a queued (PENDING) state. The queue time depends on the queue length and file duration and cannot be precisely estimated, but typically completes within a few minutes. Please wait patiently. Longer audio files require more processing time.
Troubleshooting
For code errors, see Error codes.
Q: What should I do if the recognition results are out of sync with the audio playback?
Set the request parameter timestamp_alignment_enabled to true to enable timestamp calibration, which synchronizes the recognition results with the speech playback.
Q: What should I do if the task returns an InvalidFile.DownloadFailed error?
Check whether the file URL contains spaces or other non-ASCII characters (such as Chinese characters). If the file name includes spaces (for example, my audio recording.mp4), replace each space with %20 to URL-encode the file name before passing it to the file_urls parameter.
Q: Unable to get results after continuous polling?
This may be due to rate limiting. Please wait patiently. If you need capacity expansion, join the developer community to apply.
Q: Why is there no recognition result (unable to recognize speech)?
Check whether the audio meets the requirements (format, sampling rate).
If you are using the
paraformer-v2model, check whether thelanguage_hintssetting is correct.If none of the above resolves the issue, you can customize hot words to improve the recognition of specific words.
More questions
See the GitHub QA.