调用Java SDK实现一句话识别
语音交互服务软件开发工具包(SIS SDK)是对语音交互服务提供的REST API进行的封装,用户直接调用语音交互SDK提供的接口函数即可实现使用语音交互业务能力的目的,以简化用户的开发工作。
本章节提供了通过Java SDK调用一句话识别服务的样例,帮助用户快速了解如何使用Java SDK调用华为云SIS服务。具体操作如下所示:
准备工作
注册华为帐号并开通华为云,并完成实名认证,帐号不能处于欠费或冻结状态。
操作须知
语音交互服务的API接口已全部商用,无需开通,可直接调用。调用费用请参见语音交互价格计算器
步骤1:配置环境
- 下载SIS Java SDK。
下载地址:https://sis-sdk-repository.obs.cn-north-1.myhuaweicloud.com/java/huaweicloud-java-sdk-sis-1.8.2.zip
- 准备Java开发环境。
- 从Oracle官网下载并安装JDK。版本要求:强烈推荐使用1.8版本。
- 从Eclipse官网下载并安装Eclipse IDE for Java Developers最新版本,例如:eclipse-jee-mars-R-win32-x86_64.zip。
- 在Idea官网下载对应平台的idea版本,比如:ideaIU-2023.2.2.exe。
具体操作请参见配置Java环境章节。
- 新建SIS Java SDK工程。
- 解压eclipse后,直接打开。在主菜单选择 配置正确的JRE路径。
- 新建工程,在工程下建立一个文件(
如果您是更新SDK,请检查与旧版本依赖的jar包有无版本冲突,否则会影响使用。
例如:旧版本的SDK日志支持log4j 1xx版本,依赖jar包为log4j-1.2.17.jar、slf4j-api-1.7.21.jar、slf4j-log4j12-1.7.5.jar。新版本需要将其替换成log4j-api-2.12.0.jar、log4j-core-2.12.0.jar、log4j-slf4j-impl-2.12.0.jar、slf4j-api-1.7.30.jar。旧版本依赖java-sdk-core-2.0.1.jar,新版本依赖java-sdk-core-3.0.12.jar。
),命名为lib。将下载的jar包拷贝至lib中。
- 选中新建的工程,单击右键,下拉选择“Libraries ”页签,选择“Add JARs”。在打开的窗口中,选择刚放进lib的jar包。单击“OK”,导入完成。
步骤2:修改配置信息
- 获取AK/SK。
AK/SK即访问秘钥,请登录“我的凭证”界面,选择“管理访问密钥 > 新增访问密钥”获取。
- AK/SK认证鉴权,配置Java SDK中的AK/SK。
根据获取的AK/SK,修改Demo工程“AsrCustomizationDemo.java”文件中函数的“AK”和“SK”的值。
- 设置SDK中demo文件夹下的示例文件AsrCustomizationDemo.java相关参数,参数说明具体请参考表1、表2、表3参数说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
import com.huawei.sis.bean.SisConfig; import com.huawei.sis.bean.SisConstant; import com.huawei.sis.bean.request.AsrCustomLongRequest; import com.huawei.sis.bean.response.AsrCustomLongResponse; import com.huawei.sis.bean.request.AsrCustomShortRequest; import com.huawei.sis.bean.response.AsrCustomShortResponse; import com.huawei.sis.bean.AuthInfo; import com.huawei.sis.bean.base.AsrcLongAnalysisInfo; import com.huawei.sis.bean.base.AsrcLongSentence; import com.huawei.sis.client.AsrCustomizationClient; import com.huawei.sis.exception.SisException; import com.huawei.sis.util.IOUtils; import java.util.List; /** * 一句话识别demo * * Copyright 2019 Huawei Technologies Co.,Ltd. */ public class AsrCustomizationDemo { private static final int SLEEP_TIME = 500; private static final int MAX_POLLING_NUMS = 1000; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 private String ak = System.getenv("HUAWEICLOUD_SDK_AK"); private String sk = System.getenv("HUAWEICLOUD_SDK_SK"); private String region = ""; // 区域,如cn-north-1、cn-north-4 private String projectId = ""; // 项目id。登录管理控制台,鼠标移动到右上角的用户名上,在下拉列表中选择我的凭证。在我的凭证页面,可以查看用户名、帐号名,选择“项目列表”页签,在项目列表中查看项目。多项目时,展开“所属区域”,从“项目ID”列获取子项目ID。 // 一句话识别参数 private String path = ""; // 文件路径,一句话识别目前仅支持上传音频文件的base64编码 private String pathAudioFormat = ""; // 文件格式,如wav等 private String pathProperty = ""; // 属性字符串,language_sampleRate_domain, 如chinese_8k_common private void setShortParameter(AsrCustomShortRequest request) { // 设置是否添加标点,默认是no request.setAddPunc("yes"); // 设置热词id,不使用则不用填写 // request.setVocabularyId(""); } private SisConfig getConfig() { SisConfig config = new SisConfig(); // 设置连接超时,默认10000ms config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT); // 设置请求超时,默认10000ms config.setRequestTimeout(SisConstant.DEFAULT_CONNECTION_REQUEST_TIMEOUT); // 设置socket超时,默认10000ms config.setSocketTimeout(SisConstant.DEFAULT_SOCKET_TIMEOUT); // 设置代理, 一定要确保代理可用才启动此设置。 代理初始化也可用不加密的代理,new ProxyHostInfo(host, port); // ProxyHostInfo proxy = new ProxyHostInfo(host, port, username, password); // config.setProxy(proxy); return config; } private void printAsrShortResponse(AsrCustomShortResponse response) { System.out.println("traceId=" + response.getTraceId()); System.out.println("text=" + response.getText()); System.out.println("score=" + response.getScore()); System.out.println("\n"); } /** * 一句话识别demo。 */ private void shortDemo() { try { // 1. 初始化AsrCustomizationClient // 定义authInfo,根据ak,sk,region,projectId AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId); // 设置config,主要与超时有关 SisConfig config = getConfig(); // 根据authInfo和config,构造AsrCustomizationClient AsrCustomizationClient asr = new AsrCustomizationClient(authInfo, config); // 2. 配置请求 String data = IOUtils.getEncodeDataByPath(path); AsrCustomShortRequest request = new AsrCustomShortRequest(data, pathAudioFormat, pathProperty); // 设置请求参数,所有参数均为可选 setShortParameter(request); // 3. 发送请求,获取响应 AsrCustomShortResponse response = asr.getAsrShortResponse(request); // 打印结果 printAsrShortResponse(response); } catch (SisException e) { e.printStackTrace(); System.out.println("error_code:" + e.getErrorCode() + "\nerror_msg" + e.getErrorMsg()); } } public static void main(String[] args) { AsrCustomizationDemo demo = new AsrCustomizationDemo(); // 选择1 一句话识别 demo.shortDemo(); } }
表1 用户信息 参数名称
是否必选
参数说明
AK
必选
用户的AK,获取AK、SK参考AK/SK认证。
SK
必选
用户的SK,获取AK、SK参考AK/SK认证。
Region
必选
服务所在区域,如“cn-north-4”。
ProjectId
必选
项目ID,同Region一一对应,参考获取项目ID。
Endpoint
可选
终端节点,可不填,使用默认即可。