云服务器内容精选

  • 初始化Client 初始化RttsClient,其参数包括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 终端节点,参考地区和终端节点。一般使用默认即可。
  • 请求参数 请求类为RttsRequest,详见表 RttsRequest。 表2 RttsRequest 参数名称 是否必选 参数类型 描述 text 是 String 待合成文本,不超过500字。 通过set方法可以设置具体参数,详见表 RttsRequest设置参数 表3 RttsRequest设置参数 方法名称 是否必选 参数类型 描述 SetAudioFormat 否 String 设置语音格式,默认pcm。 SetAudioProperty 否 String 设置 语音合成 特征字符串,{language}_{speaker}_{domain},即“语种_人员标识_领域”。默认chinese_xiaoyan_common 。详见API文档。 SetSampleRate 否 String 设置采样率:8000、16000,默认8000。 SetPitch 否 Integer 设置音高,-500~500,默认0。 SetVolume 否 Integer 设置音量,0~100,默认50。 SetSpeed 否 Integer 设置语速,-500~500,默认0。
  • SDK列表 在开始使用之前,请确保您安装的是最新版本的SDK。使用过时的版本可能会导致兼容性问题或无法使用最新功能。您可以在 SDK中心 查询版本信息。 表1提供了huaweicloud-sdk-php-v3SIS服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获取安装包以及查看指导文档。 表1 SDK列表 编程语言 Github地址 参考文档 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 C++ huaweicloud-sdk-cpp-v3 C++ SDK使用指导 .NETet huaweicloud-sdk-net-v3 .NET SDK使用指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导 NodeJs huaweicloud-sdk-nodejs-v3 NodeJs SDK使用指导 PHP huaweicloud-sdk-php-v3 PHP SDK使用指导
  • 请求参数 请求类为SasrWsRequest,其中参数详见下表 表7 SasrWsRequest 参数名称 是否必选 参数类型 描述 command 是 String 需设置为START,表示开始识别请求;发送END,表示识别结束请求。 config 是 Object 配置信息,详见下表。 表8 Config 参数名称 是否必选 参数类型 描述 audioFormat 是 String 音频格式,支持pcm,alaw,ulaw等,如pcm8k16bit,具体规格请参见《API参考》中开始识别章节。 property 是 String 属性字符串,language_sampleRate_domain, 如chinese_8k_common。 addPunc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 intermediateResult 否 String 是否显示中间结果,yes 或 no,默认no。 vocabularyId 否 String 热词表id,若没有则不填。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。
  • 初始化Client 初始化SasrWsClient,其中参数包含AuthInfo,SisHttpConfig,SasrWsResponseListener,SasrWsConnProcessListener。 表1 SasrWsClient 参数 是否必选 参数类型 描述 AuthInfo 是 Object 鉴权信息类。 SisHttpConfig 是 Object 连接时网络的配置类。 SasrWsResponseListener 是 Object webSocket回调过程中,业务逻辑的Listener。 SasrWsConnProcessListener 否 Object webSocket生命周期的Listener。 其中AuthInfo和SisHttpConfig的参数如下表所示 表2 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 serviceRegion 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 serviceEndPoint 否 String 终端节点,参考地区和终端节点。 表3 SisHttpConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。 websocketWaitTimeout 否 Integer webSocket返回数据时等待时间,默认20000,单位毫秒。 ProxyHostInfo 否 ProxyHostInfo 代理类。 表4 ProxyHostInfo 参数名称 是否必选 参数类型 描述 userName 否 String 代理用户名(例:test)。 passWord 否 String 代理密码(例:test)。 hostName 否 String 代理地址(例:“proxy.huaweicloud.com”)。 port 否 int 代理端口号(例:8080)。 表5 SasrWsResponseListener 函数 描述 void onExceededAudio(); 识别时长超过一分钟时,响应,后续录入音频不在识别。 void onResponseError(AsrResponse response); 识别过程中出现异常,调用。 void onResponseEnd(AsrResponse response); 识别结束时回调。 void onResponseBegin(AsrResponse response); 识别开始时回调。 void onResponseMessage(AsrResponse message); 返回识别的结果。 表6 SasrWsConnProcessListener 函数 描述 void onTranscriptionConnect() webSocket连接建立后回调。 void onTranscriptionClose(); webSocket连接关闭后回调 void onTranscriptionFail(AsrResponse var1); webSocket长连接连接失败是回调。
  • 请求参数 请求类为AsrCustomLongRequest,详见表3。 表3 AsrCustomLongRequest 参数名称 是否必选 参数类型 描述 data_url 是 String 存放录音文件地址: 推荐使用华为云OBS:授权配置请参见OBS配置。 您也可以把录音文件放在自行搭建服务器上,提供下载文件的地址。URL不能使用IP地址,只能使用 域名 ,请尽量避免中文 audio_format 是 String 音频格式,具体信息请参见《API参考》中录音文件识别章节。 model_property 是 String 属性字符串,语言_采样率_模型,如chinese_8k_common。具体信息请参见《API参考》中录音文件识别章节。 add_punc 否 String 表示是否在识别结果中添加标点,取值为yes 、 no,默认no。 digit_norm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。 need_analysis_info 否 Boolean 是否选择分析信息。 如果选择false,则声道、话者分离、情绪检测、速度信息均无效。默认false。 diarization 否 Boolean 是否需要话者分离,表示识别结果会包含role项,默认true。 channel 否 String 语音文件声道信息,可以为MONO(缺省), LEFT_AGENT, RIGHT_AGENT。默认MONO。 emotion 否 Boolean 是否需要做情绪检测,默认true。 speed 否 Boolean 是否需要输出语速信息,默认true。 vocabulary_id 否 String 热词表id,不使用则不填写。 创建热词表请参考《API参考》中创建热词表章节。 word_info 否 Array of objects 分词信息列表。
  • 响应参数 Python SDK响应结果为Json格式,详见表4。调用失败处理方法请参见错误码。 表4 响应结果 参数名称 是否必选 参数类型 描述 status 否 String 当前识别状态。具体状态如下所示: WAITING 等待识别。 FINISHED 识别已经完成。 ERROR 识别过程中发生错误。 create_time 否 String 任务创建时间, 遵循 RFC 3339格式。 格式示例:2018-12-04T13:10:29.310Z。 start_time 否 String 开始识别时间, 遵循 RFC 3339格式。 当status为FINISHED或ERROR时存在。 格式示例:2018-12-04T13:10:29.310Z。 finish_time 否 String 识别完成时间, 遵循 RFC 3339格式。 当status为FINISHED或ERROR时存在。 格式示例:2018-12-04T13:10:29.310Z。 audio_duration 否 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 Analysis_info 参数名 是否必选 参数类型 说明 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 分词
  • 初始化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]。
  • 请求参数 请求类为RttsRequest,其中参数包含text,command,Config,详见表5。 表5 RttsRequest 参数名称 是否必选 参数类型 描述 text 是 String 待合成的文本,文本长度限制小于500字符。 command 是 String 需设置为START,表示开始识别请求。 Config 是 String 配置信息。可参照表6。 表6 Config 参数名称 是否必选 参数类型 描述 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参考》中语音合成章节。
  • 代码示例 如下示例仅供参考,最新代码请前往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.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.cloud.sdk.util.StringUtils; import com.huaweicloud.sdk.core.utils.JsonUtils; import com.huaweicloud.sis.android.demo.R; import com.huaweicloud.sis.android.demo.service.AudioTrackService; import com.huaweicloud.sis.android.demo.Config; import com.huaweicloud.sis.android.demo.service.AudioTrackServiceCallback; import sis.android.sdk.RttsClient; import sis.android.sdk.bean.AuthInfo; import sis.android.sdk.bean.SisHttpConfig; import sis.android.sdk.bean.request.RttsRequest; import sis.android.sdk.bean.response.RttsResponse; import sis.android.sdk.exception.SisException; import sis.android.sdk.listeners.RttsResponseListener; /** * 功能描述 * 语音合成 websocket * * @since 2022-07-18 */ public class RttsActivity extends AppCompatActivity { private EditText textView; private Button startPlay; private RttsClient rttsClient; private SisHttpConfig sisHttpConfig; private AudioTrackService audioTrackService; private AudioTrackServiceCallback audioPlayerCallback; private AuthInfo authInfo; private static int dataAcceptanceTime = 1000 * 60 * 5; private RttsResponseListener rttsResponseListener = new RttsResponseListener() { @Override public void onTranscriptionConnect() { Log.i("info", "建立连接后回调"); } @Override public void onTranscriptionClose() { Log.i("info", "关闭连接后回调"); } @Override public void onTranscriptionFail(RttsResponse response) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "出现异常" + JsonUtils.toJSON(response), Toast.LENGTH_SHORT).show(); } }); updateButtonState(startPlay, true); Log.i("info", "长连接失败后回调" + JsonUtils.toJSON(response)); } @Override public void onTranscriptionBegin(RttsResponse response) { Log.i("info", "开始合成时的响应事件" + response.toString()); } @Override public void onTranscriptionEnd(RttsResponse response) { rttsClient.close(); audioTrackService.setPlayState(AudioTrackService.PlayState.playEnd); } @Override public void onTranscriptionError(RttsResponse response) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "出现异常" + JsonUtils.toJSON(response), Toast.LENGTH_SHORT).show(); } }); updateButtonState(startPlay, true); Log.i("info", "合成时发生错误的响应事件" + response.toString()); } @Override public void onTranscriptionResponse(byte[] bytes) { Log.i("info", "合成过程中返回的二进制流"); audioTrackService.setAudioData(bytes); } }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rtts); } @Override protected void onStart() { super.onStart(); initView(); initResources(); } @Override protected void onDestroy() { super.onDestroy(); if (audioTrackService != null) { audioTrackService.stop(); audioTrackService.releaseTrack(); } } /** * 初始化UI */ private void initView() { textView = findViewById(R.id.itext); startPlay = findViewById(R.id.startplay); startPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { updateButtonState(startPlay, false); new Thread(new Runnable() { @Override public void run() { try { audioTrackService.play(); rttsClient = new RttsClient(authInfo, sisHttpConfig, rttsResponseListener); RttsRequest rttsRequest = rttsRequets(); rttsClient.connect(); rttsClient.sendData(rttsRequest); } catch (SisException e) { Log.e("error", e.getErrorCode() + e.getErrorMsg()); } } }).start(); } }); } // 用于设置按钮的状态 private void updateButtonState(final Button btn, final boolean state) { runOnUiThread(new Runnable() { @Override public void run() { btn.setEnabled(state); } }); } /** * 初始化资源 */ private void initResources() { authInfo = new AuthInfo(this.getString(R.string.HUAWEICLOUD_SDK_AK), this.getString(R.string.HUAWEICLOUD_SDK_SK), Config.REGION, Config.PROJECT_ID); sisHttpConfig = new SisHttpConfig(); // 设置等待事件为5分钟 sisHttpConfig.setWebsocketWaitTimeout(dataAcceptanceTime); audioPlayerCallback = new AudioTrackServiceCallback() { @Override public void playStart() { } @Override public void playOver() { updateButtonState(startPlay, true); } }; audioTrackService = new AudioTrackService(audioPlayerCallback); } /** * 功能描述 * 语音合成websocket 版 */ private RttsRequest rttsRequets() { RttsRequest rttsRequest = new RttsRequest(); RttsRequest.Config config = new RttsRequest.Config(); config.setAudioFormat("pcm"); config.setProperty("chinese_huaxiaomei_common"); config.setSampleRate("16000"); config.setPitch(0); config.setVolume(50); rttsRequest.setCommand("START"); rttsRequest.setConfig(config); String text = textView.getText().toString().trim(); if (!StringUtils.isNullOrEmpty(text)) { rttsRequest.setText(text); } else { rttsRequest.setText("请输入合成音频"); } return rttsRequest; } }
  • 初始化Client 初始化RttsClient,其中参数包含AuthInfo和SisHttpConfig和RttsResponseListener。其中AuthInfo和SisHttpConfig的参数如表1所示。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 serviceRegion 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 serviceEndPoint 否 String 终端节点,参考地区和终端节点。 表2 SisHttpConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。 websocketWaitTimeout 否 Integer webSocket返回数据时等待时间,默认20000,单位毫秒。 ProxyHostInfo 否 ProxyHostInfo 代理类。 表3 ProxyHostInfo 参数名称 是否必选 参数类型 描述 userName 否 String 代理用户名(例:test)。 passWord 否 String 代理密码(例:test)。 hostName 否 String 代理地址(例:“proxy.huaweicloud.com”)。 port 否 int 代理端口号(例:8080)。 其中RttsResponseListener使用户自定义的,建立webSocket之后,接受服务端返回消息的Listener。 表4 RttsResponseListener 函数名称 作用 void onTranscriptionConnect(); webSocket建立连接后后调。 void onTranscriptionClose(); webSocket连接关闭后回调。 void onTranscriptionFail(RttsResponse response); 长连接连接失败是回调。 void onTranscriptionBegin(RttsResponse response); 开始合成音频数据时回调。 void onTranscriptionEnd(RttsResponse response); 合成音频数据结束时回调。 void onTranscriptionError(RttsResponse response); 合成音频数据过程中失败时回调。 void onTranscriptionResponse(byte[] bytes); 返回合成的二进制数据。
  • 响应参数 响应类为AsrCustomShortResponse,详见表4。调用失败处理方法请参见错误码。 表4 AsrCustomShortResponse 参数名 是否必选 参数类型 说明 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 Object 调用成功表示识别结果,调用失败时无此字段。请参考表5。 表5 Result 参数名 是否必选 参数类型 说明 text 是 String 调用成功表示识别出的内容。 score 是 Float 调用成功表示识别出的置信度,取值范围:0~1。 word_info 否 Array of objects 分词信息列表。 表6 Word_info 数据结构 参数名 是否必选 参数类型 说明 start_time 否 Integer 起始时间 end_time 否 Integer 结束时间 word 否 String 分词
  • 请求参数 请求类为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”。
  • 初始化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。
  • 响应参数 响应类为TtsCustomResponse,详见表3。调用失败处理方法请参见错误码。 表4 TtsResponse 参数名 是否必选 参数类型 说明 isSaved 否 String 是否将响应音频保存为本地文件。 savePath 否 String 保存本地的路径,如D:/test.wav。 result 是 Object 调用成功时为合成语音内容,请参考表5。 调用失败时无此字段。 表5 Result 参数名 是否必选 参数类型 说明 data 是 String 合成后生成的语音数据,以Base64编码格式返回。用户如需生成音频,需要将Base64编码解码成byte数组,再保存为wav音频。