GLM ASR 2512 API 接口、参数 & 代码示例

z-ai/glm-asr-2512

GLM-ASR-2512 是由智谱 AI 推出新一代语音识别模型,支持音频转文字、中英混合及多国语言,精通粤语/四川话等方言;具备自定义词典功能,完美适配会议纪要、客服质检、医疗病历及游戏语音等复杂场景,提供高效精准的流式转录服务。

模型 ID
z-ai/glm-asr-2512
模型系列
GLM
更新日期
模型能力
语音识别
模型价格(每分钟)
¥ 0.015

GLM ASR 2512 模型介绍:

GLM-ASR-2512 是由智谱 AI 推出新一代语音识别模型,支持音频转文字、中英混合及多国语言,精通粤语/四川话等方言;具备自定义词典功能,完美适配会议纪要、客服质检、医疗病历及游戏语音等复杂场景,提供高效精准的流式转录服务。

模型概览:

  • 定义与功能:支持将语音实时转换为高质量文字。无论是日常聊天、会议记录,还是包含专业术语的复杂场景,都能提供快速、可靠、精准的转录服务。
  • 核心指标:在多场景、多口音条件下表现优异,字符错误率(CER)低至 0.0717,处于国际领先水平。
  • 模态支持
    • 输入模态:音频
    • 输出模态:文本

模型优势:

  1. 精准识别:极低的字符错误率(CER = 0.0717),在最新竞品评估中具有显著的准确率优势。
  2. 高效自定义词典:用户可以通过简易配置快速导入专属词汇、项目代号(如 AutoGLM智谱AI输入法)及生僻人名、地名等,只需设置一次即可避免反复手动修改的痛点。
  3. 应对复杂场景:在中英混合表达、指令化文本、行业专有名词、长句及口语化表达等复杂场景下,能稳定输出高质量文本,整体表现优于同类竞品。

支持语言与方言:

GLM-ASR-2512 具备出色的多语言与方言处理能力,能够精准转录全球多种主流语言及地区性口语:

  • 中文:支持普通话,以及四川话、粤语、闽南语、吴语等主要方言。
  • 英语:支持美式、英式等多种口音。
  • 其他全球常用语言:法语、德语、日语、韩语、西班牙语、阿拉伯语等数十种语言。

典型应用场景与示例能力:

该模型可广泛应用于以下推荐场景,并具备以下智能解析能力:

  • 实时会议纪要与转录:能够自动区分中英文语境,精准识别数字与单位组合,智能解析重复、卡顿等不连贯的口语,输出逻辑完整的文本。
  • 客服质检与工单处理:高精度转写客服通话内容,提升质检效率,且不受环境音干扰,支持多场景分析。
  • 办公文档输入与语音搜索:支持语音快速生成工作文档、邮件。在车辆导航等场景中,能智能判别方言并准确理解指令。
  • 视频直播与课堂转录:为直播、教育课程提供实时低延迟字幕。即使面对带有口音的英语(如中式英语)以及噪音环境,也能根据真实语境进行矫正输出。
  • 游戏语音转写:精确解析玩家黑话、战术交流口语,无缝切换中英文语境,支持流式转写而不影响游戏流畅性。
  • 医疗病历录入:实时识别大量医学专业术语,支持医生口述录入并快速生成电子病历。

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=z-ai/glm-asr-2512'

方式二:公网音频 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": "z-ai/glm-asr-2512",
    "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": "z-ai/glm-asr-2512",
    "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("z-ai/glm-asr-2512
".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'] = 'z-ai/glm-asr-2512';
  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', 'z-ai/glm-asr-2512'],
  ['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", "z-ai/glm-asr-2512")
    .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, "z-ai/glm-asr-2512", 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", "z-ai/glm-asr-2512")

  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("z-ai/glm-asr-2512"), "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", "z-ai/glm-asr-2512");
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', 'z-ai/glm-asr-2512');
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", "z-ai/glm-asr-2512")
  .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' => 'z-ai/glm-asr-2512'],
    ['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' => 'z-ai/glm-asr-2512',
    '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": "z-ai/glm-asr-2512",
}

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="z-ai/glm-asr-2512",
    file=audio_file,
  )

print(transcription.text)

请求参数:

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

model(模型 ID)

  • 参数:model

  • 必选string

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

prompt(提示词)

  • 参数:prompt

  • 可选,string

为语音识别提供上下文或风格引导的提示文本。

hotwords(热词)

  • 参数:hotwords

  • 可选,array

提高特定词汇识别准确率的自定义热词列表。

格式示例:["北京","上海"]

stream(流式响应)

  • 参数:stream

  • 可选,boolean

  • 取值范围:true | false

  • 默认:false

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

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

file_format(音频格式)

  • 参数:file_format

  • 可选,string

指定音频的格式扩展名。

file_url(音频 URL)

  • 参数:file_url

  • 可选,string

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

音频格式为 wavmp3;文件大小 ≤ 25 MB;音频时长 ≤ 30 秒。

file_base64(音频 Base64)

  • 参数:file_base64

  • 可选,string

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

音频格式为 wavmp3;文件大小 ≤ 25 MB;音频时长 ≤ 30 秒。

response_format(响应格式)

  • 参数:response_format

  • 可选,string

  • 取值范围:json | text

  • 默认:json

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

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

file(音频文件)

  • 参数:file

  • 可选,file

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

音频格式为 wavmp3;文件大小 ≤ 25 MB;音频时长 ≤ 30 秒。


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

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

最受关注模型

DeepSeek V4 Pro

文本生成、深度思考

DeepSeek V4 Flash

文本生成、深度思考

XiaoMi MiMo V2.5 Pro

文本生成、深度思考

Tencent Hunyuan Hy3 Preview

文本生成、深度思考

XiaoMi MiMo V2.5

文本生成、深度思考

最新发布模型

Kimi K3

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

KAT Coder Pro V2.5

文本生成、代码补全

Doubao Seedream 5.0 Pro

图片生成

Qwen3 Rerank

文本重排序

Tongyi GTE Rerank V2

文本重排序

向量化模型

GLM Embedding 3

文本向量化

Qwen3 Embedding 8B

文本嵌入、文本向量化

Doubao Embedding Large Text 250515

文本向量化

Qwen Text Embedding V4

文本向量化

Qwen Text Embedding V1

文本向量化

语音识别模型

MiMo V2.5 ASR

音频识别

Fun ASR Flash

语音识别、方言识别

Qwen3 ASR Flash

语音识别

GLM ASR 2512

语音识别

语音合成模型

CosyVoice V3 Plus

语音合成

CosyVoice V3 Flash

语音合成

GLM TTS

语音合成