更新时间:2026-02-03 GMT+08:00
分享

声音复刻接口

前提条件

  • 确保已按照配置Python环境配置完毕。
  • 请参考SDK(websocket)获取最新版本SDK包。
  • 使用预置音色或注册的声音合成语音。
  • 仅上海一局点支持该接口。

初始化Client

初始化vcs_client,详见表1

表1 vcs_client

参数名称

是否必选

参数类型

描述

ak

String

用户的ak,可参考AK/SK认证

sk

String

用户的sk,可参考AK/SK认证

region

String

区域,如:cn-east-3。具体请参考终端节点

project_id

String

项目ID,同region一一对应,参考获取项目ID。

service_endpoint

String

终端节点,一般使用默认即可。

请求参数

请求类型为vcs_request,详见表2

表2 vcs_request

参数名称

是否必选

参数类型

描述

text

String

待合成文本,文本的长度不大于300字符。

audio_path

String

待合成音频存储路径。

config

Object

详见表3

表3 Config

参数名称

是否必选

参数类型

描述

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

表4 Timbre

参数名称

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

表5 响应参数说明

参数名称

参数类型

描述

trace_id

String

服务内部的令牌,可用于在日志中追溯具体流程。

result

Object

调用成功时为合成语音内容,调用失败时无此字段,详见表6

表6 result数据结构

参数名称

参数类型

描述

data

String

生成的语音数据,以Base64编码格式返回。用户如需生成音频,需要将返回的Base64编码格式的数据解码成byte数组,再保存为对应格式的音频。

表7 错误响应

参数名称

参数类型

描述

error_code

String

调用失败时的错误码。 调用成功时无此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

请求示例

  • 说明:“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"          
} 

相关文档