华为云用户手册

  • 响应参数 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 初始化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。一般不要修改这个参数。
  • 初始化Client 初始化SisClient,详细信息如下。 配置客户端连接参数。 默认配置 // 使用默认配置 HttpConfig config = HttpConfig.getDefaultHttpConfig(); 网络代理(可选) // 根据需要配置网络代理,网络代理默认的协议为 `http` 协议 config.withProxyHost("proxy.huaweicloud.com") .withProxyPort(8080) .withProxyUsername("test") .withProxyPassword("test"); 超时配置(可选) // 默认连接超时时间为60秒,可根据需要调整 config.withTimeout(60); SSL配置(可选) // 根据需要配置是否跳过SSL证书验证 config.withIgnoreSSLVerification(true); 配置认证信息。 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 使用永久AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); 使用临时AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withSecurityToken(securityToken) .withProjectId(projectId) 认证参数说明: ak、sk:访问密钥信息,获取方法请参考AK/SK认证。 projectId:华为云项目ID,获取方法请参考获取项目ID。。 securityToken:采用临时AK、SK 认证场景下的安全票据,可以通过token获取或者通过委托授权获取。 初始化客户端(region和指定云服务enddpoint二选一即可)。 指定region方式(强烈推荐推荐) // 初始化客户端认证信息,使用当前客户端初始化方式可不填 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务Sis的 SisClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(bhttps://developer.huaweicloud.com/endpoint?SISasicCredentials) .withRegion(SisRegion.valueOf("cn-north-4")) .build(); 指定云服务endpoint方式(可选) // 指定终端节点,以Sis服务北京四的 endpoint 为例 String endpoint = "https://sis-ext.cn-north-4.myhuaweicloud.com"; // 初始化客户端认证信息,需要填写相应 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务SiS的 SisClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(basicCredentials) .withEndpoint(endpoint) .build(); endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点。
  • 请求参数 请求类为RecognizeShortAudioRequest,该类的body参数为PostShortAudioReq。 PostShortAudioReq的包含data,和config两个参数,其中data为识别音频的base64格式的字符串。Config参数详见表1。 表1 Config 参数 是否必选 参数类型 描述 audioFormat 是 String 支持语音的格式,请参考表 audio_format取值范围。 property 是 String 所使用的模型特征串,通常是 “语种_采样率_领域”的形式,采样率需要与音频采样率保持一致,取值范围请参考表 property取值范围。 addPunc 否 String 表示是否在识别结果中添加标点,取值为“yes”和“no”,默认为“no”。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为“yes” 和 “no”,默认为“yes”。 vocabularyId 否 String 热词表id,不使用则不填写。 创建热词表信息请参考创建热词表。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。 伪代码 com.huaweicloud.sdk.sis.v1.model.Config configbody = new com.huaweicloud.sdk.sis.v1.model.Config();configbody.setAudioFormat(com.huaweicloud.sdk.sis.v1.model.Config.AudioFormatEnum.fromValue("pcm16k16bit")); configbody.setProperty(com.huaweicloud.sdk.sis.v1.model.Config.PropertyEnum.fromValue("chinese_16k_general")); configbody.setAddPunc(com.huaweicloud.sdk.sis.v1.model.Config.AddPuncEnum.YES); RecognizeShortAudioRequest request = new RecognizeShortAudioRequest(); PostShortAudioReq body = new PostShortAudioReq();body.withData(encoded);body.withConfig(configbody); request.withBody(body);
  • 发送请求 RecognizeShortAudioResponse response = client.recognizeShortAudio(request); 返回体RecognizeShortAudioResponse的参数如下表所示。 状态码: 200 表2 响应Body参数 参数 是否必选 参数类型 描述 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 Result object 调用成功表示识别结果,调用失败时无此字段。 表3 Result 参数 是否必选 参数类型 描述 text 是 String 调用成功表示识别出的内容。 score 是 Float 调用成功表示识别出的置信度,取值范围:0~1。 word_info 否 Array of WordInfo objects 分词信息列表。 表4 WordInfo 参数 是否必选 参数类型 描述 start_time 否 Integer 起始时间。 end_time 否 Integer 结束时间。 word 否 String 分词。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 编译脚本 以下编译脚本仅供参考,您可以根据实际业务需求,对RasrDemo.cpp进行定制修改。 cd ${project_dir} mkdir build && cd build mkdir logs cmake .. make -j ./RasrDemo --audioPath=yourAudioPath --ak=yourAk --sk=yourSk --region=yourRegion --projectId=yourProjectId
  • 请求参数 请求类为RasrRequest,详见表 RasrRequest。 表2 RasrRequest 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,支持pcm等,如pcm8k16bit,参见《API参考》中开始识别章节。 property 是 String 属性字符串,language_sampleRate_domain, 如chinese_8k_common,参见《API参考》中开始识别章节。 通过set方法可以设置具体参数,详见表 RasrRequest设置参数 表3 RasrRequest设置参数 方法名称 是否必选 参数类型 描述 SetPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 SetDigitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 SetVadHead 否 Integer 头部最大静音时间,[0, 60000],默认10000ms。 SetVadTail 否 Integer 尾部最大静音时间,[0, 3000],默认500ms。 SetMaxSeconds 否 Integer 音频最长持续时间, [1, 60],默认30s。 SetIntermediateResult 否 String 是否显示中间结果,yes 或 no,默认no。 SetVocabularyId 否 String 热词表id,若没有则不填。 SetNeedWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 初始化Client 初始化RasrClient,其参数包括AuthInfo 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 region 是 String 区域,如cn-north-4,参考终端节点。 endpoint 否 String 终端节点,参考地区和终端节点。一般使用默认即可。
  • 响应参数 响应类为RunTtsResponse,详见下表。调用失败处理方法请参见错误码。 表2 RunTtsResponse 参数名 是否必选 参数类型 说明 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 Object 调用成功时为合成语音内容,请参考表3。 调用失败时无此字段。 表3 Result 参数名 是否必选 参数类型 说明 data 是 String 合成后生成的语音数据,以Base64编码格式返回。用户如需生成音频,需要将Base64编码解码成byte数组,再保存为wav音频。
  • 示例代码 如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。 /* * Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved. */ package com.huaweicloud.sis.android.demo.tts; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.core.utils.StringUtils; import com.huaweicloud.sdk.sis.v1.SisClient; import com.huaweicloud.sdk.sis.v1.model.PostCustom TTS Req; import com.huaweicloud.sdk.sis.v1.model.RunTtsRequest; import com.huaweicloud.sdk.sis.v1.model.RunTtsResponse; import com.huaweicloud.sdk.sis.v1.model.TtsConfig; import com.huaweicloud.sdk.sis.v1.region.SisRegion; import com.huaweicloud.sis.android.demo.R; import com.huaweicloud.sis.android.demo.service.MediaPlayerService; import com.huaweicloud.sis.android.demo.Config; /** * 功能描述 * 语音合成 http * * @since 2022-07-18 */ public class SttsActivity extends AppCompatActivity { private EditText text; private TextView outResult; private Button startSoundRecording; private Button startPlay; private Handler handler; // 保存合成的base64字符串 private String base64Data; // 合成音频路径 private String createFilePath; // 客户端请求 private SisClient client; private MediaPlayerService mediaPlayerService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.stts); } @Override protected void onStart() { super.onStart(); initView(); initResoureces(); } @Override protected void onDestroy() { mediaPlayerService.stopMyPlayer(createFilePath); super.onDestroy(); } // 初始化界面 private void initView() { text = findViewById(R.id.input_text); outResult = findViewById(R.id.out_result); startSoundRecording = findViewById(R.id.start); startPlay = findViewById(R.id.startplay); startSoundRecording.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Runnable runnable = new Runnable() { @Override public void run() { String sttsRequestText = getSttsResponse(); Message message = new Message(); Bundle mBundle = new Bundle(); mBundle.putString("result", sttsRequestText); message.setData(mBundle); handler.sendMessage(message); } }; new Thread(runnable).start(); } }); startPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (!StringUtils.isEmpty(base64Data)) { createFilePath = mediaPlayerService.createAudioFile(getBaseContext(), "wav", base64Data); mediaPlayerService.startPlay(createFilePath); } } }); } /** * 初始化资源 * * @return */ private void initResoureces() { BasicCredentials auth = new BasicCredentials() .withAk(this.getString(R.string.HUAWEICLOUD_SDK_AK)) .withSk(this.getString(R.string.HUAWEICLOUD_SDK_SK)) .withProjectId(Config.PROJECT_ID); HttpConfig config = HttpConfig.getDefaultHttpConfig(); config.withIgnoreSSLVerification(true); client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(auth) .withRegion(SisRegion.valueOf(Config.REGION)) .build(); handler = new Handler(getMainLooper()) { @Override public void handleMessage(@NonNull Message message) { super.handleMessage(message); switch (message.what) { case 0: Bundle bundle = message.getData(); String rstr = bundle.getString("result"); outResult.setText(rstr); break; default: Log.e("Unexpected value: ", String.valueOf(message.what)); } } }; mediaPlayerService = new MediaPlayerService(); } // 设置请求体 private RunTtsRequest getRunTtsRequest() { TtsConfig configbody = new TtsConfig(); configbody.setAudioFormat(TtsConfig.AudioFormatEnum.fromValue("wav")); configbody.setSampleRate(TtsConfig.SampleRateEnum.fromValue("8000")); configbody.setProperty(TtsConfig.PropertyEnum.fromValue("chinese_huaxiaomei_common")); RunTtsRequest request = new RunTtsRequest(); PostCustomTTSReq body = new PostCustomTTSReq(); body.withConfig(configbody); if (!StringUtils.isEmpty(text.getText().toString())) { body.withText(text.getText().toString()); } else { body.withText("请输入合成文本"); } request.withBody(body); return request; } // 发送请求 private String getSttsResponse() { RunTtsRequest request = getRunTtsRequest(); String ttsString = ""; try { RunTtsResponse response = client.runTts(request); if (response.getResult().getData() != null) { base64Data = response.getResult().getData(); ttsString = "合成成功"; } else { ttsString = "合成失败"; } Log.i("info", ttsString); } catch (ConnectionException | RequestTimeoutException | ServiceResponseException e) { Log.e("error", e.toString()); } catch (Exception e) { Log.e("error", e.toString()); } return ttsString; } @Override protected void onPause() { mediaPlayerService.stopMyPlayer(createFilePath); super.onPause(); } }
  • 初始化Client 初始化SisClient,详细信息如下。 配置客户端连接参数。 默认配置 // 使用默认配置 HttpConfig config = HttpConfig.getDefaultHttpConfig(); 网络代理(可选) // 根据需要配置网络代理,网络代理默认的协议为 `http` 协议 config.withProxyHost("proxy.huaweicloud.com") .withProxyPort(8080) .withProxyUsername("test") .withProxyPassword("test"); 超时配置(可选) // 默认连接超时时间为60秒,可根据需要调整 config.withTimeout(60); SSL配置(可选) // 根据需要配置是否跳过SSL证书验证 config.withIgnoreSSLVerification(true); 配置认证信息。 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 使用永久AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); 使用临时AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withSecurityToken(securityToken) .withProjectId(projectId) 认证参数说明: ak、sk:访问密钥信息,获取方法请参考AK/SK认证。 projectId:华为云项目ID,获取方法请参考获取项目ID。。 securityToken:采用临时AK、SK 认证场景下的安全票据,可以通过token获取或者通过委托授权获取。 初始化客户端(region和指定云服务enddpoint二选一即可)。 指定region方式(强烈推荐) // 初始化客户端认证信息,使用当前客户端初始化方式可不填 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务SIS的 SisClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(basicCredentials) .withRegion(SisRegion.valueOf("cn-north-4")) .build(); 指定云服务endpoint方式(可选) // 指定终端节点,以SIS服务北京四的 endpoint 为例 String endpoint = "https://sis-ext.cn-north-4.myhuaweicloud.com"; // 初始化客户端认证信息,需要填写相应 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务SIS的 CbsClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(basicCredentials) .withEndpoint(endpoint) .build(); endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点。
  • 请求参数 请求类为RunTtsRequest,其中包含参数类PostCustomTTSReq,该类包含两个参数text(待合成文本)和TtsConfig,详见TtsConfig。 表1 TtsConfig 参数名称 是否必选 参数类型 描述 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参考》中语音合成章节。 伪代码 TtsConfig configbody = new TtsConfig(); configbody.setAudioFormat(TtsConfig.AudioFormatEnum.fromValue("wav")); configbody.setSampleRate(TtsConfig.SampleRateEnum.fromValue("8000")); configbody.setProperty(TtsConfig.PropertyEnum.fromValue("chinese_huaxiaomei_common")); RunTtsRequest request = new RunTtsRequest(); PostCustomTTSReq body = new PostCustomTTSReq(); body.withConfig(configbody); if (!StringUtils.isEmpty(text.getText().toString())) { body.withText(text.getText().toString()); } else { body.withText("请输入合成文本"); } request.withBody(body); return request;
  • 响应参数 状态响应类为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 分词
  • 请求参数 请求类为RasrRequest,详见表3。 表3 RasrRequest 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,支持pcm,alaw,ulaw等,如pcm8k16bit,参见《API参考》中开始识别章节。 property 是 String 属性字符串,language_sampleRate_domain, 如chinese_16k_general,参见《API参考》中开始识别章节。 punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 vadHead 否 Integer 头部最大静音时间,[0, 60000],默认10000ms。 vadTail 否 Integer 尾部最大静音时间,[0, 3000],默认500ms。 maxSeconds 否 Integer 音频最长持续时间, [1, 60],默认30s。 intermediateResult 否 String 是否显示中间结果,yes 或 no,默认no。例如分3次发送音频,选择no结果一次性返回,选择yes分三次返回。 vocabularyId 否 String 热词表id,若没有则不填。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 初始化Client 初始化RasrClient,其参数包括AuthInfo、RasrListener、SisConfig。 RasrListener需要用户自定义实现监听逻辑,请参见表1和表2。 表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。
  • 请求参数 请求类为HotWordRequest,详见表3。 表3 HotWordRequest 参数名称 是否必选 参数类型 描述 name 是 String 热词表名,创建时不可重复。内容限制为字母,数字,下中划线和井号,长度不超过32字节。 language 是 String 热词表语言类型,目前支持汉语普通话“chinese_mandarin”。 contents 是 Array of String 热词库,单词库支持热词数上限10000。中文单个热词长度上限32字节。 description 否 String 热词表描述,长度不超过255字节。
  • 初始化Client 初始化HotWordClient,其参数包括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。
  • 请求参数 请求类为FlashLasrRequest,详见表3。 表3 FlashLasrRequest 参数 是否必选 参数类型 描述 audio_format 是 String 支持语音的格式,请参考表 audio_format取值范围。 property 是 String 所使用的模型特征串,通常是 “语种_采样率_领域”的形式,采样率需要与音频采样率保持一致,取值范围请参考表 property取值范围。 add_punc 否 String 表示是否在识别结果中添加标点,取值为“yes”和“no”,默认为“no”。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为“yes” 和 “no”,默认为“yes”。 vocabulary_id 否 String 热词表id,不使用则不填写。 创建热词表信息请参考创建热词表。 need_word_info 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。 first_channel_only 否 String 表示是否在识别中只识别首个声道的音频数据,取值为“yes”和“no”,默认为“no”。 obs_bucket_name 否 String 表示在OBS对象桶名,使用前请先授权,操作方法请参见配置OBS访问权限。obs_bucket_name长度大于等于3个字符,小于64个字符,不需要进行urlencode编码,如果包含中文,直接输入中文即可。 示例 obs url为https://test.obs.cn-north-4.myhuaweicloud.com/data/0601/test.wav 则obs_bucket_name=test,obs_bucket_key=data/0601/test.wav obs_object_key 否 String 表示OBS对象桶中的对象的键值,长度小于1024个字符,不需要进行urlencode编码,如果包含中文,直接输入中文即可。 示例 obs url为https://test.obs.cn-north-4.myhuaweicloud.com/data/0601/test.wav 则obs_bucket_name=test,obs_bucket_key=data/0601/test.wav 表4 audio_format取值范围 audio_format取值 描述 wav wav格式音频 mp3 mp3格式音频 m4a m4a格式音频 aac aac格式音频 opus ops格式音频。 表5 property取值范围 property取值 描述 chinese_8k_common 支持采样率为8k的中文普通话 语音识别 。 chinese_16k_conversation 支持采样率为16k的会议场景的中文普通话语音识别。
  • 代码示例 如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。 # -*- coding: utf-8 -*- from huaweicloud_sis.client.flash_lasr_client import FlashLasrClient from huaweicloud_sis.bean.flash_lasr_request import FlashLasrRequest from huaweicloud_sis.exception.exceptions import ClientException from huaweicloud_sis.exception.exceptions import ServerException 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 = '' # region,如cn-north-4 obs_bucket_name = '' # obs桶名 obs_object_key = '' # obs对象的key audio_format = '' # 文件格式,如wav等, 支持格式详见api文档 property = '' # 属性字符串,language_sampleRate_domain, 如chinese_8k_common, 详见api文档 def flash_lasr_example(): """ 录音文件极速版示例 """ # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) client = FlashLasrClient(ak, sk, region, project_id, sis_config=config) # step2 构造请求 asr_request = FlashLasrRequest() # 以下参数必选 # 设置存放音频的桶名,必选 asr_request.set_obs_bucket_name(obs_bucket_name) # 设置桶内音频对象名,必选 asr_request.set_obs_object_key(obs_object_key) # 设置格式,必选 asr_request.set_audio_format(audio_format) # 设置属性,必选 asr_request.set_property(property) # 以下参数可选 # 设置是否添加标点,yes or no,默认no asr_request.set_add_punc('yes') # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes asr_request.set_digit_norm('yes') # 设置是否添加热词表id,没有则不填 # asr_request.set_vocabulary_id(None) # 设置是否需要word_info,yes or no, 默认no asr_request.set_need_word_info('no') # 设置是否只识别收个声道的音频数据,默认no asr_request.set_first_channel_only('no') # step3 发送请求,返回结果,返回结果为json格式 result = client.get_flash_lasr_result(asr_request) # use enterprise_project_Id # headers = {'Enterprise-Project-Id': 'your enterprise project id', 'Content-Type': 'application/json'} # result = client.get_flash_lasr_result(asr_request, headers) print(json.dumps(result, indent=2, ensure_ascii=False)) if __name__ == '__main__': try: flash_lasr_example() except ClientException as e: print(e) except ServerException as e: print(e)
  • 初始化Client 初始化FlashLasrClient详见表 FlashLasrClient初始化参数。 表1 FlashLasrClient初始化参数 参数名称 是否必选 参数类型 描述 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。 proxy 否 List [host, port] 或 [host, port, username, password]。
  • 代码示例 如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。 import SwiftUI import AVFoundation import SIS struct Config { static let region = "cn-north-4" static let projectId = "" } class HTTPClientDelegate: HTTPDelegate, ObservableObject { @Published var result = "" func onMessage(response: SASRResponse) { self.result = response.result.text } func onError(response: SASRErrorResponse) { self.result = response.errorMsg } } enum STATE { case IDLE case RECORDING } struct SASRView: View { @ObservedObject var delegate = HTTPClientDelegate() @State var client: SASRClient? @State var recordStatus = STATE.IDLE @State var recorder: AudioFileRecorder? var body: some View { VStack { Button("开始录音") { do { try AVAudioSession.sharedInstance().setCategory(.record) try AVAudioSession.sharedInstance().setActive(true) } catch { self.delegate.result = "初始化录音失败" return } //认证用的AK和SK硬编码在代码中或明文存储都有很大安全风险,建议在配置文件或环境变量中密文存放,使用时解密,确保安全。 //本示例以AK和SK保存在环境变量中来实现身份验证为例,运行本示例请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 let ak = ProcessInfo.processInfo.environment["HUAWEICLOUD_SDK_AK"]! let sk = ProcessInfo.processInfo.environment["HUAWEICLOUD_SDK_SK"]! let authInfo = AuthInfo(ak: ak, sk: sk, region: Config.region, projectId: Config.projectId) self.client = SASRClient(auth: authInfo) self.client!.delegate = self.delegate self.recorder = AudioFileRecorder() self.recorder?.start() self.delegate.result = "" self.recordStatus = .RECORDING } .buttonStyle(.borderedProminent) .disabled(self.recordStatus == .RECORDING) Button("停止录音") { self.recorder?.stop() let filePath = self.recorder?.filePath let binData = try! Data(contentsOf: URL(fileURLWithPath: filePath!)) let base64Data = binData.base64EncodedData() let strData = String(decoding: base64Data, as: UTF8.self) var config = SASRConfig() config.addPunc = "yes" config.digitNorm = "no" let sasrRequest = SASRRequest(config: config, data: strData) self.client!.transcribe(request: sasrRequest) self.recordStatus = .IDLE } .buttonStyle(.borderedProminent) .disabled(self.recordStatus == .IDLE) Text(delegate.result) } .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { SASRView() } }
  • 响应参数 响应类为SASRResponse,详见表4。调用失败处理方法请参见错误码。 表4 SASRResponse 参数名 是否必选 参数类型 说明 traceId 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 SASRResult 调用成功表示识别结果,调用失败时无此字段。请参考表5。 表5 SASRResult 参数名 是否必选 参数类型 说明 text 是 String 调用成功表示识别出的内容。 score 是 Float 调用成功表示识别出的置信度,取值范围:0~1。
  • 请求参数 请求类为SASRConfig和语音数据data,详见表2。 表2 SASRConfig 参数名称 是否必选 参数类型 描述 config 是 Config object 配置信息。 data 是 String 本地音频文件经过Base64编码后的字符串,音频文件时长小于60s。 表3 Config 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,具体信息请参见《API参考》中 一句话识别 章节。 property 是 String 属性字符串,语言_采样率_模型,如chinese_16k_general。具体信息请参见《API参考》中一句话识别章节。 addPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 vocabularyId 否 String 热词表id,不使用则不填写。 创建热词表请参考《API参考》中创建热词表章节。
  • 初始化Client 初始化SASRClient,参数为AuthInfo,详见表1。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。
  • 代码示例 如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。 # -*- coding: utf-8 -*- from huaweicloud_sis.client.asr_client import AsrCustomizationClient from huaweicloud_sis.bean.asr_request import AsrCustomShortRequest from huaweicloud_sis.exception.exceptions import ClientException from huaweicloud_sis.exception.exceptions import ServerException from huaweicloud_sis.utils import io_utils 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 = '' # region,如cn-north-4 """ todo 请正确填写音频格式和模型属性字符串 1. 音频格式一定要相匹配。 例如wav音频,格式是wav。具体参考api文档。 例如音频是pcm格式,并且采样率为8k,则格式填写pcm8k16bit。 如果返回audio_format is invalid 说明该文件格式不支持。具体支持哪些音频格式,需要参考一些api文档。 2. 音频采样率要与属性字符串的采样率要匹配。 例如格式选择pcm16k16bit,属性字符串却选择chinese_8k_common, 则会返回'audio_format' is not match model 例如wav本身是16k采样率,属性选择chinese_8k_common, 同样会返回'audio_format' is not match model """ # 一句话识别参数,以音频文件的base64编码传入,1min以内音频 path = '' # 文件位置, 需要具体到文件,如D:/test.wav path_audio_format = '' # 音频格式,如wav等,详见api文档 path_property = 'chinese_16k_general' # language_sampleRate_domain, 如chinese_16k_general,详见api文档 def sasr_example(): """ 一句话识别示例 """ # step1 初始化客户端 config = SisConfig() config.set_connect_timeout(10) # 设置连接超时 config.set_read_timeout(10) # 设置读取超时 # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password] # config.set_proxy(proxy) asr_client = AsrCustomizationClient(ak, sk, region, project_id, sis_config=config) # step2 构造请求 data = io_utils.encode_file(path) asr_request = AsrCustomShortRequest(path_audio_format, path_property, data) # 所有参数均可不设置,使用默认值 # 设置是否添加标点,yes or no,默认no asr_request.set_add_punc('yes') # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes asr_request.set_digit_norm('yes') # 设置是否添加热词表id,没有则不填 # asr_request.set_vocabulary_id(None) # 设置是否需要word_info,yes or no, 默认no asr_request.set_need_word_info('no') # step3 发送请求,返回结果,返回结果为json格式 result = asr_client.get_short_response(asr_request) # use enterprise_project_Id # headers = {'Enterprise-Project-Id': 'your enterprise project id', 'Content-Type': 'application/json'} # result = asr_client.get_short_response(asr_request, headers) print(json.dumps(result, indent=2, ensure_ascii=False)) if __name__ == '__main__': try: sasr_example() except ClientException as e: print(e) except ServerException as e: print(e)
  • 响应参数 Python SDK响应结果为Json格式,表4。调用失败处理方法请参见错误码。 表4 响应结果 参数名称 是否必选 参数类型 描述 result 是 Object 详见表5。 trace_id 是 String 用于后台日志问题追溯。 表5 Result 参数名称 是否必选 参数类型 描述 text 是 String 识别结果。 score 是 Float 识别结果置信度评分。 word_info 否 Array of objects 分词信息列表。 表6 Word_info 数据结构 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
  • 请求参数 请求类为AsrCustomShortRequest,详见表3。 表3 AsrCustomShortRequest 参数名称 是否必选 参数类型 描述 data 是 String 本地音频文件经过Base64编码后的字符串,音频文件时长不超过1min。 audio_format 是 String 音频格式,具体信息请参见《API参考》中一句话识别章节。 model_property 是 String 属性字符串,语言_采样率_模型,如chinese_16k_general。具体信息请参见《API参考》中一句话识别章节。 add_punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 vocabulary_id 否 String 热词表id,不使用则不填写。 创建热词表请参考《API参考》中创建热词表章节。 need_word_info 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 初始化Client 初始化AsrCustomizationClient详见表 AsrCustomizationClient初始化参数。 表1 AsrCustomizationClient初始化参数 参数名称 是否必选 参数类型 描述 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。 proxy 否 List [host, port] 或 [host, port, username, password]。
  • 初始化Client 初始化RasrClient,其参数包括AuthInfo。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 region 是 String 区域,如cn-north-4,参考终端节点。 endpoint 否 String 终端节点,参考地区和终端节点。一般使用默认即可。
  • 请求参数 请求类为RasrRequest,详见表 RasrRequest。 表2 RasrRequest 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,支持pcm等,如pcm8k16bit,参见《API参考》中开始识别章节。 property 是 String 属性字符串,language_sampleRate_domain, 如chinese_8k_common,参见《API参考》中开始识别章节。 通过set方法可以设置具体参数,详见表 RasrRequest设置参数 表3 RasrRequest设置参数 方法名称 是否必选 参数类型 描述 SetPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 SetDigitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 SetVadHead 否 Integer 头部最大静音时间,[0, 60000],默认10000ms。 SetVadTail 否 Integer 尾部最大静音时间,[0, 3000],默认500ms。 SetMaxSeconds 否 Integer 音频最长持续时间, [1, 60],默认30s。 SetIntermediateResult 否 String 是否显示中间结果,yes 或 no,默认no。 SetVocabularyId 否 String 热词表id,若没有则不填。 SetNeedWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
共100000条