语音合成
前提条件
- 确保已按照配置Python环境配置完毕,Python SDK仅支持Python3。
- 请参考SDK(websocket)获取最新版本SDK包。
初始化Client
初始化TtsCustomizationClient详见表 TtsCustomizationClient初始化参数。
请求参数
请求类为TtsCustomRequest,详见表3。
|
参数名称 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
text |
是 |
String |
待合成的文本。 |
|
audio_format |
否 |
String |
待合成的音频格式,可选mp3,wav等,默认wav。具体信息请参见《API参考》语音合成章节。 |
|
pitch |
否 |
Integer |
音高,[-500,500] ,默认是0。 |
|
speed |
否 |
Integer |
语速,[-500,500] ,默认是0。 |
|
volume |
否 |
Integer |
音量,[0,100],默认是50。 |
|
sample_rate |
否 |
String |
采样率,支持“8000”、“16000”,默认“8000”。 |
|
model_property |
否 |
String |
特征字符串,{language}_{speaker}_{domain},默认chinese_xiaoyan_common。具体信息请参见《API参考》中语音合成章节。 |
|
saved |
否 |
Boolean |
是否选择合成的音频数据保存到本地,默认不保存。 |
|
saved_path |
否 |
String |
选择保存到本地的路径,需要具体到音频文件,如D:/test.wav。 |
响应参数
代码示例
如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。
# -*- coding: utf-8 -*-
from huaweicloud_sis.client.tts_client import TtsCustomizationClient
from huaweicloud_sis.bean.tts_request import TtsCustomRequest
from huaweicloud_sis.bean.sis_config import SisConfig
from huaweicloud_sis.exception.exceptions import ClientException
from huaweicloud_sis.exception.exceptions import ServerException
import json
# 鉴权参数
# 认证用的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"
project_id = "" # project id 同region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html
def ttsc_example():
""" 语音合成demo """
region = '' # region,如cn-north-4
text = '' # 待合成文本,不超过500字
path = '' # 保存路径,如D:/test.wav。 可在设置中选择不保存本地
# step1 初始化客户端
config = SisConfig()
config.set_connect_timeout(10) # 设置连接超时,单位s
config.set_read_timeout(10) # 设置读取超时,单位s
# 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password]
# config.set_proxy(proxy)
ttsc_client = TtsCustomizationClient(ak, sk, region, project_id, sis_config=config)
# step2 构造请求
ttsc_request = TtsCustomRequest(text)
# 设置请求,所有参数均可不设置,使用默认参数
# 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档
ttsc_request.set_property('chinese_xiaoyan_common')
# 设置音频格式,默认wav,可选mp3和pcm
ttsc_request.set_audio_format('wav')
# 设置采样率,8000 or 16000, 默认8000
ttsc_request.set_sample_rate('8000')
# 设置音量,[0, 100],默认50
ttsc_request.set_volume(50)
# 设置音高, [-500, 500], 默认0
ttsc_request.set_pitch(0)
# 设置音速, [-500, 500], 默认0
ttsc_request.set_speed(0)
# 设置是否保存,默认False
ttsc_request.set_saved(True)
# 设置保存路径,只有设置保存,此参数才生效
ttsc_request.set_saved_path(path)
# step3 发送请求,返回结果。如果设置保存,可在指定路径里查看保存的音频。
result = ttsc_client.get_ttsc_response(ttsc_request)
# use enterprise_project_Id
# headers = {'Enterprise-Project-Id': 'your enterprise project id', 'Content-Type': 'application/json'}
# result = ttsc_client.get_ttsc_response(ttsc_request, headers)
print(json.dumps(result, indent=2, ensure_ascii=False))
if __name__ == '__main__':
try:
ttsc_example()
except ClientException as e:
print(e)
except ServerException as e:
print(e)