Appearance
to-text-Audio file recognition - Fun-ASR/Paraformer
The Fun-ASR/Paraformer audio file recognition models convert recorded audio into text. They support single-file and batch transcription and are ideal when real-time results aren't required, such as for meeting transcription, post-call analytics, and caption generation.
Core features
Multilingual recognition: Recognizes Chinese (including multiple dialects), English, Japanese, Korean, German, French, Russian, and 30+ other languages.
Format compatibility: Accepts any sample rate and supports major audio and video formats, including AAC, WAV, and MP3.
Long audio file processing: Handles asynchronous transcription for a single audio file up to 12 hours long and 2 GB in size. If speaker diarization is enabled, audio longer than 2 hours is not recommended.
Singing voice recognition: Transcribes entire songs, even with background music (BGM). Only the fun-asr and fun-asr-2025-11-07 models support this feature.
Recognition features: Configurable features include speaker diarization, sensitive word filtering, sentence-level and word-level timestamps, and hotword enhancement.
Availability
Supported models:
Chinese mainland
When the service deployment scope is the Chinese mainland, model inference compute resources are limited to the Chinese mainland. Static data is stored in the region you select. The supported region for this deployment scope is China (Beijing).
When you call the following models, select an API key from the China (Beijing) region:
Fun-ASR: fun-asr (stable, currently equivalent to fun-asr-2025-11-07), fun-asr-2025-11-07 (snapshot), fun-asr-2025-08-25 (snapshot), fun-asr-mtl (stable, currently equivalent to fun-asr-mtl-2025-08-25, fun-asr is recommended), fun-asr-mtl-2025-08-25 (snapshot)
Paraformer: paraformer-v2, paraformer-8k-v2, paraformer-v1, paraformer-8k-v1, paraformer-mtl-v1
International
When the service deployment scope is International, model inference compute resources are dynamically scheduled worldwide (excluding the Chinese mainland). Static data is stored in the region you select. The supported region for this deployment scope is Singapore.
When you call the following models, select an API key from the Singapore region:
- Fun-ASR: fun-asr (stable, currently equivalent to fun-asr-2025-11-07), fun-asr-2025-11-07 (snapshot), fun-asr-2025-08-25 (snapshot), fun-asr-mtl (stable, currently equivalent to fun-asr-mtl-2025-08-25, fun-asr is recommended), fun-asr-mtl-2025-08-25 (snapshot)
International
When the service deployment scope is International, model inference compute resources are dynamically scheduled worldwide (excluding the Chinese mainland). Static data is stored in the region you select. The supported region for this deployment scope is Singapore.
When you call the following models, select an API key from the Singapore region:
- Fun-ASR: fun-asr (stable, currently equivalent to fun-asr-2025-11-07), fun-asr-2025-11-07 (snapshot), fun-asr-2025-08-25 (snapshot), fun-asr-mtl (stable, currently equivalent to fun-asr-mtl-2025-08-25, fun-asr is recommended), fun-asr-mtl-2025-08-25 (snapshot)
Chinese mainland
When the service deployment scope is the Chinese mainland, model inference compute resources are limited to the Chinese mainland. Static data is stored in the region you select. The supported region for this deployment scope is China (Beijing).
When you call the following models, select an API key from the China (Beijing) region:
Fun-ASR: fun-asr (stable, currently equivalent to fun-asr-2025-11-07), fun-asr-2025-11-07 (snapshot), fun-asr-2025-08-25 (snapshot), fun-asr-mtl (stable, currently equivalent to fun-asr-mtl-2025-08-25, fun-asr is recommended), fun-asr-mtl-2025-08-25 (snapshot)
Paraformer: paraformer-v2, paraformer-8k-v2
Model selection
| Use case | Recommended model | Reason |
|---|---|---|
| Meeting transcription, live streaming, cross-border communication, education | fun-asr | Covers the seven major dialects of Chinese and over 20 regional accents. Supports 30 languages and provides automatic text normalization. A single model meets multilingual recognition needs, reducing development and deployment costs. |
| Music and entertainment content analysis, caption generation | fun-asr | Features singing voice recognition to transcribe songs and singing segments in live streams. Its noise robustness also makes it suitable for complex media audio. |
| News and interview caption generation | fun-asr, paraformer-v2 | The long audio, punctuation prediction, and timestamp features directly generate structured captions. |
| Smart hardware voice interaction (far-field) | fun-asr | Far-field Voice Activity Detection (VAD) is optimized to capture and recognize user commands at a distance in noisy environments such as homes and vehicles. |
Getting started
The file transcription API is asynchronous. A typical workflow has two steps:
Submit a transcription task with
async_call, providing file URLs and a model name.Retrieve the results with
wait(SDK) or by polling the task query endpoint (REST API).
Sample API calls:
Create an API key and export the API key as an environment variable. If you use an SDK to make calls, install the DashScope SDK.
Fun-ASR
Python
HELPCODEESCAPE-python
from http import HTTPStatus
from dashscope.audio.asr import Transcription
from urllib import request
import dashscope
import os
import json
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# The API keys for the Singapore and China (Beijing) regions are different. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# If you have not configured the environment variable, replace the following line with your Model Studio API key: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
task_response = Transcription.async_call(
model='fun-asr',
file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav',
'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav'],
language_hints=['zh', 'en'] # language_hints is an optional parameter used to specify the language code of the audio to be recognized. For the value range, see the API reference.
)
transcription_response = Transcription.wait(task=task_response.output.task_id)
if transcription_response.status_code == HTTPStatus.OK:
for transcription in transcription_response.output['results']:
if transcription['subtask_status'] == 'SUCCEEDED':
url = transcription['transcription_url']
result = json.loads(request.urlopen(url).read().decode('utf8'))
print(json.dumps(result, indent=4,
ensure_ascii=False))
else:
print('transcription failed!')
print(transcription)
else:
print('Error: ', transcription_response.output.message)Java
HELPCODEESCAPE-java
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
// The following URL is for the Singapore region. If you use a model in the China (Beijing) region, replace the URL with https://dashscope.aliyuncs.com/api/v1.
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
// Create transcription request parameters.
TranscriptionParam param =
TranscriptionParam.builder()
// The API keys for the Singapore and China (Beijing) regions are different. To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
// If you have not configured the environment variable, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("fun-asr")
// language_hints is an optional parameter used to specify the language code of the audio to be recognized. For the value range, see the API reference.
.parameter("language_hints", new String[]{"zh", "en"})
.fileUrls(
Arrays.asList(
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
.build();
try {
Transcription transcription = new Transcription();
// Submit the transcription request.
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
// Block and wait for the task to complete, then get the result.
result = transcription.wait(
TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
// Get the transcription result.
List<TranscriptionTaskResult> taskResultList = result.getResults();
if (taskResultList != null && taskResultList.size() > 0) {
for (TranscriptionTaskResult taskResult : taskResultList) {
String transcriptionUrl = taskResult.getTranscriptionUrl();
HttpURLConnection connection =
(HttpURLConnection) new URL(transcriptionUrl).openConnection();
connection.setRequestMethod("GET");
connection.connect();
BufferedReader reader =
new BufferedReader(new InputStreamReader(connection.getInputStream()));
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement jsonResult = gson.fromJson(reader, JsonObject.class);
System.out.println(gson.toJson(jsonResult));
}
}
} catch (Exception e) {
System.out.println("error: " + e);
}
System.exit(0);
}
}The complete recognition result is printed to the console in JSON format. The result includes the converted text and its start and end times in the audio or video file, in milliseconds.
First result
HELPCODEESCAPE-json { "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav", "properties": { "audio_format": "pcm_s16le", "channels": [ 0 ], "original_sampling_rate": 16000, "original_duration_in_milliseconds": 3834 }, "transcripts": [ { "channel_id": 0, "content_duration_in_milliseconds": 2480, "text": "Hello World, this is Alibaba Cloud Speech Lab.", "sentences": [ { "begin_time": 760, "end_time": 3240, "text": "Hello World, this is Alibaba Cloud Speech Lab.", "sentence_id": 1, "words": [ { "begin_time": 760, "end_time": 1000, "text": "Hello", "punctuation": "" }, { "begin_time": 1000, "end_time": 1120, "text": " World", "punctuation": ", " }, { "begin_time": 1400, "end_time": 1920, "text": "this is", "punctuation": "" }, { "begin_time": 1920, "end_time": 2520, "text": "Alibaba Cloud", "punctuation": "" }, { "begin_time": 2520, "end_time": 2840, "text": "Speech", "punctuation": "" }, { "begin_time": 2840, "end_time": 3240, "text": "Lab", "punctuation": "." } ] } ] } ] }Second result
HELPCODEESCAPE-json { "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav", "properties": { "audio_format": "pcm_s16le", "channels": [ 0 ], "original_sampling_rate": 16000, "original_duration_in_milliseconds": 4726 }, "transcripts": [ { "channel_id": 0, "content_duration_in_milliseconds": 3800, "text": "Hello World, this is Alibaba Cloud Speech Lab.", "sentences": [ { "begin_time": 680, "end_time": 4480, "text": "Hello World, this is Alibaba Cloud Speech Lab.", "sentence_id": 1, "words": [ { "begin_time": 680, "end_time": 960, "text": "Hello", "punctuation": "" }, { "begin_time": 960, "end_time": 1080, "text": " World", "punctuation": ", " }, { "begin_time": 1480, "end_time": 2160, "text": "this is", "punctuation": "" }, { "begin_time": 2160, "end_time": 3080, "text": "Alibaba Cloud", "punctuation": "" }, { "begin_time": 3080, "end_time": 3520, "text": "Speech", "punctuation": "" }, { "begin_time": 3520, "end_time": 4480, "text": "Lab", "punctuation": "." } ] } ] } ] }
Paraformer
Python
HELPCODEESCAPE-python
from http import HTTPStatus
from dashscope.audio.asr import Transcription
from urllib import request
import dashscope
import os
import json
# To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# If you have not configured the environment variable, replace the following line with your Model Studio API key: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
task_response = Transcription.async_call(
model='paraformer-v2',
file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav',
'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav'],
language_hints=['zh', 'en'] # language_hints is an optional parameter used to specify the language code of the audio to be recognized. Only the paraformer-v2 model in the Paraformer series supports this parameter. For the value range, see the API reference.
)
transcription_response = Transcription.wait(task=task_response.output.task_id)
if transcription_response.status_code == HTTPStatus.OK:
for transcription in transcription_response.output['results']:
if transcription['subtask_status'] == 'SUCCEEDED':
url = transcription['transcription_url']
result = json.loads(request.urlopen(url).read().decode('utf8'))
print(json.dumps(result, indent=4,
ensure_ascii=False))
else:
print('transcription failed!')
print(transcription)
else:
print('Error: ', transcription_response.output.message)Java
HELPCODEESCAPE-java
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Create transcription request parameters.
TranscriptionParam param =
TranscriptionParam.builder()
// To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.
// If you have not configured the environment variable, replace the following line with your Model Studio API key: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("paraformer-v2")
// language_hints is an optional parameter used to specify the language code of the audio to be recognized. Only the paraformer-v2 model in the Paraformer series supports this parameter. For the value range, see the API reference.
.parameter("language_hints", new String[]{"zh", "en"})
.fileUrls(
Arrays.asList(
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
.build();
try {
Transcription transcription = new Transcription();
// Submit the transcription request.
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
// Block and wait for the task to complete, then get the result.
result = transcription.wait(
TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
// Get the transcription result.
List<TranscriptionTaskResult> taskResultList = result.getResults();
if (taskResultList != null && taskResultList.size() > 0) {
for (TranscriptionTaskResult taskResult : taskResultList) {
String transcriptionUrl = taskResult.getTranscriptionUrl();
HttpURLConnection connection =
(HttpURLConnection) new URL(transcriptionUrl).openConnection();
connection.setRequestMethod("GET");
connection.connect();
BufferedReader reader =
new BufferedReader(new InputStreamReader(connection.getInputStream()));
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement jsonResult = gson.fromJson(reader, JsonObject.class);
System.out.println(gson.toJson(jsonResult));
}
}
} catch (Exception e) {
System.out.println("error: " + e);
}
System.exit(0);
}
}The complete recognition result is printed to the console in JSON format. The result includes the converted text and its start and end times in the audio or video file, in milliseconds.
First result
HELPCODEESCAPE-json { "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav", "properties": { "audio_format": "pcm_s16le", "channels": [ 0 ], "original_sampling_rate": 16000, "original_duration_in_milliseconds": 4726 }, "transcripts": [ { "channel_id": 0, "content_duration_in_milliseconds": 4720, "text": "Hello world, this is the Alibaba Speech Lab.", "sentences": [ { "begin_time": 0, "end_time": 4720, "text": "Hello world, this is the Alibaba Speech Lab.", "sentence_id": 1, "words": [ { "begin_time": 0, "end_time": 629, "text": "Hello ", "punctuation": "" }, { "begin_time": 629, "end_time": 944, "text": "world", "punctuation": ", " }, { "begin_time": 944, "end_time": 1416, "text": "this ", "punctuation": "" }, { "begin_time": 1416, "end_time": 1888, "text": "is ", "punctuation": "" }, { "begin_time": 1888, "end_time": 2100, "text": "the ", "punctuation": "" }, { "begin_time": 2100, "end_time": 3146, "text": "Alibaba ", "punctuation": "" }, { "begin_time": 3146, "end_time": 3776, "text": "Speech ", "punctuation": "" }, { "begin_time": 3776, "end_time": 4720, "text": "Lab", "punctuation": "." } ] } ] } ] }Second result
HELPCODEESCAPE-json { "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav", "properties": { "audio_format": "pcm_s16le", "channels": [ 0 ], "original_sampling_rate": 16000, "original_duration_in_milliseconds": 3834 }, "transcripts": [ { "channel_id": 0, "content_duration_in_milliseconds": 3720, "text": "Hello word, This is the Alibaba Speech Lab.", "sentences": [ { "begin_time": 100, "end_time": 3820, "text": "Hello word, This is the Alibaba Speech Lab.", "sentence_id": 1, "words": [ { "begin_time": 100, "end_time": 596, "text": "Hello ", "punctuation": "" }, { "begin_time": 596, "end_time": 844, "text": "word", "punctuation": ", " }, { "begin_time": 844, "end_time": 1340, "text": "This", "punctuation": "" }, { "begin_time": 1340, "end_time": 1588, "text": "is", "punctuation": "" }, { "begin_time": 1588, "end_time": 1836, "text": "the", "punctuation": "" }, { "begin_time": 1836, "end_time": 2580, "text": "Alibaba", "punctuation": "" }, { "begin_time": 2580, "end_time": 3076, "text": "Speech", "punctuation": "" }, { "begin_time": 3076, "end_time": 3820, "text": "Lab", "punctuation": "." } ] } ] } ] }
API reference
Fun-ASR audio file recognition API reference
Paraformer audio file recognition API reference
Compare models
| Feature | Fun-ASR | Paraformer |
|---|---|---|
| Supported languages | Varies by model: - fun-asr, fun-asr-2025-11-07: Chinese (Mandarin, Cantonese, Wu, Minnan, Hakka, Gan, Xiang, Jin; also supports accents from Central Plains, Southwest, Ji-Lu, Jianghuai, Lan-Yin, Jiao-Liao, Northeast, Beijing, Hong Kong, and Taiwan, including official dialects from regions such as Henan, Shaanxi, Hubei, Sichuan, Chongqing, Yunnan, Guizhou, Guangdong, Guangxi, Hebei, Tianjin, Shandong, Anhui, Nanjing, Jiangsu, Hangzhou, Gansu, and Ningxia), English, Japanese, Korean, Vietnamese, Thai, Indonesian, Malay, Filipino, Hindi, Arabic, French, German, Spanish, Portuguese, Russian, Italian, Dutch, Swedish, Danish, Finnish, Norwegian, Greek, Polish, Czech, Hungarian, Romanian, Bulgarian, Croatian, Slovak - fun-asr-2025-08-25: Chinese (Mandarin), English - fun-asr-mtl, fun-asr-mtl-2025-08-25: Chinese (Mandarin, Cantonese), English, Japanese, Korean, Vietnamese, Thai, Indonesian, Malay, Filipino, Hindi, Arabic, French, German, Spanish, Portuguese, Russian, Italian, Dutch, Swedish, Danish, Finnish, Norwegian, Greek, Polish, Czech, Hungarian, Romanian, Bulgarian, Croatian, Slovak | Varies by model: - paraformer-v2: Chinese (Mandarin, Cantonese, Wu, Minnan, Northeast, Gansu, Guizhou, Henan, Hubei, Hunan, Ningxia, Shanxi, Shaanxi, Shandong, Sichuan, Tianjin, Jiangxi, Yunnan, and Shanghai dialects), English, Japanese, Korean, German, French, Russian - paraformer-8k-v2: Chinese (Mandarin) |
| Supported audio formats | aac, amr, avi, flac, flv, m4a, mkv, mov, mp3, mp4, mpeg, ogg, opus, wav, webm, wma, wmv | aac, amr, avi, flac, flv, m4a, mkv, mov, mp3, mp4, mpeg, ogg, opus, wav, webm, wma, wmv |
| Sample rate | Any | Varies by model: - paraformer-v2: Any - paraformer-8k-v2: 8 kHz |
| Sound channels | Any | |
| Input format | Publicly accessible URLs of files to be recognized. Up to 100 audio files are supported. | |
| Audio size/duration | Each audio file must be no larger than 2 GB and no longer than 12 hours. | |
| Emotion recognition | Not supported | |
| Timestamp | Supported Always on | Supported Off by default, can be enabled |
| Punctuation prediction | Supported Always on | |
| Hotwords | Supported ** **Important ** The hotword feature is supported only in the primary workspace and is not available in sub-workspaces. | |
| ITN | Supported Always on | |
| Singing voice recognition | Supported This feature is supported only by fun-asr and fun-asr-2025-11-07. | Not supported |
| Noise rejection | Supported Always on | |
| Sensitive word filtering | Supported Filters content from the Alibaba Cloud Model Studio sensitive word list by default. Custom filtering is required for additional content. | |
| Speaker diarization | Supported Off by default, can be enabled | |
| Filler word filtering | Not supported | Supported Off by default, can be enabled |
| VAD | Supported Always on | |
| Rate limiting (RPS) | Job submission API: 10 Task query API: 20 | Job submission API: 20 Task query API: 20 |
| Connection types | DashScope: Java/Python SDK, RESTful API | |
| Pricing | International: $0.000035/second The Chinese mainland: $0.000032/second | The Chinese mainland: $0.000012/second |
FAQ
Q: How can I improve recognition accuracy?
Several factors affect accuracy. Review each and apply the corresponding optimization.
Key factors:
Sound quality: Recording device quality, sample rate, and ambient noise directly affect clarity. High-quality audio input is essential.
Speaker characteristics: Variations in pitch, speech rate, accent, and dialect increase recognition difficulty, especially for rare dialects or heavy accents.
Language and vocabulary: Mixed languages, technical terms, or slang increase recognition difficulty. Configure hotwords to improve accuracy for domain-specific terms.
Contextual understanding: Insufficient context can cause semantic ambiguity, especially in situations where surrounding context is needed for correct recognition.
Optimization methods:
Optimize audio quality: Use high-performance microphones at the recommended sample rate. Minimize ambient noise and echo.
Adapt to the speaker: For audio with strong accents or dialects, select a model that supports those specific dialects.
Configure hotwords: Set hotwords for technical terms, proper nouns, and other specific words.
Preserve context: Avoid splitting audio into excessively short clips.