云服务器内容精选

  • 请求示例 “endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点。 调用 语音合成 API,将文本合称为语音,并调整语音的音色、语速、音高、音量 POST https://{endpoint}/v1/{project_id}/tts Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text": "欢迎使用语音云服务。", "config": { "audio_format": "wav", "sample_rate": "8000", "property": "chinese_xiaoyan_common", "speed": 10, "pitch": 10, "volume": 60 } } 使用Python3语言调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量 # -*- coding: utf-8 -*- # 此demo仅供测试使用,强烈建议使用sdk。需提前安装requests,执行pip install requests import requests import json def stts_demo(): url = 'https://{{endpoint}}/v1/{{project_id}}/tts' # endpoint和project_id需替换 token = '用户对应region的token' text = '待识别的文本' header = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = {'text': text} resp = requests.post(url, data=json.dumps(body), headers=header) print(resp.text) if __name__ == '__main__': stts_demo() 使用Java语言调用语音合成API,将文本合称为语音,并调整语音的音色、语速、音高、音量 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; /** * 此demo仅供测试使用,强烈建议使用SDK */ public class SttsDemo { public void sttsDemo() { try { // endpoint和projectId需要替换成实际信息。 URL url = new URL("https://{{endpoint}}/v1/{{project_id}}/tts"); String token = "对应region的token"; HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.addRequestProperty("Content-Type", "application/json"); connection.addRequestProperty("X-Auth-Token", token); OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); String body = "{\"text\": \"123\"}"; osw.append(body); osw.flush(); InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); while (br.ready()) { System.out.println(br.readLine()); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SttsDemo sttsDemo = new SttsDemo(); sttsDemo.sttsDemo(); } }
  • 响应示例 状态码:200 成功响应示例 { "trace_id": "567e8537-a89c-13c3-a882-826321939651", "result":{ "data": "/+MgxAAUeHpMAUkQAANhuRAC..." } } 状态码:400 失败响应示例 { "error_code": "SIS.0032", "error_msg": "'audio_format' is invalid" }
  • 响应参数 状态码: 200 表7 响应Body参数 参数 是否必选 参数类型 描述 trace_id 否 String 服务内部的令牌,可用于在日志中追溯具体流程。 在某些错误情况下可能没有此令牌字符串。 result 否 CustomResult object 调用成功表示合成结果,调用失败时无此字段。 表8 CustomResult 参数 是否必选 参数类型 描述 data 否 String 语音数据,以Base64编码格式返回。 用户如需生成音频,需要将Base64编码解码成byte数组,再保存为音频,音频格式同“audio_format”参数设置的值,默认为wav格式。 语音合成代码示例请参考SDK,SDK已对Base64转音频过程进行封装,可以直接获取音频文件。 状态码: 400 表9 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见认证鉴权。响应消息头中X-Subject-Token的值即为Token。 Enterprise-Project-Id 否 String 企业项目ID。SIS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。 企业项目创建步骤请参见用户指南。 说明: 账户创建企业项目后,在传参时,有以下三类场景。 携带正确的ID,正常使用SIS服务,账单归到企业ID对应的企业项目中。 携带错误的ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 不携带ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 表3 请求Body参数 参数 是否必选 参数类型 描述 text 是 String 待合成的文本,文本长度限制不大于500字符。 config 否 TtsConfig object 语音合成配置信息。 表4 TtsConfig 参数 是否必选 参数类型 描述 audio_format 否 String 语音格式头:wav、mp3、pcm 默认:wav 父节点:config sample_rate 否 String 采样率:16000、8000赫兹 默认:8000 父节点:config property 否 String 语音合成特征字符串,组成形式为{language}_{speaker}_{domain},即“语种_人员标识_领域”。发音人分为普通发音人和精品发音人,每次调用价格相同,针对精品发音人,每50字计一次调用,不足50字按一次计;普通发音人每100字计一次调用,不足100字按一次计。其中1个汉字、1个英文字母或1个标点均算作1个字符,具体费用请参考价格计算器。 普通发音人:取值范围请参考表 普通发音人property取值范围。 精品发音人:区域仅支持cn-north-4、cn-east-3,暂时不支持音高调节,取值范围请参考表 精品发音人property取值范围。使用精品发音人如果报错SIS.0411,请检查是否符合使用约束。 默认:chinese_xiaoyan_common,中文发音,小燕,温柔女声发音人。 父节点:config speed 否 Integer 语速。 取值范围:-500~500 默认值:0 父节点:config 说明: 当取值为“0”时,表示一个成年人正常的语速,约为250字/分钟。设置该值时,语速和数值没有绝对的映射关系。 pitch 否 Integer 音高。 取值范围: -500~500 默认值:0 父节点:config volume 否 Integer 音量。 取值范围:0~100 默认值:50 父节点:config 表5 普通发音人property取值范围 名称 property取值 类型 使用场景 支持采样率(Hz) 小琪 chinese_xiaoqi_common 标准女声 客服 8k/16k 小雯 chinese_xiaowen_common 柔美女声 客服 8k/16k 小宇 chinese_xiaoyu_common 标准男声 电销 8k/16k 小夏 chinese_xiaoxia_common 热情女声 电销 8k/16k 小燕 chinese_xiaoyan_common 温柔女声 文学 8k/16k 小倩 chinese_xiaoqian_common 成熟女声 文学 8k/16k 小王 chinese_xiaowang_common 童声 童声 8k/16k 小呆 chinese_xiaodai_common 呆萌童声 童声 8k/16k 小婧 chinese_xiaojing_common 俏皮女声 新闻播报 8k/16k 小宋 chinese_xiaosong_common 激昂男声 新闻播报 8k/16k cameal english_cameal_common 英文女声 英文 8k/16k 表6 精品发音人property取值范围 名称 property取值 类型 使用场景 支持采样率(Hz) 华小夏 chinese_huaxiaoxia_common 热情女声 电销 8k/16k 华小唯 chinese_huaxiaowei_common 嗲柔女声 电销 8k/16k 华小颜 chinese_huaxiaoyan_common 严厉女声 电销 8k/16k 华晓阳 chinese_huaxiaoyang_common 朝气男声 电销 8k/16k 华晓刚 chinese_huaxiaogang_common 利落男声 客服 8k/16k 华小雯 chinese_huaxiaowen_common 柔美女声 客服 8k/16k 华小美 chinese_huaxiaomei_common 温柔女声 客服 8k/16k 华小飞 chinese_huaxiaofei_common 朝气男声 客服 8k/16k 华小璐 chinese_huaxiaolu_common 知性女声 新闻播报 8k/16k 华小靓 chinese_huaxiaoliang_common 嘹亮女声 新闻播报 8k/16k 华晓东 chinese_huaxiaodong_common 成熟男声 新闻播报 8k/16k 华小蕊 chinese_huaxiaorui_common 知性女声 中英混合 16k 华小萱 chinese_huaxiaoxuan_common 台湾女声 方言 8k/16k 华小闽 chinese_huaxiaomin_common 闽南女声 方言 8k/16k 华小舒 chinese_huaxiaoshu_common 舒缓女声 文学 8k/16k 华女侠 chinese_huanvxia_literature 武侠女生(只支持http形式调用) 文学 16k 华晓悬 chinese_huaxiaoxuan_literature 悬疑男声(只支持http形式调用) 文学 16k 华小龙 chinese_huaxiaolong_common 朝气男声 中英混合 16k 华小汝 chinese_huaxiaoru_common 柔美女声 中英混合 8k/16k 华小涵 chinese_huaxiaohan_common 知性女声 中英混合 8k/16k 华小宁 chinese_huaxiaoning_common 沉稳男声 中英混合 8k/16k 华小珍 chinese_huaxiaozhen_common 温柔女声 中英混合 8k/16k 华小曼 chinese_huaxiaoman_common 温柔女声 中英混合 16k 华小芳 chinese_huaxiaofang_common 朝气女声 中英混合 16k 华小筠 chinese_huaxiaojun_common 成熟女声 中英混合 16k alvin english_alvin_common 成熟男声 纯英文 8k/16k amy english_amy_common 成熟女声 纯英文 8k/16k
  • wss-URI wss-URI格式 wss /v1/{project_id}/rtts 参数说明 表1 参数说明 名称 是否必选 说明 project_id 是 项目编号。获取方法,请参见获取项目ID。 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见认证鉴权。响应消息头中X-Subject-Token的值即为Token。 Enterprise-Project-Id 否 String 企业项目ID。SIS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。 企业项目创建步骤请参见用户指南。 说明: 账户创建企业项目后,在传参时,有以下三类场景。 携带正确的ID,正常使用SIS服务,账单归到企业ID对应的企业项目中。 携带错误的ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 不携带ID,正常使用SIS服务,账单的企业项目会被分类为“default”。 请求示例(伪码) wss://{endpoint}/v1/{project_id}/rtts Request Header: X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Python3语言请求代码示例 # -*- coding: utf-8 -*- # 此demo仅供测试使用,强烈建议使用sdk。需提前安装websocket-client, 执行pip install websocket-client import websocket import threading import time import json def rtts_demo(): url = 'wss://{{endpoint}}/v1/{{project_id}}/rtts' # endpoint和project_id需替换 text = '待合成文本' token = '用户对应region的token' header = { 'X-Auth-Token': token } body = { 'command': 'START', 'text': text, 'config': { 'audio_format': 'pcm', 'property': 'chinese_xiaoyu_common', 'sample_rate': '8000' } } def _on_message(ws, message): if isinstance(message, bytes): print('receive data length %d' % len(message)) else: print(message) def _on_error(ws, error): print(error) ws = websocket.WebSocketApp(url, header, on_message=_on_message, on_error=_on_error) _thread = threading.Thread(target=ws.run_forever, args=(None, None, 30, 20)) _thread.start() time.sleep(1) ws.send(json.dumps(body), opcode=websocket.ABNF.OPCODE_TEXT) time.sleep(10) ws.close() if __name__ == '__main__': rtts_demo() Java语言请求代码示例 import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; import okio.ByteString; /** * 此demo仅供测试使用, 强烈建议使用sdk * 使用前需已配置okhttp、okio jar包。jar包可通过下载SDK获取。 */ public class RttsDemo { public void rttsDemo() { try { // endpoint和projectId需要替换成实际信息。 String url = "wss://{{endpoint}}/v1/{{project_id}}/rtts"; String token = "对应region的token"; String text = "待合成文本"; OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url(url).header("X-Auth-Token", token).build(); WebSocket webSocket = okHttpClient.newWebSocket(request, new MyListener()); webSocket.send("{\"command\": \"START\", \"text\":\"" + text + "\", \"config\": {\"audio_format\": \"pcm\", \"property\": \"chinese_xiaoyu_common\"}}"); Thread.sleep(10000); webSocket.close(1000, null); } catch (Exception e) { e.printStackTrace(); } } class MyListener extends WebSocketListener { @Override public void onOpen(WebSocket webSocket, Response response) { System.out.println("conneected"); } @Override public void onClosed(WebSocket webSocket, int code, String reason) { System.out.println("closed"); } @Override public void onFailure(WebSocket webSocket, Throwable t, Response response) { t.printStackTrace(); } @Override public void onMessage(WebSocket webSocket, String text) { System.out.println(text); } public void onMessage(WebSocket webSocket, ByteString bytes) { byte[] data = bytes.toByteArray(); System.out.println("receive data length is " + data.length); } } public static void main(String[] args) { RttsDemo rttsDemo = new RttsDemo(); rttsDemo.rttsDemo(); } }