本文为您介绍在一句话识别、实时语音识别和录音文件识别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);
...