Fun ASR Flash API 接口、参数 & 代码示例

tongyi/fun-asr-flash

Fun-ASR-Flash 是阿里巴巴通义实验室推出的工业级端到端语音识别(ASR)大模型,全面支持汉语传统七大方言体系(官话/吴/湘/赣/客/闽/粤),并适配 20+ 地区口音官话。针对中文古诗词的韵律、节奏与文言表达特点进行专项优化,提升对古诗词内容的识别准确率,适用于文化传承、教育讲解、有声读物等场景。

模型 ID
tongyi/fun-asr-flash
模型系列
TongYi
更新日期
模型能力
语音识别、方言识别
模型价格(每分钟)
¥ 0.02

Fun ASR Flash 模型介绍:

Fun-ASR-Flash 是阿里巴巴通义实验室推出的工业级端到端语音识别(ASR)大模型,全面支持汉语传统七大方言体系(官话/吴/湘/赣/客/闽/粤),并适配 20+ 地区口音官话。模型针对中文古诗词的韵律、节奏与文言表达特点进行专项优化,提升对古诗词内容的识别准确率,适用于文化传承、教育讲解、有声读物等场景。

模型优化了标点预测与文本归一化能力,使输出文本更符合书面表达习惯,数字、日期、金额等信息自动转换为标准格式,增强内容的可读性与专业性。同时语种扩展至英语、日语、韩语、越南语、泰语、印尼语、马来语、菲律宾语、印地语、阿拉伯语、法语、德语、西班牙语、葡萄牙语、俄语、意大利语、荷兰语、瑞典语、丹麦语、芬兰语、挪威语、希腊语、波兰语、捷克语、匈牙利语、罗马尼亚、保加利亚语、克罗地亚语、斯洛伐克语等,共计30个语种。支持 Context 上下文能力,可转写 5 分钟以内的音频。

核心特性:

  • 超强的上下文理解与行业适应性: 结合了大语言模型(LLM)的上下文理解能力,在教育、金融等垂直领域表现出色。能够精准识别行业专业术语、专有名词与行业特有表达,有效遏制了传统 ASR 模型容易出现的“幻觉”生成和语种混淆。
  • 极强的抗噪与远场识别: 针对远距离拾音以及会议室、车载环境、工业现场等高噪声场景进行了深度优化,拥有超高的远场高噪声识别准确率。
  • 丰富的中文方言与口音支持:
  • 7大方言: 吴语、粤语、闽语、客家话、赣语、湘语、晋语。
  • 26种地域口音: 覆盖河南、陕西、湖北、四川、重庆、云南、贵州、广东、广西、河北、山东等20多个省市的口音。
  • 多语言混合识别: 支持涵盖多达 30种语言 的自由切换和混合识别(重点优化了东亚与东南亚语种)。
  • 特殊场景优化: 强化了在音乐背景干扰下的识别性能,甚至支持歌词识别说唱(Rap)语音识别

完整的语音理解管线(One-Call 功能):

FunASR Flash 的一大优势在于它不是一个单一的字词转录工具,而是一个全栈的“语音理解流水线”。通过一次 API 调用,它能够同时完成以下任务:

  1. 语音识别(ASR): 文本转录与自动语种检测。
  2. 语音活动检测(VAD): 毫秒级自适应静音切分,精准剥离无声片段。
  3. 标点恢复与正规化: 自动为转录文本添加标点,并应用逆文本正则化(如将语音中的“一百”转化为数字“100”),输出规范、高可读性的文本。
  4. 说话人分离(Diarization): 自动识别“谁说了什么”,并为每句话标注说话人 ID(如 Speaker 0Speaker 1),非常适合会议纪要。
  5. 时间戳生成: 支持句子级甚至词语级的时间戳对齐。

API 接口地址:

https://wcode.net/api/gpt/v1/audio/transcriptions

此 API 接口兼容 OpenAI 的 Speech-to-Text 接口规范,可直接使用 OpenAI 的 SDK 来调用。仅需替换以下配置即可:

  1. base_url 替换为 https://wcode.net/api/gpt/v1
  2. api_key 替换为从 https://platform.wcode.net 获取到的 API Key

具体可参考下方的各编程语言代码示例中的 OpenAI SDK 调用示例。

请求方法:

POST

各编程语言代码示例:

# TODO: 以下代码中的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net

方式一:上传本地音频文件(multipart/form-data):

curl --request POST 'https://wcode.net/api/gpt/v1/audio/transcriptions' \
  --header 'Authorization: Bearer API_KEY' \
  --form 'file=@/path/to/audio.mp3' \
  --form 'model=tongyi/fun-asr-flash'

方式二:公网音频 URL(application/json):

curl --request POST 'https://wcode.net/api/gpt/v1/audio/transcriptions' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer API_KEY' \
  --data '{
    "model": "tongyi/fun-asr-flash",
    "file_url": "https://example.com/audio.mp3"
  }'

方式三:Base64 编码音频(application/json):

curl --request POST 'https://wcode.net/api/gpt/v1/audio/transcriptions' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer API_KEY' \
  --data '{
    "model": "tongyi/fun-asr-flash",
    "file_base64": "<BASE64_ENCODED_AUDIO>",
    "file_format": "mp3"
  }'
import Foundation

let url = URL(string: "https://wcode.net/api/gpt/v1/audio/transcriptions")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer API_KEY", forHTTPHeaderField: "Authorization")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net

let boundary = UUID().uuidString
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

var body = Data()
body.append("--\(boundary)
".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"model\"

".data(using: .utf8)!)
body.append("tongyi/fun-asr-flash
".data(using: .utf8)!)
body.append("--\(boundary)
".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"
".data(using: .utf8)!)
body.append("Content-Type: audio/mpeg

".data(using: .utf8)!)
body.append(try! Data(contentsOf: URL(fileURLWithPath: "/path/to/audio.mp3")))
body.append("
--\(boundary)--
".data(using: .utf8)!)

request.httpBody = body

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  if let data = data {
    print(String(data: data, encoding: .utf8) ?? "")
  }
}
task.resume()
import 'package:http/http.dart' as http;
import 'dart:io';

Future<void> main() async {
  var request = http.MultipartRequest(
    'POST',
    Uri.parse('https://wcode.net/api/gpt/v1/audio/transcriptions'),
  );

  request.headers['Authorization'] = 'Bearer API_KEY';  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  request.fields['model'] = 'tongyi/fun-asr-flash';
  request.files.add(await http.MultipartFile.fromPath('file', '/path/to/audio.mp3'));

  var streamedResponse = await request.send();
  var response = await http.Response.fromStream(streamedResponse);

  print(response.body);
}
require 'uri'
require 'net/http'

url = URI("https://wcode.net/api/gpt/v1/audio/transcriptions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer API_KEY'  # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net

form_data = [
  ['model', 'tongyi/fun-asr-flash'],
  ['file', File.open('/path/to/audio.mp3')]
]
request.set_form form_data, 'multipart/form-data'

response = http.request(request)
puts response.read_body
use reqwest::multipart;

#[tokio::main]
pub async fn main() {
  let url = "https://wcode.net/api/gpt/v1/audio/transcriptions";

  let file_part = multipart::Part::bytes(std::fs::read("/path/to/audio.mp3").unwrap())
    .file_name("audio.mp3")
    .mime_str("audio/mpeg")
    .unwrap();

  let form = multipart::Form::new()
    .text("model", "tongyi/fun-asr-flash")
    .part("file", file_part);

  let client = reqwest::Client::new();
  let response = client.post(url)
    .header("Authorization", "Bearer API_KEY")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
    .multipart(form)
    .send()
    .await
    .unwrap();

  println!("{}", response.text().await.unwrap());
}
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://wcode.net/api/gpt/v1/audio/transcriptions");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer API_KEY");  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_mime *mime = curl_mime_init(hnd);
curl_mimepart *part = curl_mime_addpart(mime);
curl_mime_name(part, "model");
curl_mime_data(part, "tongyi/fun-asr-flash", CURL_ZERO_TERMINATED);
part = curl_mime_addpart(mime);
curl_mime_name(part, "file");
curl_mime_filedata(part, "/path/to/audio.mp3");
curl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime);

CURLcode ret = curl_easy_perform(hnd);
package main

import (
  "bytes"
  "fmt"
  "io"
  "mime/multipart"
  "net/http"
  "os"
)

func main() {
  url := "https://wcode.net/api/gpt/v1/audio/transcriptions"

  body := &bytes.Buffer{}
  writer := multipart.NewWriter(body)

  _ = writer.WriteField("model", "tongyi/fun-asr-flash")

  file, _ := os.Open("/path/to/audio.mp3")
  defer file.Close()

  part, _ := writer.CreateFormFile("file", "audio.mp3")
  io.Copy(part, file)
  writer.Close()

  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("Authorization", "Bearer API_KEY")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  req.Header.Set("Content-Type", writer.FormDataContentType())

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  respBody, _ := io.ReadAll(res.Body)

  fmt.Println(string(respBody))
}
using System.Net.Http.Headers;


var client = new HttpClient();

using var form = new MultipartFormDataContent();
form.Add(new StringContent("tongyi/fun-asr-flash"), "model");
form.Add(new ByteArrayContent(await File.ReadAllBytesAsync("/path/to/audio.mp3")), "file", "audio.mp3");

var request = new HttpRequestMessage(HttpMethod.Post, "https://wcode.net/api/gpt/v1/audio/transcriptions");
request.Headers.Add("Authorization", "Bearer API_KEY");  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
request.Content = form;

var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
var client = new RestClient("https://wcode.net/api/gpt/v1/audio/transcriptions");

var request = new RestRequest("", Method.Post);

request.AddHeader("Authorization", "Bearer API_KEY");  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net

request.AddParameter("model", "tongyi/fun-asr-flash");
request.AddFile("file", "/path/to/audio.mp3", "audio/mpeg");

var response = client.Execute(request);
Console.WriteLine(response.Content);
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

let data = new FormData();
data.append('model', 'tongyi/fun-asr-flash');
data.append('file', fs.createReadStream('/path/to/audio.mp3'));

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://wcode.net/api/gpt/v1/audio/transcriptions',
  headers: {
    'Authorization': 'Bearer API_KEY',  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
    ...data.getHeaders()
  },
  data : data
};

axios.request(config).then((response) => {
  console.log(JSON.stringify(response.data));
}).catch((error) => {
  console.log(error);
});
OkHttpClient client = new OkHttpClient();

RequestBody requestBody = new MultipartBody.Builder()
  .setType(MultipartBody.FORM)
  .addFormDataPart("model", "tongyi/fun-asr-flash")
  .addFormDataPart("file", "audio.mp3",
    RequestBody.create(MediaType.parse("audio/mpeg"), new File("/path/to/audio.mp3")))
  .build();

Request request = new Request.Builder()
  .url("https://wcode.net/api/gpt/v1/audio/transcriptions")
  .post(requestBody)
  .addHeader("Authorization", "Bearer API_KEY")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  .build();

Response response = client.newCall(request).execute();
$client = new \GuzzleHttp\Client();

$response = $client->post('https://wcode.net/api/gpt/v1/audio/transcriptions', [
  'headers' => [
    'Authorization' => 'Bearer API_KEY',  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  ],
  'multipart' => [
    ['name' => 'model', 'contents' => 'tongyi/fun-asr-flash'],
    ['name' => 'file', 'contents' => fopen('/path/to/audio.mp3', 'r')],
  ],
]);

echo $response->getBody();
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://wcode.net/api/gpt/v1/audio/transcriptions",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 5,
  CURLOPT_TIMEOUT => 300,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => [
    'model' => 'tongyi/fun-asr-flash',
    'file' => new CURLFile('/path/to/audio.mp3', 'audio/mpeg', 'audio.mp3'),
  ],
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer API_KEY",  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  ],
]);

$response = curl_exec($curl);
$error = curl_error($curl);

curl_close($curl);

if ($error) {
  echo "cURL Error #:" . $error;
} else {
  echo $response;
}
import requests
import json

url = "https://wcode.net/api/gpt/v1/audio/transcriptions"

headers = {
  "Authorization": "Bearer API_KEY",  # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
}

data = {
  "model": "tongyi/fun-asr-flash",
}

with open("/path/to/audio.mp3", "rb") as audio_file:
  response = requests.post(url, headers=headers, files={"file": audio_file}, data=data)

print(json.dumps(response.json(), indent=4, ensure_ascii=False))
from openai import OpenAI

client = OpenAI(
  base_url="https://wcode.net/api/gpt/v1",
  api_key="API_KEY"  # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
)

with open("/path/to/audio.mp3", "rb") as audio_file:
  transcription = client.audio.transcriptions.create(
    model="tongyi/fun-asr-flash",
    file=audio_file,
  )

print(transcription.text)

请求参数:

重要提示:由于模型架构不同,部分参数可能仅适用于特定的模型。

model(模型 ID)

  • 参数:model

  • 必选,string

语音识别模型 ID。调用时使用模型详情页的模型 ID。

stream(流式响应)

  • 参数:stream

  • 可选,boolean

  • 取值范围:true | false

  • 默认:false

是否以流式方式返回识别结果。

当前接口暂不支持流式响应;请勿设置 stream: true,否则将返回错误。

file_format(音频格式)

  • 参数:file_format

  • 可选,string

指定音频的格式扩展名。

file_url(音频 URL)

  • 参数:file_url

  • 可选,string

待识别的公网音频文件 URL。(备注:filefile_urlfile_base64 三选一,使用任一方式传入音频文件均可)

file_base64(音频 Base64)

  • 参数:file_base64

  • 可选,string

待识别的音频文件的 Base64 编码内容。(备注:filefile_urlfile_base64 三选一,使用任一方式传入音频文件均可)

response_format(响应格式)

  • 参数:response_format

  • 可选,string

  • 取值范围:json | text

  • 默认:json

指定接口响应的内容格式。

默认为 json,响应体含 textusage 字段;设为 text 时仅返回识别结果的纯文本。

file(音频文件)

  • 参数:file

  • 可选,file

待识别的本地音频文件,通过 multipart/form-data 上传。(备注:filefile_urlfile_base64 三选一,使用任一方式传入音频文件均可)


以上文档为标准版 API 接口文档,可直接用于项目开发和系统调用。如果标准版 API 接口无法满足您的需求,需要定制开发 API 接口,请联系我们的 IT 技术支持工程师:

(沟通需求✅ → 确认技术方案✅ → 沟通费用与工期✅ → 开发&测试✅ → 验收交付✅ → 维护升级✅)

最受关注模型

DeepSeek V4 Pro

文本生成、深度思考

DeepSeek V4 Flash

文本生成、深度思考

Qwen 3.6 Plus

文本生成、深度思考、视觉理解

XiaoMi MiMo V2.5 Pro

文本生成、深度思考

Kimi K2.6

文本生成、深度思考、工具调用

最新发布模型

Fun ASR Flash

语音识别、方言识别

Qwen3 ASR Flash

语音识别

GLM TTS

语音合成

GLM ASR 2512

语音识别

Doubao Seed Evolving

多模态、深度思考、视觉理解

向量化模型

GLM Embedding 3

文本向量化

Qwen3 Embedding 8B

文本嵌入、文本向量化

Doubao Embedding Large Text 250515

文本向量化

Qwen Text Embedding V4

文本向量化

Qwen Text Embedding V1

文本向量化

语音识别模型

Fun ASR Flash

语音识别、方言识别

Qwen3 ASR Flash

语音识别

GLM ASR 2512

语音识别

语音合成模型

GLM TTS

语音合成