声音复刻接口
前提条件
- 确保已按照配置Python环境配置完毕。
- 请参考SDK(websocket)获取最新版本SDK包。
- 使用预置音色或注册的声音合成语音。
- 仅上海一局点支持该接口。
初始化Client
初始化vcs_client,详见表1。
请求参数
请求类型为vcs_request,详见表2。
|
参数名称 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
text |
是 |
String |
待合成文本,文本的长度不大于300字符。 |
|
audio_path |
是 |
String |
待合成音频存储路径。 |
|
config |
是 |
Object |
详见表3。 |
|
参数名称 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
audio_format |
否 |
String |
合成音频的格式。支持wav、mp3、pcm,默认wav |
|
sample_rate |
否 |
String |
合成音频的采样率。支持8kHz、16kHz、24kHz,默认16kHz |
|
voice_name |
是 |
String |
合成所使用的音色名称,可选择用户注册的音色或预置音色。预置音色取值范围参考表4。 |
|
speed |
否 |
Integer |
语速。 取值范围:-500~500 默认值:0 |
|
pitch |
否 |
Integer |
音高。 取值范围: -500~500 默认值:0 |
|
volume |
否 |
Integer |
音量。 取值范围:0~100 默认值:50 |
|
参数名称 |
voice_name |
类型 |
使用场景 |
支持采样率(Hz) |
|---|---|---|---|---|
|
华小莉 |
chinese_huaxiaoli_common |
标准女声 |
中英混合 |
8k/16k/24k |
|
华小智 |
chinese_huaxiaozhi_common |
男童声 |
中英混合 |
8k/16k/24k |
|
华小天 |
chinese_huaxiaotian_common |
朝气男声 |
中英混合 |
8k/16k/24k |
|
华小媛 |
chinese_huaxiaoyuan_common |
成熟女声 |
中英混合 |
8k/16k/24k |
|
华小静 |
chinese_huaxiaojing_common |
女童声 |
中英混合 |
8k/16k/24k |
|
华小博 |
chinese_huaxiaobo_common |
标准男声 |
中英混合 |
8k/16k/24k |
|
华小柔 |
chinese_huaxiaorou_common |
标准女声 |
中英混合 |
8k/16k/24k |
|
华小悠 |
chinese_huaxiaoyou_common |
嘹亮女声 |
中英混合 |
8k/16k/24k |
|
华小晴 |
chinese_huaxiaoqing_common |
青春女声 |
中英混合 |
8k/16k/24k |
|
华小溪 |
chinese_huaxiaoxi_common |
温柔女声 |
中英混合 |
8k/16k/24k |
|
华小彤 |
chinese_huaxiaotong_common |
俏皮女声 |
中英混合 |
8k/16k/24k |
|
华小雅 |
chinese_huaxiaoya_common |
标准女声 |
中英混合 |
8k/16k/24k |
|
华小伟 |
chinese_huaxiaowei_common |
成熟男声 |
中英混合 |
8k/16k/24k |
|
华小帅 |
chinese_huaxiaoshuai_common |
标准男声 |
中英混合 |
8k/16k/24k |
|
华小杰 |
chinese_huaxiaojie_common |
温柔男声 |
中英混合 |
8k/16k/24k |
响应参数
Python SDK响应结果为Json格式,正确响应详见表5,错误响应详见表7。
|
参数名称 |
参数类型 |
描述 |
|---|---|---|
|
trace_id |
String |
服务内部的令牌,可用于在日志中追溯具体流程。 |
|
result |
Object |
调用成功时为合成语音内容,调用失败时无此字段,详见表6。 |
请求示例
- 说明:“endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点,当前仅支持上海一。
- 调用合成API,将文本合成为语音。
import base64 import os from huaweicloud_sis.bean.vcs_register_voice_request import RegisterVoiceRequest from huaweicloud_sis.bean.vcs_synthesis_request import VcsSynthesisRequest from huaweicloud_sis.client.vcs_client import VcsClient from huaweicloud_sis.bean.sis_config import SisConfig # 鉴权参数 # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SIS_AK/HUAWEICLOUD_SIS_SK/HUAWEICLOUD_SIS_PROJECT_ID。 ak = os.getenv("HUAWEICLOUD_SIS_AK") # 从环境变量获取ak 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html assert ak is not None, "Please add ak in your develop environment" sk = os.getenv("HUAWEICLOUD_SIS_SK") # 从环境变量获取sk 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html assert sk is not None, "Please add sk in your develop environment" region = '' # region,支持上海一region,cn-east-3 project_id = "" # project id 同region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html service_endpoint = "" # 可选,自定义endpoint,传入VcsClient(ak, sk, region, project_id, sis_config=config) # 使用该脚本前,保证要使用的声音已经注册,voice_name为声音名称。若没有注册声音,请使用vcs_register_and_request.py脚本,注册声音和查询声音 voice_name = "" # 音色名称,可以使用注册音色或预置音色 audio_path = "" # 待合成结果保存路径,例如"D://SIS/audio.wav" text = "" # 待合成文本 def synthesis_example(text, voice_name): # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时,单位s config.set_read_timeout(60) # 设置读取超时,单位s vcs_client = VcsClient(ak, sk, region, project_id, sis_config=config) synthesis_request = VcsSynthesisRequest(text, voice_name) # 设置采样率,8000 or 16000 or 24000, 默认16000 synthesis_request.set_sample_rate("16000") # 设置音频格式, wav、pcm or mp3, 可参考api文档 synthesis_request.set_audio_format("wav") # 设置音量,[0, 100],默认50 synthesis_request.set_volume(50) # 设置音高, [-500, 500], 默认0 synthesis_request.set_pitch(0) # 设置音速, [-500, 500], 默认0 synthesis_request.set_speed(0) synthesis_request.set_saved(True) # 是否对合成结果进行保存 synthesis_request.set_saved_path(audio_path) # 保存路径 result = vcs_client.synthesis(synthesis_request) print(result) if __name__ == '__main__': # 合成 synthesis_example(text, voice_name)
响应示例
状态码:200
成功响应示例
{
"trace_id": "567e8537-a89c-13c3-a882-826321939651",
"result":{
"data":
"/+MgxAAUeHpMAUkQAANhuRACAIAgKHKQmRisVo0aNAgQIIQyCgGBiwfB8H4IAgCAJg+D4Ph+IAQBBywfB8HwQDGAwfB8Hwf..."
}
}
状态码:400
失败响应示例
{
"error_code": "SIS.1207",
"error_msg": "'sample_rate' is invalid"
}