使用SDK设置业务专属热词

本文为您介绍在一句话识别、实时语音识别和录音文件识别SDK示例中如何设置业务专属热词。

概况

  • 通过管控台配置的业务专属热词表与项目Appkey绑定,无需自行设置。

  • 通过POP API训练获取的业务专属热词表,需要在SDK中设置其词表ID。

  • SDK设置热词的优先级更高,若与控制台一起使用,将覆盖控制台设置结果。

  • POP API仅支持创建业务专属热词表,需要您在客户端代码中调用SDK接口设置业务专属热词表ID,该热词表才能生效。

一句话识别

在一句话识别中,需要通过设置高级参数vocabulary_id指定业务专属热词表ID。

Java SDK

说明

首先需要了解Java SDK的基本使用方法,详情请参见Java SDK

SDK中没有设置vocabulary_id参数的方法,需要通过SpeechRecognizer类中的addCustomedParam方法进行设置:

public void addCustomedParam(String key, Object value);

在示例中创建SpeechRecognizer对象recognizer后(调用start方法之前),调用该方法设置业务专属热词:

SpeechRecognizer recognizer = new SpeechRecognizer(client, getRecognizerListener());
... // 省略其他设置
recognizer.addCustomedParam("vocabulary_id", "您的业务专属热词表ID");
...

iOS SDK

说明

首先需要了解iOS SDK的基本使用方法,详情请参见iOS SDK

通过RequestParam对象的setParams方法设置热词ID。

...
NSMutableDictionary *userParams = [[NSMutableDictionary alloc]init];
[userParams setValue:@"您的业务专属热词表ID" forKey:@"vocabulary_id"];
[_recognizeRequestParam setParams:userParams];
...

Android SDK

说明

首先需要了解Android SDK的基本使用方法,详情请参见Android SDK

通过SpeechRecognizer对象的setParams方法设置热词ID。

...
String userParamString = "{\"vocabulary_id\":\"您的泛热词表ID\"}";
speechRecognizer.setParams(userParamString);

RESTful API

说明

首先需要了解RESTful API的基本使用方法,详情请参见RESTful API

vocabulary_id参数作为HTTP的请求参数追加到其他请求参数之后,以Java示例举例如下,其他语言设置方法与Java类似。

String url = "http://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/asr";
String request = url;
request = request + "?appkey=" + appkey;
request = request + "&vocabulary_id=" + "您的业务专属热词表ID";
...

实时语音识别

在实时语音识别中,需要通过设置高级参数vocabulary_id指定业务专属热词表ID。

Java SDK

说明

首先需要了解Java SDK的基本使用方法,详情请参见Java SDK

SDK中没有设置vocabulary_id参数的方法,需要通过SpeechTranscriber类中的addCustomedParam方法进行设置:

public void addCustomedParam(String key, Object value);

在示例中创建SpeechTranscriber的对象transcriber后(调用start方法之前),调用该方法设置业务专属热词:

SpeechTranscriber transcriber = new SpeechTranscriber(client, getTranscriberListener());
... // 省略其他设置
transcriber.addCustomedParam("vocabulary_id", "您的业务专属热词表ID");
...

C++ SDK

说明

首先需要了解C++ SDK的基本使用方法,详情请参见C++ SDK

SDK中没有设置vocabulary_id参数的方法,需要通过SpeechTranscriberRequest类中的setPayloadParam方法进行设置:

/**
 * @brief 参数设置
 * @param value: JSON Map格式的字符串。
 * @return 成功则返回0,否则返回-1。
 */
int setPayloadParam(const char value);

在示例中创建SpeechTranscriberRequest的对象request后(调用start方法之前),调用该方法设置业务专属热词:

SpeechTranscriberRequest* request = NlsClient::getInstance()->createTranscriberRequest(callback);
... // 省略其他设置
request->setPayloadParam("{\"vocabulary_id\":\"您的业务专属热词表ID\"}");
...

iOS SDK

说明

首先需要了解iOS SDK的基本使用方法,详情请参见iOS SDK

通过RequestParam对象的setParams方法设置热词ID。

...
NSMutableDictionary *userParams = [[NSMutableDictionary alloc]init];
[userParams setValue:@"您的业务专属热词表ID" forKey:@"vocabulary_id"];
[_transRequestParam setParams:userParams];
...

Android SDK

说明

首先需要了解Android SDK的基本使用方法,详情请参见Android SDK

通过SpeechTranscriber对象的setParams方法设置热词ID。

...
String userParamString = "{\"vocabulary_id\":\"您的业务专属热词表ID\"}";
speechTranscriber.setParams(userParamString);

录音文件识别

在录音文件识别中,需要通过设置高级参数vocabulary_id指定业务专属热词表ID。

说明

首先需要了解录音文件识别接口基本使用方法,详情请参见接口说明

vocabulary_id参数和其他输入参数一样,以JSON字符串形式设置到HTTP请求Body中,JSON格式如下。

{
        "app_key": "您的项目appkey",      //获取Appkey请前往控制台:https://nls-portal.console.aliyun.com/applist
        "vocabulary_id": "您的业务专属热词表ID",
        "file_link": "https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav"
}

以Java SDK为例,其他语言SDK的参数设置方法与Java类似。

CommonRequest postRequest = new CommonRequest();
 ... // 省略其他设置
/**
 * 设置请求参数,以JSON字符串形式设置到请求Body中。
 */
JSONObject taskObject = new JSONObject();
// 设置appkey,获取Appkey请前往控制台:https://nls-portal.console.aliyun.com/applist
taskObject.put(KEY_APP_KEY, appKey);
// 设置音频文件访问链接
taskObject.put(KEY_FILE_LINK, "https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav");
taskObject.put("vocabulary_id", "您的业务专属热词表ID");
String task = taskObject.toJSONString();
System.out.println(task);
// 设置以上JSON字符串为Body参数
postRequest.putBodyParameter(KEY_TASK, task);
...