华为云用户手册

  • 初始化Client 初始化AsrCustomizationClient,其参数包括AuthInfo和SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,具体请参考地区和终端节点。一般使用默认即可。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。
  • 请求参数 请求类为AsrCustomShortRequest,详见表3。 表3 AsrCustomShortRequest 参数名称 是否必选 参数类型 描述 data 是 String 本地音频文件经过Base64编码后的字符串,音频文件时长不超过1min。 audioFormat 是 String 音频格式,具体信息请参见《API参考》中一句话识别章节。 property 是 String 属性字符串,语言_采样率_模型,如chinese_16k_general。具体信息请参见《API参考》中一句话识别章节。 addPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 vocabularyId 否 String 热词表id,不使用则不填写。 创建热词表请参考《API参考》中创建热词表章节。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 响应参数 响应类为TtsCustomResponse,详见表3。调用失败处理方法请参见错误码。 表4 TtsResponse 参数名 是否必选 参数类型 说明 isSaved 否 String 是否将响应音频保存为本地文件。 savePath 否 String 保存本地的路径,如D:/test.wav。 result 是 Object 调用成功时为合成语音内容,请参考表5。 调用失败时无此字段。 表5 Result 参数名 是否必选 参数类型 说明 data 是 String 合成后生成的语音数据,以Base64编码格式返回。用户如需生成音频,需要将Base64编码解码成byte数组,再保存为wav音频。
  • 初始化Client 初始化TtsCustomizationClient,其参数包括AuthInfo和SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,参考地区和终端节点。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。
  • 请求参数 请求类为TtsCustomRequest,详见表3。 表3 TtsCustomRequest 参数名称 是否必选 参数类型 描述 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”。 property 否 String 特征字符串,{language}_{speaker}_{domain},默认chinese_xiaoqi_common。具体信息请参见《API参考》中语音合成章节。 isSaved 否 Boolean 是否选择合成的音频数据保存到本地,默认不保存。 savePath 否 String 选择保存到本地的路径。路径需具体到文件,如D:/test.wav。
  • 请求参数 请求类为RttsRequest,详见表3。 表3 RttsRequest 参数名称 是否必选 参数类型 描述 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},即“语种_人员标识_领域”。 language取值范围: chinese speaker取值范围: xiaoqi 正式女生 xiaoyu正式男生 xiaoyan情感女生 xiaowang童声 speaker(精品发音人)取值范围: huaxiaomei温柔女声发音人,仅支持pcm huaxiaofei朝气男声发音人,仅支持pcm domain取值范围: common,通用领域 默认:chinese_xiaoyan_common 实时语音合成和语音合成属于同一种资源,按次计费。实时语音合成普通发音人,每100字计一次。精品发音人每50字记一次。
  • 代码示例 如下示例仅供参考,最新代码请前往获取SDK章节获取并运行。 # -*- 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()
  • 初始化Client 初始化RttsClient详见表 RttsClient初始化参数。 表1 RttsClient初始化参数 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如:cn-north-4。具体请参考终端节点。 project_id 是 String 项目ID,同region一一对应,参考获取项目ID。 service_endpoint 否 String 终端节点,一般使用默认即可。 sis_config 否 Object 详见表2。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connect_timeout 否 Integer 连接超时,默认10,单位s。 read_timeout 否 Integer 读取超时,默认10,单位s。 websocket_wait_time 否 Integer websocket最大等待时间,默认20,单位s。 proxy 否 List [host, port] 或 [host, port, username, password]。
  • 响应参数 Python SDK响应结果为Json格式,详见表4。调用失败处理方法请参见错误码。 表4 响应结果 参数名称 是否必选 参数类型 描述 result 是 Object 调用成功时为合成语音内容,请参考表5。 trace_id 是 String 用于后台日志问题追溯。 is_saved 否 Boolean 是否保存为本地音频。 saved_path 否 String 保存音频的本地路径,只有在请求时saved参数设置为true才生效。 表5 Result 参数名称 是否必选 参数类型 说明 data 是 String 合成后生成的语音数据,以Base64编码格式返回。
  • 请求参数 请求类为TtsCustomRequest,详见表3。 表3 TtsCustomRequest 参数名称 是否必选 参数类型 描述 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章节获取并运行。 # -*- 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)
  • 初始化Client 初始化TtsCustomizationClient详见表 TtsCustomizationClient初始化参数。 表1 TtsCustomizationClient初始化参数 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如:cn-north-4。具体请参考终端节点。 project_id 是 String 项目ID,同region一一对应,参考获取项目ID。 service_endpoint 否 String 终端节点,一般使用默认即可。 sis_config 否 Object 详见表2。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connect_timeout 否 String 连接超时,默认10,单位s。 read_timeout 否 String 读取超时,默认10,单位s。 proxy 否 List [host, port] 或 [host, port, username, password]。
  • 请求参数 请求类为SasrWebsocketRequest,详见表 SasrWebsocketRequest。 表3 SasrWebsocketRequest 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,支持pcm,alaw,ulaw等,如pcm8k16bit,具体规格请参见《API参考》中开始识别章节。 property 是 String 属性字符串,language_sampleRate_domain, 如chinese_8k_common。 punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 intermediateResult 否 String 是否显示中间结果,yes 或 no,默认no。 vocabularyId 否 String 热词表id,若没有则不填。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 响应参数 状态响应类为StateResponse,详见表4。 结果响应类为RasrResponse,详见表5。 调用失败处理方法请参见错误码。 表4 StateResponse 参数名称 是否必选 参数类型 描述 state 是 String 识别状态,包括start、end、fail。 traceId 是 String 用于日志问题追溯。 description 是 String 状态描述。 表5 RasrResponse 参数名 参数类型 说明 resp_type String 参数值为RESULT,表示识别结果响应。 trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。 segments Array of objects 多句结果。 请参考表6。 表6 Segment 参数名 参数类型 说明 start_time Integer 一句的起始时间戳,单位为ms。 end_time Integer 一句的结束时间戳,单位为ms。 is_final Boolen true表示是最终结果, false表示为中间临时结果。 result Object 调用成功表示识别结果,调用失败时无此字段。 请参考表7。 表7 Result 参数名 参数类型 说明 text String 识别结果。 score Float 识别结果的置信度,取值范围:0~1。此值仅会在最终结果时被赋值,在中间结果时统一置为“0.0”。 说明: 目前置信度作用不是太大,请勿过多依赖此值。 word_info Array of Object 分词输出列表。 表8 Word_info 数据结构 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
  • 初始化Client 初始化SasrWebsocketClient,其参数包括AuthInfo、RasrListener、SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,参考地区和终端节点。一般使用默认即可。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。
  • 初始化Client 初始化AsrCustomizationClient,其参数包括AuthInfo和SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,参考地区和终端节点。一般使用默认即可。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。
  • 请求参数 请求类为AsrCustomLongRequest,详见表3。 表3 AsrCustomLongRequest 参数名称 是否必选 参数类型 描述 dataUrl 是 String 存放录音文件地址: 推荐使用华为云OBS:授权配置请参见OBS配置。 您也可以把录音文件放在自行搭建服务器上,提供下载文件的地址。URL不能使用IP地址,只能使用域名,请尽量避免中文。 audioFormat 是 String 音频格式,具体信息请参见《API参考》中录音文件识别章节。 property 是 String 属性字符串,语言_采样率_模型,如chinese_8k_common。具体信息请参见《API参考》中录音文件识别章节。 addPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 callbackUrl 否 String 表示回调 url,用户用于接收识别结果的服务器地址, 不支持ip方式调用,url长度小于2048字节。服务请求方法为Post方式,请求体为Json格式。 如果用户使用回调方式获取识别结果,需提交该参数,处理成功后用户服务器需返回状态码为200。 如果用户使用轮询方式获取识别结果,则无需提交该参数。 needAnalysisInfo 否 Boolean 是否选择分析信息。当前仅对8k模型有效。 如果选择false,则声道、话者分离、情绪检测、速度信息均无效。默认false。 diarization 否 Boolean 是否需要话者分离,表示识别结果会包含role项,默认true。 channel 否 String 语音文件声道信息,可以为MONO(缺省)、LEFT_AGENT、RIGHT_AGENT。 emotion 否 Boolean 是否需要做情绪检测,默认true。 speed 否 Boolean 是否需要输出语速信息,默认true。 vocabularyId 否 String 热词表id,不使用则不填写。 创建热词表请参考《API参考》中创建热词表章节。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 响应参数 响应类为AsrCustomLongResponse,详见表4。调用失败处理方法请参见错误码。 表4 AsrCustomLongResponse 参数名称 是否必选 参数类型 描述 status 是 String 描述返回状态。 WAITING 等待识别。 FINISHED识别已经完成。 ERROR 识别过程中发生错误。 createTime 否 String 任务创建时间。格式如2018-12-04T13:10:29.310Z。 startTime 否 String 开始识别时间。格式如2018-12-04T13:10:29.310Z。 finishTime 否 String 识别完成时间。格式如2018-12-04T13:10:29.310Z。 audioDuration 否 Integer 提交音频时长,单位ms。 segments 否 Array of objects 识别结果, 多句结果的数组。 数据结构参见表5。 表5 Segment 参数名 是否必选 参数类型 说明 start_time 是 Integer 一句的起始时间戳,单位ms。 end_time 是 Integer 一句的结束时间戳,单位ms。 result 是 Object 调用成功表示识别结果,调用失败时无此字段。数据结构参见表6。 表6 Result 参数名 是否必选 参数类型 说明 text 是 String 识别结果文本。 analysis_info 否 Object 每一句的质检分析结果对象。 仅在识别配置中的need_analysis_info不为null时存在该返回结果。数据结构参见表7。 word_info 否 Array of Object 分词输出列表。 表7 Analysisinfo 参数名 是否必选 参数类型 说明 role 否 String 角色类型,目前仅支持 AGENT(座席),USER(用户)。 emotion 否 String 情绪类型,目前仅支持NORMAL(正常),ANGRY(愤怒)。 在识别配置中emotion为true时存在。 speed 否 Float 语速信息,单位是每秒字数。 在识别配置中speed为true时存在。 表8 Word_info 数据结构 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
  • 请求参数 请求类为RttsRequest,详见表3。 表3 RttsRequest 名称 参数类型 是否必选 说明 command String 是 需设置为START,表示开始识别请求。 text String 是 待合成的文本,文本长度限制小于500字符。 config Object 否 配置信息。请参考表 config数据结构。 表4 Config 名称 参数类型 是否必选 说明 audio_format String 否 语音格式头:pcm、alaw、ulaw。 默认:pcm sample_rate String 否 采样率:16000、8000。 默认:8000 property String 否 语音合成特征字符串,组成形式为{language}_{speaker}_{domain},即“语种_人员标识_领域”。 language取值范围: chinese speaker取值范围: xiaoqi 正式女生 xiaoyu正式男生 xiaoyan情感女生 xiaowang童声 speaker(精品发音人)取值范围: huaxiaomei温柔女声发音人,仅支持pcm huaxiaofei朝气男声发音人,仅支持pcm domain取值范围: common,通用领域 默认:chinese_xiaoyan_common 实时语音合成和语音合成属于同一种资源,按次计费。实时语音合成普通发音人,每100字计一次。精品发音人每50字记一次。 speed Integer 否 语速。 取值范围:-500~500 默认值:0 pitch Integer 否 音高。 取值范围:-500~500 默认值:0 volume Integer 否 音量。 取值范围:0~100 默认值:50
  • 初始化Client 初始化RttsClient,其参数包括AuthInfo和SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,参考地区和终端节点。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。 websocketWaitTimeout 否 Integer websocket最大等待超时,默认20000,单位ms
  • 代码示例 如下示例仅供参考,最新代码请前往获取SDK章节获取并运行。 # -*- coding: utf-8 -*- from huaweicloud_sis.client.asr_client import SasrWebsocketClient from huaweicloud_sis.bean.asr_request import SasrWebsocketRequest from huaweicloud_sis.bean.callback import RasrCallBack from huaweicloud_sis.bean.sis_config import SisConfig import json 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 = 'cn-north-4' # region,如cn-north-4 # 一句话识别参数 path = '' # 需要发送音频路径,如D:/test.pcm, 同时sdk也支持byte流发送数据。 audio_format = '' # 音频支持格式,如pcm16k16bit,详见api文档 property = '' # 属性字符串,language_sampleRate_domain, 如chinese_16k_common, 采样率要和音频一致。详见api文档 class MyCallback(RasrCallBack): """ 回调类,用户需要在对应方法中实现自己的逻辑,其中on_response必须重写 """ 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, message): """ websockert返回响应结果会回调此函数 :param message: json格式 :return: - """ print(json.dumps(message, indent=2, ensure_ascii=False)) def on_end(self, message): """ websocket 结束识别回调此函数 :param message: 传入信息 :return: - """ print('websocket is ended, %s' % message) def on_close(self): """ websocket关闭会回调此函数 """ print('websocket is closed') def on_error(self, error): """ websocket出错回调此函数 :param error: 错误信息 :return: - """ print('websocket meets error, the error is %s' % error) def on_event(self, event): """ 出现事件的回调 :param event: 事件名称 :return: - """ print('receive event %s' % event) def sasr_websocket_example(): """ 一句话识别 websocket demo """ # step1 初始化SasrWebsocketClient, 暂不支持使用代理 my_callback = MyCallback() config = SisConfig() # 设置连接超时,默认是10 config.set_connect_timeout(10) # 设置读取超时, 默认是10 config.set_read_timeout(10) # 设置connect lost超时,一般在普通并发下,不需要设置此值。默认是10 config.set_connect_lost_timeout(10) # websocket暂时不支持使用代理 sasr_websocket_client = SasrWebsocketClient(ak=ak, sk=sk, use_aksk=True, region=region, project_id=project_id, callback=my_callback, config=config) try: # step2 构造请求 request = SasrWebsocketRequest(audio_format, property) # 所有参数均可不设置,使用默认值 request.set_add_punc('yes') # 设置是否添加标点, yes or no, 默认no request.set_interim_results('no') # 设置是否返回中间结果,yes or no,默认no request.set_digit_norm('no') # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes # request.set_vocabulary_id('') # 设置热词表id,若不存在则不填写,否则会报错 request.set_need_word_info('no') # 设置是否需要word_info,yes or no, 默认no # step3 连接服务端 sasr_websocket_client.sasr_stream_connect(request) # use enterprise_project_Id # headers = {'Enterprise-Project-Id': 'your enterprise project id'} # sasr_websocket_client.sasr_stream_connect(request, headers) # step4 发送音频 sasr_websocket_client.send_start() # 连续模式下,可多次发送音频,发送格式为byte数组 with open(path, 'rb') as f: data = f.read() sasr_websocket_client.send_audio(data) # 可选byte_len和sleep_time参数,建议使用默认值 sasr_websocket_client.send_end() except Exception as e: print('sasr websocket error', e) finally: # step5 关闭客户端,使用完毕后一定要关闭,否则服务端20s内没收到数据会报错并主动断开。 sasr_websocket_client.close() if __name__ == '__main__': sasr_websocket_example()
  • 初始化Client 初始化SasrWebsocketClient详见表 SasrWebsocketClient初始化参数。 表1 SasrWebsocketClient初始化参数 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,请参考AK/SK认证。 sk 是 String 用户的sk,请参考AK/SK认证。 use_aksk 是 Boolean 使用ak、sk要填写true。 region 是 String 区域,如:cn-north-4。具体请参考终端节点。 project_id 是 String 项目ID,同region一一对应,参考获取项目ID。 callback 是 Object 回调类RasrCallBack,用于监听Websocket连接、响应、断开、错误等。 config 否 Object 详见表 SisConfig。 service_endpoint 否 String 终端节点,一般使用默认即可。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connect_timeout 否 Integer 连接超时,默认10,单位s。 read_timeout 否 Integer 读取超时,默认10,单位s。 connect_lost_timeout 否 Integer 连接失效超时,默认4,单位s。一般不要修改这个参数。
  • 请求参数 请求类为SasrWebsocketRequest,详见表 SasrWebsocketRequest。 表3 SasrWebsocketRequest 参数名称 是否必选 参数类型 描述 audio_format 是 String 音频格式,支持pcm,alaw,ulaw等,如pcm8k16bit,具体规格请参见《API参考》中开始识别章节。 model_property 是 String 属性字符串,language_sampleRate_domain, 如chinese_8k_common。 add_punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 interim_results 否 String 是否显示中间结果,yes 或 no,默认no。 vocabulary_id 否 String 热词表id,若没有则不填。 need_word_info 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 响应参数 Python SDK响应结果为Json格式,详见表4。调用失败处理方法请参见错误码。 表4 响应结果 参数名称 是否必选 参数类型 描述 resp_type 是 String 参数值为RESULT,表示识别结果响应。 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程。 segments 是 Array of objects 多句结果。详见表5。 表5 Segment 参数名称 是否必选 参数类型 描述 start_time 是 Integer 一句的起始时间戳,单位为ms。 end_time 是 Integer 一句的结束时间戳,单位为ms。 is_final 是 Boolen true表示是最终结果, false表示为中间临时结果。 result 是 Object 调用成功表示识别结果,详见表6。 表6 Result 参数名称 是否必选 参数类型 描述 text 是 String 识别结果。 score 是 Float 识别结果的置信度(0-1之间)。此值仅会在最终结果时被赋值,在中间结果时统一置为“0.0”。 word_info 否 Array of objects 分词信息列表。 表7 Word_info 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
  • 代码示例 如下示例仅供参考,最新代码请前往获取SDK章节获取并运行。 # -*- coding: utf-8 -*- from huaweicloud_sis.client.rasr_client import RasrClient from huaweicloud_sis.bean.rasr_request import RasrRequest from huaweicloud_sis.bean.callback import RasrCallBack from huaweicloud_sis.bean.sis_config import SisConfig import json 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 = 'cn-north-4' # region,如cn-north-4 """ todo 请正确填写音频格式和模型属性字符串 1. 音频格式一定要相匹配. 例如音频是pcm格式,并且采样率为8k,则格式填写pcm8k16bit。 如果返回audio_format is invalid 说明该文件格式不支持。具体支持哪些音频格式,需要参考一些api文档。 2. 音频采样率要与属性字符串的采样率要匹配。 例如格式选择pcm16k16bit,属性字符串却选择chinese_8k_common, 则会返回'audio_format' is not match model """ # 实时语音识别参数 path = '' # 需要发送音频路径,如D:/test.pcm, 同时sdk也支持byte流发送数据。 audio_format = 'pcm16k16bit' # 音频支持格式,如pcm16k16bit,详见api文档 property = 'chinese_16k_general' # 属性字符串,language_sampleRate_domain, 如chinese_16k_general, 采样率要和音频一致。详见api文档 class MyCallback(RasrCallBack): """ 回调类,用户需要在对应方法中实现自己的逻辑,其中on_response必须重写 """ 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, message): """ websockert返回响应结果会回调此函数 :param message: json格式 :return: - """ print(json.dumps(message, indent=2, ensure_ascii=False)) def on_end(self, message): """ websocket 结束识别回调此函数 :param message: 传入信息 :return: - """ print('websocket is ended, %s' % message) def on_close(self): """ websocket关闭会回调此函数 """ print('websocket is closed') def on_error(self, error): """ websocket出错回调此函数 :param error: 错误信息 :return: - """ print('websocket meets error, the error is %s' % error) def on_event(self, event): """ 出现事件的回调 :param event: 事件名称 :return: - """ print('receive event %s' % event) def rasr_example(): """ 实时语音识别demo """ # step1 初始化RasrClient, 暂不支持使用代理 my_callback = MyCallback() config = SisConfig() # 设置连接超时,默认是10 config.set_connect_timeout(10) # 设置读取超时, 默认是10 config.set_read_timeout(10) # 设置connect lost超时,一般在普通并发下,不需要设置此值。默认是10 config.set_connect_lost_timeout(10) # websocket暂时不支持使用代理 rasr_client = RasrClient(ak=ak, sk=sk, use_aksk=True, region=region, project_id=project_id, callback=my_callback, config=config) try: # step2 构造请求 request = RasrRequest(audio_format, property) # 所有参数均可不设置,使用默认值 request.set_add_punc('yes') # 设置是否添加标点, yes or no, 默认no request.set_vad_head(10000) # 设置有效头部, [0, 60000], 默认10000 request.set_vad_tail(500) # 设置有效尾部,[0, 3000], 默认500 request.set_max_seconds(30) # 设置一句话最大长度,[1, 60], 默认30 request.set_interim_results('no') # 设置是否返回中间结果,yes or no,默认no request.set_digit_norm('no') # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes # request.set_vocabulary_id('') # 设置热词表id,若不存在则不填写,否则会报错 request.set_need_word_info('no') # 设置是否需要word_info,yes or no, 默认no # step3 选择连接模式 # rasr_client.short_stream_connect(request) # 流式一句话模式 # rasr_client.sentence_stream_connect(request) # 实时语音识别单句模式 rasr_client.continue_stream_connect(request) # 实时语音识别连续模式 # use enterprise_project_Id # headers = {'Enterprise-Project-Id': 'your enterprise project id'} # rasr_client.continue_stream_connect(request, headers) # step4 发送音频 rasr_client.send_start() # 连续模式下,可多次发送音频,发送格式为byte数组 with open(path, 'rb') as f: data = f.read() rasr_client.send_audio(data) # 可选byte_len和sleep_time参数,建议使用默认值 rasr_client.send_end() except Exception as e: print('rasr error', e) finally: # step5 关闭客户端,使用完毕后一定要关闭,否则服务端20s内没收到数据会报错并主动断开。 rasr_client.close() if __name__ == '__main__': rasr_example()
  • 请求参数 请求类为RasrRequest,详见表3。 表3 RasrRequest 参数名称 是否必选 参数类型 描述 audio_format 是 String 音频格式,支持pcm,alaw,ulaw等,如pcm8k16bit,参见《API参考》中开始识别章节。 model_property 是 String 属性字符串,language_sampleRate_domain, 如chinese_16k_general,参见《API参考》中开始识别章节。 add_punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 vad_head 否 Integer 头部最大静音时间,[0, 60000],默认10000ms。 vad_tail 否 Integer 尾部最大静音时间,[0, 3000],默认500ms。 max_seconds 否 Integer 音频最长持续时间, [1, 60],默认30s。 interim_results 否 String 是否显示中间结果,yes 或 no,默认no。例如分3次发送音频,选择no结果一次性返回,选择yes分三次返回。 vocabulary_id 否 String 热词表id,若没有则不填。 need_word_info 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 响应参数 Python SDK响应结果为Json格式,详见表4。调用失败处理方法请参见错误码。 表4 响应结果 参数名称 是否必选 参数类型 描述 resp_type 是 String 参数值为RESULT,表示识别结果响应。 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程。 segments 是 Array of objects 多句结果。详见表5。 表5 Segment 参数名称 是否必选 参数类型 描述 start_time 是 Integer 一句的起始时间戳,单位为ms。 end_time 是 Integer 一句的结束时间戳,单位为ms。 is_final 是 Boolen true表示是最终结果, false表示为中间临时结果。 result 是 Object 调用成功表示识别结果,详见表6。 表6 Result 参数名称 是否必选 参数类型 描述 text 是 String 识别结果。 score 是 Float 识别结果的置信度(0-1之间)。此值仅会在最终结果时被赋值,在中间结果时统一置为“0.0”。 word_info 否 Array of objects 分词信息列表。 表7 Word_info 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
  • 初始化Client 初始化RasrClient详见表 RasrClient初始化参数。 表1 RasrClient初始化参数 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,请参考AK/SK认证。 sk 是 String 用户的sk,请参考AK/SK认证。 use_aksk 是 Boolean 使用ak、sk要填写true。 region 是 String 区域,如:cn-north-4。具体请参考终端节点。 project_id 是 String 项目ID,同region一一对应,参考获取项目ID。 callback 是 Object 回调类RasrCallBack,用于监听Websocket连接、响应、断开、错误等。参考代码示例。 config 否 Object 详见表2。 service_endpoint 否 String 终端节点,一般使用默认即可。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connect_timeout 否 Integer 连接超时,默认10,单位s。 read_timeout 否 Integer 读取超时,默认10,单位s。 connect_lost_timeout 否 Integer 连接失效超时,默认4,单位s。一般不要修改这个参数。
  • 下载SDK包 语音交互SDK软件包获取请参见表 下载SDK包。 示例音频参见示例音频。 当您使用过旧版本的Java SDK时,需要注意旧版本的SDK依赖的jar包与新版本SDK的jar包有无冲突。新版本SDK升级日志为log4j2,同时java-sdk-core升级到3.0.12版本。 优先推荐使用新版SDK语音交互服务SDK,该SDK基于统一规范开发,支持Java/Python/C++/.NET/Go/NodeJs/PHP,使用方法可参考api-explorer、SDK开发指南。该SDK暂不支持websocket方法。 如果需要使用实时语音识别,可考虑使用表 下载SDK包下载SDK使用,当前支持Java SDK、Python SDK、CPP SDK。后序章节均指代该SDK,使用方法可参考Java SDK、Python SDK、CPP SDK(Windows)、CPP SDK(Linux)。当前自研SDK仅java和python提供企业项目配置入口,在代码示例中配置,其他语言暂未支持。 表1 下载SDK包 SDK语言 下载地址 Java https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com/java/huaweicloud-java-sdk-sis-1.8.3.zip Python https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com/python/huaweicloud-python-sdk-sis-1.8.3.zip iOS(Swift) https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com:443/ios/huaweicloud-ios-sdk-sis-1.1.1.zip Android https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com:443/android/huaweicloud-android-sdk-sis-1.1.1.1.zip Cpp(Windows) https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com:443/cpp/huaweicloud-sdk-cpp-sis-win-1.4.0.zip Cpp(Linux) https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com:443/cpp/huaweicloud-cpp-sdk-sis-linux.1.3.2.tar.gz
  • 响应参数 状态响应类为StateResponse,详见表4。 结果响应类为RasrResponse,详见表5。 调用失败处理方法请参见错误码。 表4 StateResponse 参数名称 是否必选 参数类型 描述 state 是 String 识别状态,包括start、end、fail。 traceId 是 String 用于日志问题追溯。 description 是 String 状态描述。 表5 RasrResponse 参数名 参数类型 说明 resp_type String 参数值为RESULT,表示识别结果响应。 trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。 segments Array of objects 多句结果。 请参考表6。 表6 Segment 参数名 参数类型 说明 start_time Integer 一句的起始时间戳,单位为ms。 end_time Integer 一句的结束时间戳,单位为ms。 is_final Boolen true表示是最终结果, false表示为中间临时结果。 result Object 调用成功表示识别结果,调用失败时无此字段。 请参考表7。 表7 Result 参数名 参数类型 说明 text String 识别结果。 score Float 识别结果的置信度,取值范围:0~1。此值仅会在最终结果时被赋值,在中间结果时统一置为“0.0”。 说明: 目前置信度作用不是太大,请勿过多依赖此值。 word_info Array of Object 分词输出列表。 表8 Word_info 数据结构 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
共100000条