全部产品
阿里云办公

c++ sdk

更新时间:2018-01-03 13:55:16

c++ 关键词表管理SDK 使用说明

功能介绍

C++ 关键词词表管理SDK以Restful方式提供对关键词词表进行管理的功能,用户可以通过此sdk可以方便的对关键词词表进行增、删、改、查。

SDK下载地址

关键词词表管理C++ SDK

demo 编译命令及注意事项

  1. g++ -o demo demo.cpp -I ../include -L ../lib -lrestfulUnity -lcurl -lssl -lcrypto

  2. 编译命令中-lssl -lcrypto 为sdk中作权限验证需要依赖的库,sdk发布包中已经包含该库(64位)

  3. 此sdk的运行环境为linux 64位,编译前请确保已安装curl(运行curl -V),并安装了相关依赖(主要是openssl,版本是1.0.2j)。

  4. 由于此sdk没有采用c11,因此如果您的编译器版本较高(超过5.0),编译时请加上-D_GLIBCXX_USE_CXX11_ABI=0

  5. 由于使用到了libcurl第三方库,多线程调用请参考libcurl的相关说明

  6. sdk采用ISO 标准c++编写,运行环境最低要求:glibc:2.5 gcc 版本:4.1.2

  7. sdk提供的库文件为librestfulUnity.so 该库文件仅支持64位运行环境,暂不支持32位运行环境

SDK调用顺序

  1. 创建一个RestfulClient对象,该对象可用来创建具体的request对象

  2. 通过1中的对象调用createRestfulRequest获取request对象,该对象提供对词表增、删、改、查的功能

  3. 对于创建功能来说,需要准备一个参数的结构体对象,具体可下载sdk并参考demo程序

  4. 调用相应的方法并返回结果

重要接口说明


词表管理sdk对外暴露的类,调用程序通过调用该类的createRequest()、getRequest()、updateRequest()、deleteRequest()方法来对词表进行增、查、改、删操作。

初始化RestfulClient

RestfulClient(bool curlInitglobal = true, bool ssl = true)

  • 说 明
    • 初始化RestfulClient对象
  • 参 数
    • bool curlInitglobal 是否全局初始curl(适用于多线程),默认为true, 详情参见libcurl官网说明
    • bool ssl 是否做openssl多线程初始化,默认为true, 详情参见openssl官网说明
  • 返回值

创建用于请求的对象

IRestfulRequest* createRestfulRequest(std::string url, std::string id, std::string secret,RequestType type)

  • 说 明
    • 根据type创建IRestfulRequest* 对象,包括kws,hw,和recoderTranscription
  • 参 数
    • string url 词表的配置url地址,一般比较固定
    • string id 用户id
    • string secret 用户密码
    • RequestType type kws为关键词,hw为热词,和recoderTranscription为录音文件转写,这里为hw
  • 返回值
    • IRestfulRequest*对象

创建词表

std::string createRequest(std::string body)

  • 说 明
    • 该函数用来创建录音文件识别请求
  • 参 数
    • string body 创建请求需要的参数,该串中包含有哪些参数和验证
  • 返回值
    • string 返回创建请求的结果,成功则包含请求id

查询词表内容

std::string getRequest(std::string id)

  • 说明
    • 该函数用来id对应请求的结果
  • 参数
    • string id 请求的id
  • 返回值
    • string 返回查询结果

更新词表

std::string updateRequest(std::string id, std::string body)

  • 说明
    • 该函数用来对具体某个id对应的词表的内容进行更新
  • 参数
    • string id 词表的id,创建成功时会返回
    • string body 更新后的内容
  • 返回值
    • string 返回更新操作的结果

删除词表

std::string deleteRequest(std::string id)

  • 说明
    • 该函数用来删除具体id对应的词表
  • 参数
    • string id 词表id
  • 返回值
    • string 返回删除操作结果

关键词词表维护示例代码

  1. void* func(void *param)
  2. {
  3. // 关键词配置
  4. IRestfulRequest* hs = rc.createRestfulRequest("https://nlsapi.aliyun.com/asr/custom/keyword_lists", "your-id", "your-key", RestfulClient::kws);
  5. KeyWordStruct kws;
  6. kws.kws.insert(make_pair("桃子", 0.8));
  7. kws.kws.insert(make_pair("苹果", 0.6));
  8. string bodyjsonstr = kws.toString();
  9. /************************************************************************/
  10. /*
  11. {
  12. "keywords":
  13. [
  14. {"keyword":"桃子", "threshold":0.8},
  15. {"keyword":"苹果", "threshold":0.6}
  16. ]
  17. } */
  18. /************************************************************************/
  19. cout << "kws: " << bodyjsonstr << endl;
  20. if (hs)
  21. {
  22. cout << "create kws result: " << hs->createRequest(bodyjsonstr) << endl;// 返回结果为json格式,{"request_id":"c395661f66f748eebd82393eca392b5a","keyword_list_id":"aaa32026417a4eaa972050e6d2063456"}
  23. cout << "get kws result: " << hs->getRequest("33151b13fd8644d1b75223d50617727d") << endl;
  24. cout << "update kws result: " << hs->updateRequest("33151b13fd8644d1b75223d50617727d", bodyjsonstr) << endl;
  25. cout << "del kws result: " << hs->deleteRequest("33151b13fd8644d1b75223d50617727d") << endl;
  26. }
  27. delete hs;
  28. hs = NULL;
  29. return 0;
  30. }

关键词识别说明

在词表管理中,调用createRequest 返回的json串提取keyword_list_id,并将该字段填入语音识别服务中realtme-config.txt中,例如,

  1. KeyWordListId:aaa32026417a4eaa972050e6d2063456

或者通过语音识别对应的request提供的SetParam方法即可,

  1. request->SetParam("KeyWordListId","aaa32026417a4eaa972050e6d2063456")

具体参考语音识别(ASR)实时语音识别文档说明。

关键词识别结果说明

  1. 如果没有设置KeyWordListId,则返回结果与实时asr返回结果一样;
  2. 如果设置了KeyWordListId,没有命中,返回json形式为:
    1. {
    2. "version": "1.0",
    3. "request_id": "ee621386178e4ae4a2d8171e6c31a4bf",
    4. "status_code": 200,
    5. "finish": 0,
    6. "result": {
    7. "sentence_id": 1,
    8. "begin_time": 300,
    9. "end_time": 3600,
    10. "status_code": 0
    11. }
    12. }
  3. 如果设置了KeyWordListId,且有命中,返回json形式为:
    1. {
    2. "version": "1.0",
    3. "request_id": "ee621386178e4ae4a2d8171e6c31a4bf",
    4. "status_code": 200,
    5. "finish": 0,
    6. "result": {
    7. "sentence_id": 1,
    8. "begin_time": 300,
    9. "end_time": 3600,
    10. "status_code": 0,
    11. "keywords":[
    12. {"keyword":"张三", "confidence":0.5"start_time": 1, "end_time": 10},
    13. {"keyword":"李四", "confidence":0.6"start_time": 1, "end_time": 10}
    14. ]
    15. }
    16. }
    keywords参数说明
字段 类型 说明
keyword String 查询出来的关键词
confidence float 匹配度,范围0-1
start_time Long 开始时间,单位ms
end_time Long 结束时间,单位ms