SDK中使用POP API训练的泛热词
通过管控台配置的项目泛热词是与项目appkey绑定的,您无需自行设置;而通过POP API训练获取的泛热词表,需要在SDK中执行其词表ID才可以使用。下面将介绍在一句话识别、实时语音识别、录音文件识别中如何设置泛热词。
一句话识别
在一句话识别中,需要通过设置高级参数vocabulary_id
来指定泛热词表ID。
Java SDK 2.0
请首先阅读 一句话识别—>Java SDK 2.0一节,了解Java SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechRecognizer类中的addCustomedParam方法进行设置:
public void addCustomedParam(String key, Object value);
在Demo中创建SpeechRecognizer的实例对象recognizer后(调用start方法之前)调用该方法设置泛热词:
SpeechRecognizer recognizer = new SpeechRecognizer(client, getRecognizerListener());
······· // 省略其他设置
recognizer.addCustomedParam("vocabulary_id", "您的泛热词表ID");
·······
C++ SDK 2.0
请首先阅读 一句话识别—>C++ SDK 2.0一节,了解C++ SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechRecognizerRequest类中的setPayloadParam方法进行设置:
/**
* @brief 参数设置
* @param value JSON Map格式的字符串
* @return 成功则返回0,否则返回-1
*/
int setPayloadParam(const char value);
在Demo中创建SpeechRecognizerRequest的实例对象request后(调用start方法之前)调用该方法设置泛热词:
SpeechRecognizerRequest *request = NlsClient::getInstance()->createRecognizerRequest(callback);
······· // 省略其他设置
request->setPayloadParam("{\"vocabulary_id\":\"您的泛热词表ID\"}");
·······
iOS SDK 2.0
请先阅读 一句话识别—>iOS SDK2.0一节,了解iOS SDK的基本用法。通过RequestParam对象的setParams方法设置热词id。
......
NSMutableDictionary *userParams = [[NSMutableDictionary alloc]init];
[userParams setValue:@"您的泛热词词表ID" forKey:@"vocabulary_id"];
[_recognizeRequestParam setParams:userParams];
......
Android SDK 2.0
请先阅读 一句话识别—>Android SDK2.0一节,了解Android SDK的基本用法。通过SpeechRecognizer对象的setParams方法设置热词id。
......
String userParamString = "{\"vocabulary_id\":\"您的泛热词表ID\"}";
speechRecognizer.setParams(userParamString);
RESTful API 2.0
请首先阅读 一句话识别—>RESTful API 2.0一节,了解RESTful API的基本使用。vocabulary_id参数作为HTTP的请求参数继续追加到其他请求参数之后即可。以Java Demo为例:
String url = "http://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/asr";
String request = url;
request = request + "?appkey=" + appkey;
request = request + "&vocabulary_id=" + "您的泛热词表ID";
·····
其他语言Demo中设置vocabulary_id参数与Java Demo相同。
实时语音识别
在实时语音识别中,需要通过设置高级参数vocabulary_id
来指定泛热词表ID。
Java SDK
请首先阅读 实时语音识别—>Java SDK 2.0一节,了解Java SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechTranscriber类中的addCustomedParam方法进行设置:
public void addCustomedParam(String key, Object value);
在Demo中创建SpeechTranscriber的实例对象transcriber后(调用start方法之前)调用该方法设置泛热词:
SpeechTranscriber transcriber = new SpeechTranscriber(client, getTranscriberListener());
······· // 省略其他设置
transcriber.addCustomedParam("vocabulary_id", "您的泛热词表ID");
······
C++ SDK
请首先阅读 实时语音识别—>C++ SDK 2.0一节,了解C++ SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechTranscriberRequest类中的setPayloadParam方法进行设置:
/**
* @brief 参数设置
* @param value JSON Map格式的字符串
* @return 成功则返回0,否则返回-1
*/
int setPayloadParam(const char value);
在Demo中创建SpeechTranscriberRequest的实例对象request后(调用start方法之前)调用该方法设置泛热词:
SpeechTranscriberRequest* request = NlsClient::getInstance()->createTranscriberRequest(callback);
······· // 省略其他设置
request->setPayloadParam("{\"vocabulary_id\":\"您的泛热词表ID\"}");
······
iOS SDK 2.0
请先阅读 实时语音识别—>iOS SDK2.0一节,了解iOS SDK的基本用法。通过RequestParam对象的setParams方法设置热词id。
......
NSMutableDictionary *userParams = [[NSMutableDictionary alloc]init];
[userParams setValue:@"您的泛热词词表ID" forKey:@"vocabulary_id"];
[_transRequestParam setParams:userParams];
......
Android SDK 2.0
请先阅读 实时语音识别—>Android SDK2.0一节,了解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",
"vocabulary_id": "您的泛热词表ID",
"file_link": "https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav"
}
以Java SDK为例:
CommonRequest postRequest = new CommonRequest();
······· // 省略其他设置
/**
* 设置文件转写请求参数,以JSON字符串的格式设置到请求的Body中
*/
JSONObject taskObject = new JSONObject();
// 设置app_key
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);
// 设置以上JOSN字符串为Body参数
postRequest.putBodyParameter(KEY_TASK, task);
·······
其他语言SDK的vocabulary_id参数设置与Java SDK相同。
原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/33599.html