全部产品
云市场

使用SDK 2.0设置泛热词

更新时间:2019-10-15 11:11:46

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方法进行设置:

  1. public void addCustomedParam(String key, Object value);

在Demo中创建SpeechRecognizer的实例对象recognizer后(调用start方法之前)调用该方法设置泛热词:

  1. SpeechRecognizer recognizer = new SpeechRecognizer(client, getRecognizerListener());
  2. ······· // 省略其他设置
  3. recognizer.addCustomedParam("vocabulary_id", "您的泛热词表ID");
  4. ·······

C++ SDK 2.0

请首先阅读 一句话识别—>C++ SDK 2.0一节,了解C++ SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechRecognizerRequest类中的setPayloadParam方法进行设置:

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

在Demo中创建SpeechRecognizerRequest的实例对象request后(调用start方法之前)调用该方法设置泛热词:

  1. SpeechRecognizerRequest *request = NlsClient::getInstance()->createRecognizerRequest(callback);
  2. ······· // 省略其他设置
  3. request->setPayloadParam("{\"vocabulary_id\":\"您的泛热词表ID\"}");
  4. ·······

iOS SDK 2.0

请先阅读 一句话识别—>iOS SDK2.0一节,了解iOS SDK的基本用法。通过RequestParam对象的setParams方法设置热词id。

  1. ......
  2. NSMutableDictionary *userParams = [[NSMutableDictionary alloc]init];
  3. [userParams setValue:@"您的泛热词词表ID" forKey:@"vocabulary_id"];
  4. [_recognizeRequestParam setParams:userParams];
  5. ......

Android SDK 2.0

请先阅读 一句话识别—>Android SDK2.0一节,了解Android SDK的基本用法。通过SpeechRecognizer对象的setParams方法设置热词id。

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

RESTful API 2.0

请首先阅读 一句话识别—>RESTful API 2.0一节,了解RESTful API的基本使用。vocabulary_id参数作为HTTP的请求参数继续追加到其他请求参数之后即可。以Java Demo为例:

  1. String url = "http://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/asr";
  2. String request = url;
  3. request = request + "?appkey=" + appkey;
  4. request = request + "&vocabulary_id=" + "您的泛热词表ID";
  5. ·····

其他语言Demo中设置vocabulary_id参数与Java Demo相同。

实时语音识别

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

Java SDK

请首先阅读 实时语音识别—>Java SDK 2.0一节,了解Java SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechTranscriber类中的addCustomedParam方法进行设置:

  1. public void addCustomedParam(String key, Object value);

在Demo中创建SpeechTranscriber的实例对象transcriber后(调用start方法之前)调用该方法设置泛热词:

  1. SpeechTranscriber transcriber = new SpeechTranscriber(client, getTranscriberListener());
  2. ······· // 省略其他设置
  3. transcriber.addCustomedParam("vocabulary_id", "您的泛热词表ID");
  4. ······

C++ SDK

请首先阅读 实时语音识别—>C++ SDK 2.0一节,了解C++ SDK的基本使用。由于SDK中没有vocabulary_id参数对应的set方法,需要通过SpeechTranscriberRequest类中的setPayloadParam方法进行设置:

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

在Demo中创建SpeechTranscriberRequest的实例对象request后(调用start方法之前)调用该方法设置泛热词:

  1. SpeechTranscriberRequest* request = NlsClient::getInstance()->createTranscriberRequest(callback);
  2. ······· // 省略其他设置
  3. request->setPayloadParam("{\"vocabulary_id\":\"您的泛热词表ID\"}");
  4. ······

iOS SDK 2.0

请先阅读 实时语音识别—>iOS SDK2.0一节,了解iOS SDK的基本用法。通过RequestParam对象的setParams方法设置热词id。

  1. ......
  2. NSMutableDictionary *userParams = [[NSMutableDictionary alloc]init];
  3. [userParams setValue:@"您的泛热词词表ID" forKey:@"vocabulary_id"];
  4. [_transRequestParam setParams:userParams];
  5. ......

Android SDK 2.0

请先阅读 实时语音识别—>Android SDK2.0一节,了解Android SDK的基本用法。通过SpeechTranscriber对象的setParams方法设置热词id。

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

录音文件识别

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

请首先阅读 录音文件识别—>简介一节,了解录音文件识别的基本使用。vocabulary_id参数和其他输入参数一样,以JSON格式的字符串设置到HTTP请求的Body中即可,JSON格式例如:

  1. {
  2. "app_key": "您的项目appkey",
  3. "vocabulary_id": "您的泛热词表ID",
  4. "file_link": "https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav"
  5. }

以Java SDK为例:

  1. CommonRequest postRequest = new CommonRequest();
  2. ······· // 省略其他设置
  3. /**
  4. * 设置文件转写请求参数,以JSON字符串的格式设置到请求的Body中
  5. */
  6. JSONObject taskObject = new JSONObject();
  7. // 设置app_key
  8. taskObject.put(KEY_APP_KEY, appKey);
  9. // 设置音频文件访问链接
  10. taskObject.put(KEY_FILE_LINK, "https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav");
  11. taskObject.put("vocabulary_id", "您的泛热词表ID");
  12. String task = taskObject.toJSONString();
  13. System.out.println(task);
  14. // 设置以上JOSN字符串为Body参数
  15. postRequest.putBodyParameter(KEY_TASK, task);
  16. ·······

其他语言SDK的vocabulary_id参数设置与Java SDK相同。