API Path
/aipaas/voice/v1/UyghurStreamingStdTts/streaming
请求协议
WS
建立连接时的请求参数(websocket open):
请求头部:
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | 内容类型 | application/json | application/json | |||
| X-APP-ID | 是 | 控制台--应用管理--AppID | |||||
| Device-Uuid | 是 | 设备管理-设备uuid | |||||
| Authorization | 是 | 鉴权信息 |
建立连接时的响应内容(websocket open):
请求报文:
请求参数 Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| req_id | 请求全局唯⼀ ID,记录该值便于排查问题 | 是 | [string] | 0 | ||
| text | 待合成的⽂本,需要为 UTF-8 编码 | 是 | [string] | 0 | ||
| format | 音频编码格式,支持 PCM 和 MP3 格式,默认值:PCM | 否 | [string] | 0 | ||
| sample_rate | ⾳频采样率,⽀持 16000 Hz 和 8000 Hz,默认值:16000 | 否 | [int] | 0 | ||
| voice | 说话⼈,默认值:aman, 可支持abu(维语),aman(维语),reyi(维语),ayi(维语) | 否 | [string] | 0 | ||
| volume | ⾳量,取值范围:[0, 100],默认值:50 | 否 | [int] | 0 | ||
| speech_rate | 语速,取值范围:[0.5, 2.0],默认值:1.0 | 否 | [float] | 0 | ||
| pitch | 语调,取值范围:[0.5, 2.0],默认值:1.0 | 否 | [float] | 0 | ||
| 响应报文: |
返回结果
成功 (200)
Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 状态码,⻅服务码说明 | 是 | [int] | 0 | ||
| message | 状态说明,⻅服务码说明 | 是 | [string] | 0 | ||
| sid | 会话全局唯一 id,用于记录本次会话 | 是 | [string] | 0 | ||
| result | 是 | [object] | 0 | |||
| result>>audio | 合成⾳频数据,经过 base64 编码 | 是 | [string] | 0 | ||
| result>>audio_len | 合成⾳频⻓度,单位:ms | 是 | [int] | 0 | ||
| result>>is_end | 标志位: true:最后⼀个合成⽚段 false:中间合成⽚段 | 是 | [boolean] | 0 | ||
| result>>phn_seq_len | 合成⾳频⾳素序列⻓度 | 是 | [int] | 0 | ||
| result>>phn_id_seq | 合成⾳频⾳素 ID 序列 | 是 | [array] | 0 | ||
| result>>phn_name_seq | 合成⾳频⾳素名称序列 | 是 | [array] | 0 | ||
| result>>phn_dur_seq | 合成⾳频⾳素持续时间序列 | 是 | [array] | 0 |
| 修订日期 | 算法版本号 | 修订内容 |
|---|---|---|
| 2026-06-16 | V1.0.0 | 新算法上线 |
服务接口调用时需要严格遵循服务鉴权规则,服务调用鉴权规则请参见:开发指南 - 接口签名认证。
无
| 返回码 | 说明 | 错误信息 | 解决⽅法 |
|---|---|---|---|
| 101 | 成功 | {"message":"success"} | 成功,开始语音合成 |
| 4001 | 授权失败 | {"message":"check sign fail"} | 生授权失败,联系商务 |
| 4002 | 并发请求过多 | {"message":"Too many requests."} | 联系商务,增加并发 |
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml"
}
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml",
"result": {
"audio": "//6YYmNiDlSUXjZlDP8yADQAQ1E2ANKJOaTqFGUgIwDQAKAA==",
"audio_len": 2500,
"is_end": false,
"phn_seq_len": 10,
"phn_id_seq": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"phn_name_seq": ["j", "in1", "t", "ian1", "z", "en3", "m", "e1", "l", "e5"],
"phn_dur_seq": [150, 350, 150, 350, 150, 350, 150, 350, 150, 350]
}
}
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml",
"result": {
"audio": "//6YYmNiDlSUXjZlDP8yADQAQ1E2ANKJOaTqFGUgIwDQAKAA==",
"audio_len": 2500,
"is_end": true,
"phn_seq_len": 10,
"phn_id_seq": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"phn_name_seq": ["j", "in1", "t", "ian1", "z", "en3", "m", "e1", "l", "e5"],
"phn_dur_seq": [150, 350, 150, 350, 150, 350, 150, 350, 150, 350]
}
}
{
"req_id": "3a87fe9793c9-4ebd-95d4-4ce2-a80c054b",
"text": "2025-10-27 ئالدىن ئامانەت 99.80 يۈەن"
}
| 状态码 | 解释 | 说明 | 解决方法 |
|---|---|---|---|
| 10301 | Parameter error | 参数错误 | 检查请求体是否符合接口协议 |
| 10304 | Parse request body fail | 请求格式错误 | 查看请求的 URL body 格式是否正确,参考接口 文档 |
| 10503 | Server connection time out | 服务连接超时 | 联系技术人员 |
| 10903 | Synthesis failed | 合成失败 | 联系技术人员 |
| 10000 | Success | 成功 | 执行下一步操作 |
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
/**
* 为保证示例可以正常运行,请确认maven中是否存在以下依赖:
* <dependency>
* <groupId>org.java-websocket</groupId>
* <artifactId>Java-WebSocket</artifactId>
* <version>1.5.3</version>
* </dependency>
* <dependency>
* <groupId>com.alibaba</groupId>
* <artifactId>fastjson</artifactId>
* <version>1.2.83</version>
* </dependency>
*/
public class WebSocketClientCase {
public static void main(String[] args) throws Exception {
// 算法调用地址,请根据实际情况修改
URI uri = URI.create("算法调用地址");
// 设置请求头
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 requestParam = "{\n" +
" \"req_id\":\"\",\n" +
" \"voice\":\"\",\n" +
" \"volume\":0,\n" +
" \"sample_rate\":0,\n" +
" \"format\":\"\",\n" +
" \"speech_rate\":0.0,\n" +
" \"text\":\"\",\n" +
" \"pitch\":0.0\n" +
"}";
// 创建WebSocket客户端实例
WebSocketClient client = new WebSocketClient(uri, new Draft_6455(), headers, 5000) {
@Override
public void onOpen(ServerHandshake handshake) {
System.out.println("连接已建立");
// 连接成功后发送消息
send(JSONObject.toJSONString(requestParam));
}
@Override
public void onMessage(String message) {
System.out.println("收到消息: " + message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
System.out.println("连接关闭: " + reason);
}
@Override
public void onError(Exception ex) {
System.err.println("发生错误: " + ex.getMessage());
}
};
// 建立连接
client.connect();
// 保持程序运行
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 关闭连接
client.close();
}
}
import asyncio
import websockets
import json
# 配置环境变量
X_APP_ID = "yourAppId"
AUTHORIZATION = "yourAuthorization"
# 请求的URL
URL = "算法调用地址"
# 请求数据
request_data = {
"req_id":"",
"voice":"",
"volume":0,
"sample_rate":0,
"format":"",
"speech_rate":0.0,
"text":"",
"pitch":0.0
}
async def connect_websocket():
headers = {
"Content-Type": "application/json",
"Device-Uuid": "2018619061498245122",
"X-APP-ID": X_APP_ID,
"Authorization": AUTHORIZATION
}
try:
async with websockets.connect(URL, extra_headers=headers) as websocket:
print("连接已建立")
message = json.dumps(request_data)
await websocket.send(message)
while True:
response = await websocket.recv()
print(f"接收: {response}")
except Exception as e:
print(f"连接异常: {e}")
# 运行异步客户端
if __name__ == "__main__":
asyncio.run(connect_websocket())