文档首页 > > SDK参考> Java SDK> 使用短语音识别

使用短语音识别

分享
更新时间: 2019/12/04 GMT+08:00

前提条件

  • 确保已按照配置Java环境配置完毕。
  • 确保已存在待识别的音频文件。如果需要请在下载的SDK压缩包中获取示例音频。
  • 如果使用URL传入音频,需要将待识别的音频文件上传OBS,并获取URL,同时确保服务已授权访问OBS,可参考配置OBS服务

初始化Client

初始化AsrClient,其参数包括AuthInfo和SisConfig,详见表 AuthInfo数据结构表 SisConfig数据结构

表1 AuthInfo数据结构

参数名称

是否必选

参数类型

描述

ak

String

用户的ak,可参考AK/SK认证

sk

String

用户的sk,可参考AK/SK认证

region

String

区域,如:cn-north-4。具体请参考终端节点

表2 SisConfig数据结构

参数名称

是否必选

参数类型

描述

socketTimeout

Integer

Socket超时,默认5000,单位ms。

connectionTimeout

Integer

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

requestTimeout

Integer

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

请求参数

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

表3 AsrShortRequest数据结构

参数名称

是否必选

参数类型

描述

data

与obsUrl二选一

String

音频的Base64编码。

obsUrl

与data二选一

String

音频的OBS链接,必须和data二选一。若两者都设置,则默认选择data作为传入音频。

sampleRate

String

采样率,8k或16k,默认8k。

encodeType

String

音频格式,支持wav、mp3、wma,默认为空。

响应参数

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

表4 AsrShortResponse数据结构

参数名称

是否必选

参数类型

描述

result

String

识别结果。

statusCode

Integer

识别状态码。

  • 0:表示任务接受
  • 1:表示正在执行
  • 2:表示完成
  • -1:表示任务失败

statusMsg

String

状态描述。

代码示例

import com.huawei.sis.bean.AuthInfo;
import com.huawei.sis.bean.SisConfig;
import com.huawei.sis.bean.SisConstant;
import com.huawei.sis.bean.request.AsrShortRequest;
import com.huawei.sis.bean.response.AsrShortResponse;
import com.huawei.sis.client.AsrClient;
import com.huawei.sis.exception.SisException;
import com.huawei.sis.util.IOUtils;

/**
 * 短语音识别demo
 *
 * Copyright 2019 Huawei Technologies Co.,Ltd.
 */
public class AsrDemo {

  private String ak = "";
  private String sk = "";
  private String region = "";       // 区域,如cn-north-1

  private String path = "";         // 本地音频路径
  private String obsUrl = "";       // obs音频链接,音频传送支持本地文件或者obs链接

  private void printResponse(AsrShortResponse response) {
    System.out.println("get status code:\t" + response.getStatusCode());
    System.out.println("get status message:\t" + response.getStatusMsg());
    System.out.println("the result:\t" + response.getResult());
  }

  /**
   * 短语音识别参数设置,所有参数均有默认值,不配置也可使用。
   * @param request 短语音识别请求
   */
  private void setShortParameter(AsrShortRequest request) throws SisException{
    // 设置待识别的音频的base64字符串,要求音频时长不超过1min。data与obsUrl二选一设置。
    String base64Str = IOUtils.getEncodeDataByPath(path);
    request.setData(base64Str);
    // 也可以通过obsUrl传入待识别音频。若两者都设置,默认使用传入的data
    // request.setObsUrl(obsUrl);
    // 设置采样率,目前支持8k,16k。默认是8k。详见api文档
    request.setSampleRate("8k");
    // 设置文件的类型,支持wav、mp3、wma、amr、ac3、ogg、aac等。 可不填赋值空串。
    request.setEncodeType("");

  }


  /**
   * 定义config,所有参数可选,设置超时时间。
   * @return SisConfig
   */
  private SisConfig getConfig() {
    SisConfig config = new SisConfig();
    // 设置连接超时,默认5000ms
    config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT);
    // 设置请求超时,默认1000ms
    config.setRequestTimeout(SisConstant.DEFAULT_CONNECTION_REQUEST_TIMEOUT);
    // 设置socket超时,默认5000ms
    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 shortDemo() {
    try {
      // 1. 初始化AsrClient
      // 定义authInfo,根据ak,sk,region。注意这里只有三个初始化参数,不要填projectId。
      AuthInfo authInfo = new AuthInfo(ak, sk, region);
      // 设置config,主要与超时有关
      SisConfig config = getConfig();
      // 根据authInfo和config,构造AsrClient
      AsrClient asr = new AsrClient(authInfo, config);

      // 2. 配置请求
      AsrShortRequest request = new AsrShortRequest();
      setShortParameter(request);

      // 3. 发送请求,获取响应
      AsrShortResponse response = asr.getAsrShortResponse(request);
      // 打印结果
      printResponse(response);
    } catch (SisException e) {
      e.printStackTrace();
      System.out.println("error_code:" + e.getErrorCode() + "\nerror_msg" + e.getErrorMsg());
    }
  }

  public static void main(String[] args) {
    try {
      AsrDemo demo = new AsrDemo();
      demo.shortDemo();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
分享:

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区