一、SDK 使用说明
功能介绍
C++ SDK提供将文字转为语音的功能。
SDK下载地址
文字转语音C++ SDK
demo 编译命令及注意事项
- g++ -o demo demo.cpp -pthread -I ./ -L. -ldl -lopus -lrealTimeUnity -lssl -lcrypto
- 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调用顺序
创建一个的NlsSpeechCallback实例callbck,并分别设置结果返回、操作错误和通道关闭的回调函数
创建一个NlsClient的对象nlc,该对象只需创建一次并且可以重复使用。
准备好config.txt配置文件,其内包含app-key、url等参数,详细见本文末尾的示例。
通过调用2步中的nlc对象的createTtsRequest方法获得一个NlsRequest 对象的指针(用完记得释放),该NlsRequest对象不能重复使用,但是可以重复创建。
调用4中返回的NlsRequest对象的Authorize方法进行设置用户id和scret。
调用4中 NlsRequest对象的start方法
如有结果,则会触发1中设置的相关回调函数,语音流返回的形式是二进制语音流。
调用4中 NlsRequest对象的stop方法
重要接口说明
语音sdk对外暴露的类,调用程序通过调用该类的start()、stop()等方法来打开、关闭。
初始化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
返回值: 无
设置二进制数据回调函数
void setOnChannelClosed(NlsCallbackMethod _event, void* para=NULL)
- 说明: 设置二进制数据回调函数,当请求过程中有二进制语音流返回时,会自动触发该回调函数
- 参数:_event 回调方法
- para 用户传入参数,默认为NULL
返回值: 无
初始化NlsClient
NlsClient()
- 说明: 创建NlsClient对象,用来创建语音请求的request对象
- 参数: 无
- 返回值: 无
创建NlsRequest对象
NlsRequest createTtsRequest(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失败
启动nlsRequest
int Stop()
- 说明: 关闭nlsrequest。
- 参数: 无
- 返回值: 0成功,-1失败
注意事项:
- sdk采用IOS 标准c++编写,运行环境最低要求:glibc:2.5 gcc 版本:4.1.2
- sdk内部采用pthread多线程机制,因此在linux环境下可以直接使用,如果需要在windows环境下使用,需要额外安装能够在windows环境下运行的pthread的支持库(ftp://sourceware.org/pub/pthreads-win32/)
- sdk提供的库文件为librealTimeUnity.a 该库文件仅支持64位运行环境,暂不支持32位运行环境
- sdk依赖于第三方库,主要是(libssl.a libcrypto.a libopus.so.0),其中前两个来自于openssl,版本为1.0.2j,最后一个是用于opus编解码,版本不限
config.txt 内容如下:<pre style='background: rgb(246, 246, 246); font: 12px/1.6 "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; padding: 10px; outline: 0px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); color: rgb(51, 51, 51); text-transform: none; text-indent: 0px; letter-spacing: normal; overflow: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px !important; margin-left: 0px; word-spacing: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;' prettyprinted?="" linenums="">
- #注意:
- #1. 以#开头的行为注释,处理时会直接跳过该行。
- #2. 配置中每行只能出现一条配置且以key:value的形式出现,切忌中间、行头、行尾不要出现空格,除非key, value字段中本身含有空格
- Url:wss://nls.dataapi.aliyun.com:443
- AppKey:nls-service
- #Language:EN/CHN
- #TtsEnable tts请求为true
- TtsEnable:true
- #TtsEncodeType 编码格式,支持pcm,wav,alaw。默认值是pcm
- TtsEncodeType:wav
- #TtsVolume 音量,范围是0到100
- TtsVolume:100
- #TtsNus 合成方式,0表示HTS,1表示NUS,2表示RUS
- TtsNus:0
- #TtsVoice 说话人名称,支持xiaoyun,xiaogang,xiaokubao
- TtsVoice:xiaoyun
- #TtsSpeechRate 语速,范围是-500到500。
- TtsSpeechRate:0
- #BackgroundMusicId 背景音乐ID,0表示不添加背景音乐
- BackgroundMusicId:1
- #BackgroundMusicOffset 在添加背景音乐时,指定背景音乐的偏移
- BackgroundMusicOffset:0
- #BstreamAttached 是否附加流
- BstreamAttached:false
- #TtsReference 指定发音
- #TtsReference:
- #TtsPitchRate 语调,范围是-500到500。
- TtsPitchRate:0
- #TtsSampleRate 采样率,支持16000或8000
- TtsSampleRate:16000
- #TtsReq 需要转为语音的文字
- TtsReq:人民公园不但风景美丽,而且还给我们带来了无穷的乐趣。