全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网

C++ SDK

更新时间:2017-08-16 17:57:53

一、SDK 使用说明

功能介绍

语音C++ SDK提供实时长语音识别服务,提供将实时长语音转成文字的功能。

SDK下载地址

实时语音识别C++ SDK

demo 编译命令及注意事项

  1. g++ -o demo demo.cpp -pthread -I ./ -L. -ldl -lopus -lrealTimeUnity -lssl -lcrypto
  2. g++ -o demo demo.cpp -pthread -I ./ -L. -lrealTimeUnity -lopus -lssl -lcrypto -ldl

a. 编译前请确保编译命令中所列的库的名称及路径都是正确的。

b. 由于链接顺序对编译会造成影响,如果其中一条命令编译报错,请尝试另外一条

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

SDK调用顺序

  1. 创建一个的NlsSpeechCallback实例callbck,并分别设置结果返回、操作错误和通道关闭的回调函数

  2. 创建一个NlsClient的对象nlc,该对象只需创建一次并且可以重复使用。

  3. 准备好config.txt配置文件,其内包含app-key、url等参数,详细见本文末尾的示例。

  4. 通过调用2步中的nlc对象的createRealTimeRequest方法获得一个NlsRequest 对象的指针(用完记得释放),该NlsRequest对象不能重复使用,但是可以重复创建。

  5. 调用4中返回的NlsRequest对象的Authorize方法进行设置用户id和scret。

  6. 调用4中 NlsRequest对象的start方法

  7. 调用4中的NlsRequest对象的sendAudio方法发送语音流,如有结果,则会触发1中设置的相关回调函数。

  8. 语音发送完后,调用 调用4中 NlsRequest对象的stop方法

重要接口说明


语音sdk对外暴露的类,调用程序通过调用该类的start()、stop()、sendAudio()等方法来打开、关闭或发送语音数据。

初始化NlsSpeechCallback

NlsSpeechCallback()

  • 说 明: 初始化NlsSpeechCallback 对象
  • 参 数: 无
  • 返回值: 无

设置结果回调函数

void setOnMessageReceiced(NlsCallbackMethod _event,void* para=NULL)

  • 说明: 设置结果回调函数,当有正确结果返回时,会自动触发该回调函数
  • 参数:
    • _event 回调方法
    • para 用户传入参数,默认为NULL
  • 返回值: 无

设置错误回调函数

void setOnOperationFailed(NlsCallbackMethod _event,void* para = NULL)

  • 说明: 设置错误回调函数,当请求过程中出现错误时,会自动触发该回调函数
  • 参数:
    • _event 回调方法
    • para 用户传入参数,默认为NULL
  • 返回值: 无

设置通道关闭回调函数

void setOnChannelClosed(NlsCallbackMethod _event,void* para = NULL)

  • 说明: 设置通道关闭回调函数,当请求过程中通道关闭时,会自动触发该回调函数
  • 参数:
    • _event 回调方法
    • para 用户传入参数,默认为NULL
  • 返回值: 无

初始化NlsClient

NlsClient()

  • 说明: 创建NlsClient对象,用来创建语音请求的request对象
  • 参数: 无
  • 返回值: 无

创建NlsRequest对象

NlsRequest createRealTimeRequest(NlsSpeechCallback onResultReceivedEvent, const char* config)

  • 说明: 获取用于语音请求的NlsRequest对象。
  • 参数:
    • NlsSpeechCallback* onResultReceivedEvent 一系统列回调函数接口
    • const char* config 配置文件
  • 返回值: 成功则返回NlsRequest对象,否则返回NULL

设置用户id和scret

int Authorize(const char id, const char scret)

  • 说明: 数加认证模块,所有的请求都必须通过authorize方法认证通过,才可以使用。 id和secret需要申请获取。
  • 参数:
    • id 数加平台申请的Access Key ID。
    • secret 对应密钥Access Key Secret。
  • 返回值: 0成功,-1失败

修改nlsRequest配置参数

int SetParam(const char str_key, const char str_value)

  • 说明: 修改通过config.txt设置后的参数,第二种参数设置的方法。
  • 参数:
    • str_key 与config.txt中的key对应。
    • str_value 与config.txt中的value对应。
  • 返回值: 0成功,-1失败

启动nlsRequest

int Start()

  • 说明: 启动nlsrequest。
  • 参数: 无
  • 返回值: 0成功,-1失败

发送语音

int SendAudio(char* data, size_t num_byte)

  • 说明: 发送语音数据。
  • 参数:
    • data 需要发送的语音数据。
    • num_byte 需要发送的语音的长度。
  • 返回值: 成功则返回发送的长度,失败返回-1

启动nlsRequest

int Stop()

  • 说明: 关闭nlsrequest。
  • 参数: 无
  • 返回值: 0成功,-1失败

注意事项:

  1. sdk采用IOS 标准c++编写,运行环境最低要求:glibc:2.5 gcc 版本:4.1.2
  2. sdk内部采用pthread多线程机制,因此在linux环境下可以直接使用,如果需要在windows环境下使用,需要额外安装能够在windows环境下运行的pthread的支持库(ftp://sourceware.org/pub/pthreads-win32/)
  3. sdk提供的库文件为librealTimeUnity.a 该库文件仅支持64位运行环境,暂不支持32位运行环境
  4. sdk依赖于第三方库,主要是(libssl.a libcrypto.a libopus.so.0),其中前两个来自于openssl,版本为1.0.2j,最后一个是用于opus编解码,版本不限

config.txt 内容如下:

  1. #注意:
  2. #1. 以#开头的行为注释,处理时会直接跳过该行。
  3. #2. 配置中每行只能出现一条配置且以key:value的形式出现,切忌中间、行头、行尾不要出现空格,除非key, value字段中本身含有空格
  4. #3. linux环境中,请注意此config文件换行符是否是linux的格式
  5. Url:wss://nls-trans.dataapi.aliyun.com:443/realtime
  6. AppKey:test-key
  7. #Language:EN/CHN
  8. #SamleRate 支持8000,16000
  9. SampleRate:8000
  10. #VocabId 表示所要使用的热词对应的id,详细可见官网热词说明文档
  11. #VocabId:
  12. #ResponseMode 支持streaming, normal
  13. ResponseMode:streaming
  14. #KeyWordListId 表示所要检测的关键词对应的id,详细可见官网关键词说明文档
  15. #KeyWordListId:
  16. #Format 支持pcm 、 opu
  17. Format:pcm
本文导读目录