This topic describes the parameters and interfaces of the Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR non-real-time speech recognition Python SDK.
Prerequisites
Quick start
The Core class (Transcription) provides interfaces to submit a task asynchronously, wait synchronously for a task to finish, and query task results asynchronously. You can run non-real-time speech recognition in either of the following ways:
- Submit the task asynchronously and wait synchronously: after submitting the task, block the current thread until the task finishes and return the recognition result.
- Submit the task asynchronously and query the result asynchronously: after submitting the task, call the query interface to retrieve the result whenever you need it.
Submit asynchronously and wait synchronously
-
Call the
async_callmethod of the Core class (Transcription) and set the Request parameters.- The file transcription service processes tasks submitted through the API on a best-effort basis. After you submit a task, it enters the queued (
PENDING) state. The queuing time depends on the queue length and the file duration, so it cannot be stated precisely, but it is usually within a few minutes. Once processing starts, speech recognition completes at hundreds of times real-time speed. - After each task finishes, the recognition result and the download URL are valid for 24 hours. After they expire, you can no longer query the task or download the result through the URL returned in a previous query.
- The file transcription service processes tasks submitted through the API on a best-effort basis. After you submit a task, it enters the queued (
-
Call the
waitmethod of the Core class (Transcription) to wait synchronously for the task to finish. A task can be in one of the following states:PENDING,RUNNING,SUCCEEDED, andFAILED. While the task is in thePENDINGorRUNNINGstate, thewaitinterface blocks. When the task reaches theSUCCEEDEDorFAILEDstate, thewaitinterface stops blocking and returns the task result.waitreturns a TranscriptionResponse.
Click to view the complete example
Click to view the complete example
Submit asynchronously and query the result asynchronously
-
Call the
async_callmethod of the Core class (Transcription) and set the Request parameters.- The file transcription service processes tasks submitted through the API on a best-effort basis. After you submit a task, it enters the queued (
PENDING) state. The queuing time depends on the queue length and the file duration, so it cannot be stated precisely, but it is usually within a few minutes. Once processing starts, speech recognition completes at hundreds of times real-time speed. - After each task finishes, the recognition result and the download URL are valid for 24 hours. After they expire, you can no longer query the task or download the result through the URL returned in a previous query.
- The file transcription service processes tasks submitted through the API on a best-effort basis. After you submit a task, it enters the queued (
-
Call the
fetchmethod of the Core class (Transcription) in a loop until you get the final task result. When the task status isSUCCEEDEDorFAILED, stop polling and process the result.fetchreturns a TranscriptionResponse.
Click to view the complete example
Click to view the complete example
Service endpoints
By default, the SDK uses the service endpoint of the Beijing region. To switch to another region, modify dashscope.base_http_api_url before initialization.
- Singapore
- China (Beijing)
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Replace {WorkspaceId} with your actual Workspace ID.- API keys differ across regions. Make sure you use the API key for the corresponding region.
- The region configuration is a global setting that affects all API calls made through the DashScope SDK.
Request parameters
Set request parameters through the async_call method of the Core class (Transcription).
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | str | Yes | The model name. Supported values include the Qwen-Audio-3.0-ASR-Flash-Filetrans and Fun-ASR model families. For details, see Supported models and regions. |
| file_urls | list[str] | Yes | A list of URLs of the audio or video files to transcribe. HTTP and HTTPS are supported. A single request supports only one URL. For input requirements such as supported audio formats, file size limits, and duration limits, see Audio specifications.If the recording is stored in Alibaba Cloud OSS, the RESTful API supports temporary URLs prefixed with oss://, whereas the SDK does not support oss://-prefixed temporary URLs. |
| vocabulary_id | str | No | The ID of a precompiled hot word list.Generate this ID in advance by calling the create hot word list API. Pass the ID during recognition to use the hot words in the list.Suitable for scenarios where the vocabulary is known and relatively stable, and where you need to reuse the same word list across requests.For usage details, see Precompiled hotwords. |
| vocabulary | dict | No | Instant hot words.Passed as key-value pairs, where the key is the hot word text (string) and the value is the hot word weight (integer). No hot word list needs to be created in advance. The weight ranges from [1, 5] or is set to 50: a value in [1, 5] makes the model more likely to output the word as the value increases; a value of 50 designates a super hot word, which greatly improves recall, but the number of super hot words cannot exceed 50.Suitable for temporary, session-level hot word optimization.When instant and precompiled hotwords are configured together, the system merges both sets. If the merged set contains more than 2000 hotwords, the system randomly selects 2000 to use. For usage details, see Instant hotwords.Example: |
| channel_id | list[int] | No | The index of the audio tracks to recognize in a multi-track audio file. The index starts at 0. For example, [0] recognizes the first track, and [0, 1] recognizes the first and second tracks at the same time. If you omit this parameter, only the first track is processed.Default value: [0]. |
| special_word_filter | str | No | The sensitive words to process during speech recognition. You can set a different handling method for each sensitive word. For details, see Sensitive word filtering. |
| diarization_enabled | bool | No | Whether to enable speaker diarization. Disabled by default.Applies only to mono audio. Multi-channel audio does not support speaker diarization.When enabled, the recognition result includes a speaker_id field that distinguishes different speakers.When speaker diarization is enabled, keep the audio duration within 2 hours. Otherwise, recognition may fail or time out. speaker_id, see Recognition result description. |
| speaker_count | int | No | A reference value for the number of speakers. The valid range is an integer from 2 to 100 (inclusive).By default, the number of speakers is detected automatically. If you set this value, it only guides the algorithm to output the specified count when possible and does not guarantee that exact count.No default value. |
| language_hints | list[str] | No | The language codes to recognize. If you can't determine the language in advance, leave it unset and the model detects the language automatically.For Qwen-Audio-3.0-ASR-Flash-Filetrans models, you can set up to 4 values; any values beyond the first 4 are ignored. For Fun-ASR models, you can set only 1 value; if you set multiple, only the first takes effect.
Click to view the supported language codes
|
Response
TranscriptionResponse
TranscriptionResponse wraps the basic task information (task_id and task_status) and the task result (the content of the output attribute, see TranscriptionOutput).
Click to view a sample TranscriptionResponse structure
Click to view a sample TranscriptionResponse structure
Parameter | Description |
|---|---|
status_code | HTTP status code of the request. |
code |
|
message |
|
task_id | Task ID. |
task_status | Task status. One of four states: When a task contains multiple subtasks, the overall task status is marked as |
results | Subtask recognition results. |
subtask_status | Subtask status. One of four states: |
file_url | URL of the recognized audio. |
transcription_url | URL of the audio recognition result. The recognition result is saved as a JSON file. You can download the file from the link associated with |
TranscriptionOutput
TranscriptionOutput corresponds to the output attribute of the TranscriptionResponse and represents the result of the current task.
Click to view a sample TranscriptionOutput structure
Click to view a sample TranscriptionOutput structure
- PENDING state
- RUNNING state
- SUCCEEDED state
- FAILED state
Parameter | Description |
|---|---|
code | The error code. Combine it with the |
message | The error message. Combine it with the |
task_id | Task ID. |
task_status | Task status. One of four states: When a task contains multiple subtasks, the overall task status is marked as |
results | Subtask recognition results. |
subtask_status | Subtask status. One of four states: |
file_url | URL of the recognized audio. |
transcription_url | URL of the audio recognition result. The recognition result is saved as a JSON file. You can download the file from the link associated with |
Recognition result description
The recognition result is saved as a JSON file.
Click to view the recognition result example
Click to view the recognition result example
Parameter | Type | Description |
|---|---|---|
audio_format | string | The audio format of the source file. |
channels | array[integer] | The track index of the audio in the source file. For single-track audio, [0] is returned; for dual-track audio, [0, 1] is returned; and so on. |
original_sampling_rate | integer | The sampling rate (Hz) of the audio in the source file. |
original_duration_in_milliseconds | integer | The original audio duration (ms) in the source file. |
channel_id | integer | The track index of the transcription result, starting from 0. |
content_duration | integer | The duration (ms) of content in the track that is identified as speech. The speech recognition model service transcribes only the content in a track that is identified as speech, and meters and bills based on that duration. Non-speech content is not metered or billed. Typically, the speech content duration is shorter than the original audio duration. Because whether speech content exists is determined by an AI model, the result may differ slightly from the actual situation. |
transcript | string | The paragraph-level transcription result. |
sentences | array | The sentence-level transcription result. |
words | array | The word-level transcription result. |
begin_time | integer | The start timestamp (ms). |
end_time | integer | The end timestamp (ms). |
text | string | The transcription result. |
speaker_id | integer | The index of the current speaker, starting from 0, used to distinguish between different speakers. This field appears in the recognition result only when speaker diarization is enabled. |
punctuation | string | The punctuation predicted after the word, if any. |
Key interfaces
Core class (Transcription)
Import Transcription with "from dashscope.audio.asr import Transcription".
| Method | Signature | Description |
|---|---|---|
| async_call | Submits a speech recognition task asynchronously. | |
| wait | Blocks the current thread until the asynchronous task finishes (the task status is SUCCEEDED or FAILED).This method returns a TranscriptionResponse. | |
| fetch | Queries the result of the current task asynchronously.This method returns a TranscriptionResponse. |
Error codes
If you encounter an error, see Error codes to troubleshoot.
When a task contains multiple subtasks, the overall task status is marked as SUCCEEDED as long as at least one subtask succeeds. Check the subtask_status field to determine the result of each subtask.
Error response example:
FAQ
Features
Q: Is Base64-encoded audio supported?
Base64-encoded audio is not supported. Only audio at a publicly accessible URL can be recognized. Binary streams and local files cannot be recognized directly.
Q: How do I make an audio file available at a publicly accessible URL?
The typical steps are as follows. This is one approach; the exact process varies by storage product. We recommend that you upload the audio to Alibaba Cloud OSS:
1. Choose a storage and hosting method
1. Choose a storage and hosting method
-
Object storage service (recommended):
- Use a cloud provider's object storage service (such as Alibaba Cloud OSS) to upload the audio file to a bucket and set it to public access.
- Advantages: high availability, CDN acceleration support, and easy management.
-
Web server:
- Place the audio file on a web server that supports HTTP/HTTPS access (such as Nginx or Apache).
- Advantages: suitable for small projects or local testing.
-
Content delivery network (CDN):
- Host the audio file on a CDN and access it through the URL that the CDN provides.
- Advantages: accelerates file delivery and suits high-concurrency scenarios.
2. Upload the audio file
2. Upload the audio file
-
Object storage service:
- Log in to the cloud provider's console and create a bucket.
- Upload the audio file, and set its permission to public read or generate a temporary access link.
-
Web server:
- Place the audio file in a designated directory on the server (such as
/var/www/html/audio/). - Make sure the file is accessible over HTTP/HTTPS.
- Place the audio file in a designated directory on the server (such as
3. Generate a publicly accessible URL
3. Generate a publicly accessible URL
-
Object storage service:
- After the file is uploaded, the system automatically generates a public access URL (typically in the format
https://<bucket-name>.<region>.aliyuncs.com/<file-name>). - For a friendlier domain name, bind a custom domain and enable HTTPS.
- After the file is uploaded, the system automatically generates a public access URL (typically in the format
-
Web server:
- The access URL is usually the server address plus the file path (such as
https://your-domain.com/audio/file.mp3).
- The access URL is usually the server address plus the file path (such as
-
CDN:
- After you configure CDN acceleration, use the URL that the CDN provides (such as
https://cdn.your-domain.com/audio/file.mp3).
- After you configure CDN acceleration, use the URL that the CDN provides (such as
4. Verify that the URL works
4. Verify that the URL works
- Open the URL in a browser and check whether the audio file plays.
- Use a tool (such as
curlor Postman) to verify that the URL returns the correct HTTP response (status code 200).
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.