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,处于国际领先水平。
- 模态支持:
- 输入模态:音频
- 输出模态:文本
模型优势:
- 精准识别:极低的字符错误率(CER = 0.0717),在最新竞品评估中具有显著的准确率优势。
- 高效自定义词典:用户可以通过简易配置快速导入专属词汇、项目代号(如 AutoGLM、智谱AI输入法)及生僻人名、地名等,只需设置一次即可避免反复手动修改的痛点。
- 应对复杂场景:在中英混合表达、指令化文本、行业专有名词、长句及口语化表达等复杂场景下,能稳定输出高质量文本,整体表现优于同类竞品。
支持语言与方言:
GLM-ASR-2512 具备出色的多语言与方言处理能力,能够精准转录全球多种主流语言及地区性口语:
- 中文:支持普通话,以及四川话、粤语、闽南语、吴语等主要方言。
- 英语:支持美式、英式等多种口音。
- 其他全球常用语言:法语、德语、日语、韩语、西班牙语、阿拉伯语等数十种语言。
典型应用场景与示例能力:
该模型可广泛应用于以下推荐场景,并具备以下智能解析能力:
- 实时会议纪要与转录:能够自动区分中英文语境,精准识别数字与单位组合,智能解析重复、卡顿等不连贯的口语,输出逻辑完整的文本。
- 客服质检与工单处理:高精度转写客服通话内容,提升质检效率,且不受环境音干扰,支持多场景分析。
- 办公文档输入与语音搜索:支持语音快速生成工作文档、邮件。在车辆导航等场景中,能智能判别方言并准确理解指令。
- 视频直播与课堂转录:为直播、教育课程提供实时低延迟字幕。即使面对带有口音的英语(如中式英语)以及噪音环境,也能根据真实语境进行矫正输出。
- 游戏语音转写:精确解析玩家黑话、战术交流口语,无缝切换中英文语境,支持流式转写而不影响游戏流畅性。
- 医疗病历录入:实时识别大量医学专业术语,支持医生口述录入并快速生成电子病历。
API 接口地址:
https://wcode.net/api/gpt/v1/audio/transcriptions
此 API 接口兼容 OpenAI 的 Speech-to-Text 接口规范,可直接使用 OpenAI 的 SDK 来调用。仅需替换以下配置即可:
base_url替换为https://wcode.net/api/gpt/v1api_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)
- prompt(提示词)
- hotwords(热词)
- stream(流式响应)
- file_format(音频格式)
- file_url(音频 URL)
- file_base64(音频 Base64)
- response_format(响应格式)
- file(音频文件)
重要提示:由于模型架构不同,部分参数可能仅适用于特定的模型。
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。(备注:file、file_url、file_base64 三选一,使用任一方式传入音频文件均可)
音频格式为 wav 或 mp3;文件大小 ≤ 25 MB;音频时长 ≤ 30 秒。
file_base64(音频 Base64)
-
参数:
file_base64 -
可选,string
待识别的音频文件的 Base64 编码内容。(备注:file、file_url、file_base64 三选一,使用任一方式传入音频文件均可)
音频格式为 wav 或 mp3;文件大小 ≤ 25 MB;音频时长 ≤ 30 秒。
response_format(响应格式)
-
参数:
response_format -
可选,string
-
取值范围:
json|text -
默认:
json
指定接口响应的内容格式。
默认为 json,响应体含 text 与 usage 字段;设为 text 时仅返回识别结果的纯文本。
file(音频文件)
-
参数:
file -
可选,file
待识别的本地音频文件,通过 multipart/form-data 上传。(备注:file、file_url、file_base64 三选一,使用任一方式传入音频文件均可)
音频格式为 wav 或 mp3;文件大小 ≤ 25 MB;音频时长 ≤ 30 秒。
以上文档为标准版 API 接口文档,可直接用于项目开发和系统调用。如果标准版 API 接口无法满足您的需求,需要定制开发 API 接口,请联系我们的 IT 技术支持工程师:
(沟通需求✅ → 确认技术方案✅ → 沟通费用与工期✅ → 开发&测试✅ → 验收交付✅ → 维护升级✅)
![]()