藏语非实时语音识别 (算法编码:8005200052)
协议类型:HTTPS(POST,回调方式)
一、接入点
| 环境 |
地址 |
| 公网 |
https://api-maas.teleai.com.cn/aipaas/voice/v1/TibetanNostreamingAsrR/filetrans |
- API Path:
/aipaas/voice/v1/TibetanNostreamingAsrR/filetrans
- 请求方法:
POST
- Content-Type:
application/json
二、鉴权
采用请求头携带鉴权信息:
Authorization: <鉴权信息>
| 请求头 |
必填 |
说明 |
Content-Type |
是 |
内容类型,固定application/json |
Content-Length |
否 |
HTTP Body 中内容的长度 |
X-APP-ID |
是 |
控制台 → 应用管理 → AppID |
Device-Uuid |
是 |
设备uuid |
Authorization |
是 |
鉴权信息 |
三、能力简介
离线语音识别,用于将离线音频文件的内容转换为文字的场景。
- 支持多轨 MP3、WAV、PCM、OGG 格式录音文件识别,其中 MP3 文件要求编码格式为 mp3,WAV 和 PCM 文件要求编码格式为 pcm_s16le
- 支持调用方式:当前仅支持回调方式
- 支持 8000 Hz、16000 Hz、22050 Hz、24000 Hz、32000 Hz、44100 Hz、48000 Hz 采样率
- 支持藏语
- 录音文件地址链接支持 HTTP,且访问权限需要保证能被服务端访问和下载
3.1 修订历史
| 修订日期 |
算法版本号 |
修订内容 |
| 2026-05-15 |
V1.0.0 |
支持藏语文件音频转写 |
四、请求与响应
4.1 请求参数
| 字段 |
类型 |
必填 |
说明 |
req_id |
string |
是 |
请求全局唯一 ID,记录该值便于排查问题 |
file_link |
string |
是 |
存放录音文件的地址链接,支持 HTTP |
enable_callback |
boolean |
是 |
是否启用回调功能,当前仅支持设为true(开启回调方式) |
callback_url |
string |
否 |
回调用户服务的地址,URL 支持 HTTP,如果开启enable_callback,则该字段必须有值 |
return_mode |
int |
否 |
结果返回模式:0 push,1 pull,默认为 0。push 模式即提供 callback_url 接收最终结果回调;pull 模式即通过大模型异步调用结果回查接口查询最终调用结果,接口文档详见开发指南下的大模型异步调用结果回查 |
sample_rate |
int |
否 |
音频采样率,默认值16000Hz,仅针对 pcm 格式音频有效 |
num_channels |
int |
否 |
输入音频数据的通道数(正整数),默认值是1,仅针对 pcm 格式音频有效 |
enable_punc |
boolean |
否 |
是否开启加标点,默认值是true |
enable_itn |
boolean |
否 |
是否开启 ITN,默认值是true |
hotwords |
array |
否 |
热词列表,示例:["热词A", "热词B"] |
• 务必保证 file_link 与 callback_url 所填地址与服务的网络连通性。
4.2 响应体
4.2.1 顶层字段
| 字段 |
类型 |
说明 |
code |
int |
状态码,见服务码说明 |
message |
string |
状态说明,见服务码说明 |
task_id |
string |
识别任务 ID |
business_duration |
int |
识别的音频文件总时长,单位为毫秒。注:如果是双通道音频,总时长也会倍增 |
result |
object |
识别结果 |
4.2.2 识别结果 result
| 字段 |
类型 |
说明 |
sentences |
array |
句子列表 |
4.2.3 句子 sentences[]
| 字段 |
类型 |
说明 |
begin_time |
int |
该句的起始时间偏移,单位为毫秒 |
end_time |
int |
该句的结束时间偏移,单位为毫秒 |
texts |
string |
该句的识别文本结果(如果开启 nbest,则是多个文本的列表) |
channel_id |
int |
音轨通道id,0 为左声道,1 为右声道 |
speaker_id |
int |
该句所属说话人 ID(当服务不具备话者分离能力时,speaker_id 与 channel_id 相同) |
confidence |
float |
当前句子识别结果的置信度,取值范围:[0.0, 1.0],值越大表示置信度越高 |
loudness |
float |
该句的声音响度,单位:db |
• 调用方会收到两次响应:第一次为请求的同步响应,不包含识别结果;第二次为异步回调响应,由 callback_url 接收,包含识别结果。
4.3 请求示例
{
"file_link": "https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav",
"req_id": "3a87fe9793c9-4ebd-95d4-4ce2-a80c054b",
"enable_callback": true,
"callback_url": "http://{ip}/{port}/{uri}"
}
五、状态码说明
5.1 算法状态码
| 状态码 |
说明 |
描述 |
解决方法 |
10000 |
Success |
成功 |
执行下一步操作 |
10301 |
Required parameter miss |
必填参数缺失 |
检查请求体是否符合接口协议 |
10302 |
Too many requests |
并发请求过多 |
联系商务,增加并发 |
10304 |
Parse request body fail |
请求格式错误 |
查看请求的 URL body 格式是否正确,参考接口文档 |
10503 |
Server connection time out |
服务连接超时 |
联系技术人员 |
10603 |
Fetch audio failed |
获取音频文件失败 |
检查文件 URL 是否正确 |
10604 |
Decode audio failed |
解析音频文件失败 |
检查源音频文件格式是否正确 |
10605 |
Resample audio failed |
重采样音频失败 |
联系技术人员 |
10607 |
Audio too large |
音频文件过大 |
切分音频再进行识别 |
10608 |
Audio too long |
音频过长 |
切分音频再进行识别 |
10801 |
Task processing |
任务处理中 |
等待重新查询 |
10903 |
Recognition failed |
识别失败 |
联系技术人员 |
10904 |
Query failed |
查询失败 |
联系技术人员,通常是因为 task id 错误导致 |
10905 |
Unexpected error |
未知错误 |
联系技术人员 |
5.2 公共状态码
- 接口响应的公共状态码由网关统一定义,一般用于标识鉴权失败、限流或服务异常,具体业务错误码、错误信息及排查建议请参考:开发指南-公共信息及状态码。
六、调用示例
Python
import json
import hashlib
import hmac
import time
import re
import urllib.parse
import requests
import warnings
from datetime import datetime
import logging
# 配置日志,设置日志级别为INFO,并指定日志格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 配置环境变量
X_APP_ID = "yourAppId"
AUTHORIZATION = "yourAuthorization"
# 请求的URL
url = "https://api-maas.teleai.com.cn/aipaas/voice/v1/TibetanNostreamingAsrR/filetrans"
# 请求数据
request_data = {
"req_id": "",
"callback_url": "",
"num_channels": 0,
"enable_punc": False,
"sample_rate": 0,
"file_link": "",
"enable_itn": False,
"enable_callback": False,
"hotwords": []
}
# 构建请求头
headers = {
"Content-Type": "application/json",
"Device-Uuid": "2018619061498245122",
"X-APP-ID": X_APP_ID,
"Authorization": AUTHORIZATION
}
def timeSimple(timestamp):
# 将时间戳转换为HH:MM:SS格式的时间字符串
dt_object = datetime.fromtimestamp(timestamp)
formatted_time = dt_object.strftime("%H:%M:%S")
return formatted_time
def send_request(url):
try:
start_time = time.time()
logging.info(f"请求路径: {url}")
logging.info(f"开始发送: {timeSimple(start_time)}")
with requests.post(
url, json=request_data, headers=headers, stream=True, verify=False
) as response:
first_packet_time = None
if response.status_code == 200:
logging.info(f"接受到返回: {timeSimple(time.time())}")
for chunk in response.iter_content(chunk_size=1024):
if chunk:
if first_packet_time is None:
first_packet_time = time.time()
logging.info(
f"Received chunk: {timeSimple(time.time())} {chunk.decode('utf-8')}"
)
end_time = time.time()
logging.info(f"Time to first byte (TTFB): {first_packet_time - start_time:.3f} seconds")
logging.info(f"Request completed in {end_time - start_time:.3f} seconds")
else:
logging.error(f"Request failed with status code {response.status_code}")
except Exception as e:
logging.error(f"An error occurred: {e}")
# 发送请求
send_request(url)
logging.info(f"headers = {headers}")
Java(使用 Hutool + FastJSON)
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.Map;
/**
* 为保证示例可以正常运行,请确认maven中是否存在以下依赖:
* <dependency>
* <groupId>cn.hutool</groupId>
* <artifactId>hutool-all</artifactId>
* <version>5.8.29</version>
* </dependency>
* <dependency>
* <groupId>com.alibaba</groupId>
* <artifactId>fastjson</artifactId>
* <version>1.2.83</version>
* </dependency>
*/
public class Example {
public static void example() {
try {
// 算法调用地址,请根据实际情况修改
String url = "https://api-maas.teleai.com.cn/aipaas/voice/v1/TibetanNostreamingAsrR/filetrans";
// 设置请求头
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("Device-Uuid", "2018619061498245122");
headers.put("X-APP-ID", "你实际的AppId");
headers.put("Authorization", "你实际的Authorization");
// 设置请求参数,请根据实际情况修改
String requestString = "{\n" +
" \"req_id\":\"\",\n" +
" \"callback_url\":\"\",\n" +
" \"num_channels\":0,\n" +
" \"enable_punc\":false,\n" +
" \"sample_rate\":0,\n" +
" \"file_link\":\"\",\n" +
" \"enable_itn\":false,\n" +
" \"enable_callback\":false,\n" +
" \"hotwords\":[]\n" +
"}";
// 发起HTTP请求
HttpResponse response = HttpRequest.post(url)
.headerMap(headers, true)
.body(requestString)
.execute();
// 输出响应结果
System.out.println(response.body());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
example();
}
}