语音交互服务 SIS
语音交互服务 SIS
- 最新动态
- 服务公告
- 产品介绍
- 快速入门
- 用户指南
- SDK参考
- API参考
-
常见问题
- 产品咨询类
- 计费类
-
API使用类
- 如何查看接口调用量
- 为什么WebSocket一直连接不成功
- 为什么会出现识别结果非常差的情况
- 如何使用Websocket调用实时语音识别
- 有哪些途径可以使用语音交互的API
- 返回状态正常,但识别结果为空
- Token消息体中user name,domain name和project name分别指的是什么
- 如何调整并发
- 为什么录音文件识别出现重复转写结果
- 调用语音交互的API显示auth failed
- 调用语音交互的API超时怎么处理(connect timeout)
- 为什么服务端返回OBS链接不可用(data url is unreachable)
- 语音合成的base64编码如何使用
- 录音文件识别多久可以返回结果
- 语音合成能不能支持返回立体音(双声道)格式的音频
- 如何解决“The silence time is too long, and the audio will not be recognized”报错
- Token怎么获取
- 如何申请公测
- 如何修改发音人
- 实时语音识别多人同时使用,如何区分各自识别结果
- 使用HTML5 Websocket API发送websocket请求如何携带token
- 如何查看实时语音识别的中间结果
- SDK使用类
- 错误码类
- 部署类
- 区域与可用区
- 权限类
- 服务声明类
- 文档下载
- 通用参考
链接复制成功!
实时语音合成
前提条件
- 确保已按照配置Python环境配置完毕,Python SDK仅支持Python3。
- 请参考SDK(websocket)获取最新版本SDK包。
初始化Client
初始化RttsClient详见表 RttsClient初始化参数。
请求参数
请求类为RttsRequest,详见表3。
参数名称 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
text |
是 |
String |
待合成的文本。1-500字 |
audio_format |
否 |
String |
语音格式头:pcm、alaw、ulaw。 默认:pcm |
pitch |
否 |
Integer |
音高,[-500,500] ,默认是0。 |
speed |
否 |
Integer |
语速,[-500,500] ,默认是0。 |
volume |
否 |
Integer |
音量,[0,100],默认是50。 |
sample_rate |
否 |
String |
采样率,支持“8000”、“16000”,默认“8000”。 |
property |
否 |
String |
语音合成特征字符串,组成形式为{language}_{speaker}_{domain},即“语种_人员标识_领域”。
默认:chinese_xiaoyan_common 实时语音合成和语音合成属于同一种资源,按次计费。实时语音合成普通发音人,每100字计一次。精品发音人每50字计一次。 |
响应参数
Python SDK响应结果为byte数组,保存合成音频数据。详见代码示例。调用失败处理方法请参见错误码。
代码示例
如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。
# -*- coding: utf-8 -*- from huaweicloud_sis.client.rtts_client import RttsClient from huaweicloud_sis.bean.rtts_request import RttsRequest from huaweicloud_sis.bean.callback import RttsCallBack from huaweicloud_sis.bean.sis_config import SisConfig import os # 鉴权参数 # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SIS_AK/HUAWEICLOUD_SIS_SK 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 region = '' # region,如cn-north-4 text = '' # 待合成的文本 path = '' # 待合成的音频保存路径,如test.pcm class MyCallback(RttsCallBack): """ 回调类,用户需要在对应方法中实现自己的逻辑,其中on_response必须重写 """ def __init__(self, save_path): self._f = open(save_path, 'wb') def on_open(self): """ websocket连接成功会回调此函数 """ print('websocket connect success') def on_start(self, message): """ websocket 开始识别回调此函数 :param message: 传入信息 :return: - """ print('webscoket start to recognize, %s' % message) def on_response(self, data): """ 回调返回的音频合成数据,byte数组格式 :param data byte数组,合成的音频数据 :return: - """ print('receive data %d' % len(data)) self._f.write(data) def on_end(self, message): """ websocket 结束识别回调此函数 :param message: 传入信息 :return: - """ print('websocket is ended, %s' % message) self._f.close() def on_close(self): """ websocket关闭会回调此函数 """ print('websocket is closed') self._f.close() def on_error(self, error): """ websocket出错回调此函数 :param error: 错误信息 :return: - """ print('websocket meets error, the error is %s' % error) self._f.close() def rtts_example(): """ 实时语音合成demo 1. RttsClient 只能发送一次文本,如果需要多次发送文本,需要新建多个RttsClient 和 callback 2. 识别完成后服务端会返回end响应。 3. 当识别出现问题时,会触发on_error回调,同时会关闭websocket。 4. 实时语音合成会多次返回结果,demo的处理方式是将多次返回结果集合在一个音频文件里。 """ # step1 初始化RttsClient, 暂不支持使用代理 my_callback = MyCallback(path) config = SisConfig() # 设置连接超时,默认是10 config.set_connect_timeout(10) # 设置读取超时, 默认是10 config.set_read_timeout(10) # 设置websocket等待时间 config.set_websocket_wait_time(20) # websocket暂时不支持使用代理 rtts_client = RttsClient(ak=ak, sk=sk, use_aksk=True, region=region, project_id=project_id, callback=my_callback, config=config) # step2 构造请求 rtts_request = RttsRequest(text) # 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档 rtts_request.set_property('chinese_xiaoyan_common') # 设置音频格式为pcm rtts_request.set_audio_format('pcm') # 设置采样率,8000 or 16000, 默认8000 rtts_request.set_sample_rate('8000') # 设置音量,[0, 100],默认50 rtts_request.set_volume(50) # 设置音高, [-500, 500], 默认0 rtts_request.set_pitch(0) # 设置音速, [-500, 500], 默认0 rtts_request.set_speed(0) # step3 合成 rtts_client.synthesis(rtts_request) # use enterprise_project_Id # headers = {'Enterprise-Project-Id': 'your enterprise project id'} # rtts_client.synthesis(rtts_request, headers) if __name__ == '__main__': rtts_example()
父主题: Python SDK