本文為您介紹在一句話識別、實時語音識別和錄音文件識別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);
...