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

使用短语音识别

分享
更新时间:2020/09/11 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-1。具体请参考终端节点

表2 SisConfig数据结构

参数名称

是否必选

参数类型

描述

connectionTimeout

Integer

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

readTimeout

Integer

读取超时,默认10000,单位ms。

请求参数

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

表3 AsrShortRequest数据结构

参数名称

是否必选

参数类型

描述

data

与obsUrl二选一

String

音频的Base64编码。

obsUrl

与data二选一

String

音频的OBS链接,必须和data二选一。若两者都设置,则默认选择data作为传入音频。注意OBS的region要与AuthInfo的region保持一致, 同时需要确保链接为用户个人的OBS的音频连接,不支持访问其他用户的公共读的OBS音频链接。

sampleRate

String

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

encodeType

String

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

响应参数

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

表4 AsrShortResponse数据结构

参数名

是否必选

参数类型

说明

result

Object

调用成功时表示调用结果,请参考表 result数据结构说明

调用失败时无此字段。

表5 result数据结构说明

参数名

是否必选

参数类型

说明

words

String

ASR识别的文字内容,编码格式为UTF-8。

代码示例

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;
import com.huawei.sis.util.JsonUtils;

/**
 * 短语音识别demo
 * <p>
 * Copyright 2020 Huawei Technologies Co.,Ltd.
 */
public class AsrDemo {

  private String ak = "";
  private String sk = "";
  private String region = "";       // 区域,目前仅支持cn-north-1

  private String path = "";         // 本地音频路径,需具体到文件,如d:/test.wav
  private String obsUrl = "";       // obs音频链接,音频传送支持本地文件或者obs链接。目前仅支持同一用户,同一region

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

  }

  /**
   * 定义config,所有参数可选,设置超时时间等。
   *
   * @return SisConfig
   */
  private SisConfig getConfig() {
    SisConfig config = new SisConfig();
    // 设置连接超时,默认10000ms
    config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT);
    // 设置读取超时,默认10000ms
    config.setReadTimeout(SisConstant.DEFAULT_READ_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
      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. 发送请求,获取响应.具体结果可通过response.getXX获取。
      AsrShortResponse response = asr.getAsrShortResponse(request);
      // 打印结果
      System.out.println(JsonUtils.obj2Str(response, true));

    } 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

提交反馈 取消

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

智能客服提问云社区提问