文档首页 > > SDK参考> Java SDK> 使用一句话识别

使用一句话识别

分享
更新时间: 2020/08/10 GMT+08:00

前提条件

  • 确保已按照配置Java环境配置完毕。
  • 确保已存在待识别的音频文件。如果需要请在下载的SDK压缩包中获取示例音频。

初始化Client

初始化AsrCustomizationClient,其参数包括AuthInfo和SisConfig,详见表 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数据结构

参数名称

是否必选

参数类型

描述

socketTimeout

Integer

socket超时,默认10000,单位ms。

connectionTimeout

Integer

连接超时,默认10000,单位ms。

requestTimeout

Integer

请求超时,默认10000,单位ms。

请求参数

请求类为AsrCustomShortRequest,详见表 AsrCustomShortRequest数据结构

表3 AsrCustomShortRequest数据结构

参数名称

是否必选

参数类型

描述

data

String

本地音频文件经过Base64编码后的字符串,音频文件时长不超过1min。

audioFormat

String

音频格式,具体信息请参见《API参考》中一句话识别章节。

property

String

属性字符串,语言_采样率_模型,如chinese_8k_common。具体信息请参见《API参考》中一句话识别章节。

addPunc

String

表示是否在识别结果中添加标点,取值为yes 、 no,默认no。

digitNorm

String

表示是否将语音中的数字识别为阿拉伯数字,取值为yes 、 no,默认为yes。

vocabularyId

String

热词表id,不使用则不填写。

创建热词表请参考《API参考》中创建热词表章节。

响应参数

响应类为AsrCustomShortResponse,详见表 AsrCustomShortResponse数据结构

表4 AsrCustomShortResponse数据结构

参数名称

是否必选

参数类型

描述

traceId

String

用于后台日志追溯分析。

text

String

识别结果。

score

String

识别结果置信度评分,目前作用不大。

代码示例

import com.huawei.sis.bean.SisConfig;
import com.huawei.sis.bean.SisConstant;
import com.huawei.sis.bean.request.AsrCustomShortRequest;
import com.huawei.sis.bean.response.AsrCustomShortResponse;
import com.huawei.sis.bean.AuthInfo;
import com.huawei.sis.client.AsrCustomizationClient;
import com.huawei.sis.exception.SisException;
import com.huawei.sis.util.IOUtils;
import java.util.List;


/**
 * 定制语音识别 demo、包含一句话识别
 *
 * Copyright 2020 Huawei Technologies Co.,Ltd.
 */
public class AsrCustomizationDemo {
  private static final int SLEEP_TIME = 500;
  private static final int MAX_POLLING_NUMS = 1000;

  private String ak = "";
  private String sk = "";
  private String region = "";    // 区域,如cn-north-1、cn-north-4
  private String projectId = ""; // 项目id。登录管理控制台,鼠标移动到右上角的用户名上,在下拉列表中选择我的凭证。在我的凭证页面,可以查看用户名、账号名,在项目列表中查看项目。多项目时,展开“所属区域”,从“项目ID”列获取子项目ID。
  // 一句话识别参数
  private String path = "";             // 音频文件路径,如D:/test.wav等,sdk会将音频文件转化为base64编码
  private String pathAudioFormat = "";  // 文件格式,如wav等
  private String pathProperty = "";     // 属性字符串,language_sampleRate_domain, 如chinese_8k_common


  /**
   * 设置一句话识别参数,所有参数均有默认值,不配置也可使用
   *
   * @param request 一句话识别请求
   */
  private void setShortParameter(AsrCustomShortRequest request) {

    // 设置是否添加标点,默认是no
    request.setAddPunc("yes");
    // 设置是否将语音中的数字转写为阿拉伯数字,yes或no,默认yes
    request.setDigitNorm("no");
  }

  /**
   * 定义config,所有参数可选,设置超时时间等。
   *
   * @return SisConfig
   */
  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;
  }

  /**
   * 打印一句话语音识别结果
   *
   * @param response 一句话识别响应
   */
  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();
    demo.shortDemo();
  }

}

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问