Linux SDK
1、概述
SDK作为思必驰离线语音技术,集成了一整套成熟的单点语音技术,旨在使第三方应用可以快捷便利地集成和使用思必驰的离线语音技术。在使用单项基础技术接口之前,先授权(离线功能概述)
2、离线语音合成
语音合成(SpeechSynthesizer),又称为文语转换(Text to Speech,tts),将文本信息转化为声音信息,生成16k采样率,有符号16bit编码的单通道流式音频数据。
2.1 duilite_cntts_new
struct duilite_cntts * duilite_cntts_new(char *cfg, duilite_callback callback, void *userdata);
接口能力
初始化cntts引擎。
输入参数
cfg – 初始化配置,JSON字符串,格式如下:
{ "frontBinPath": "res_file_path", "backBinPath": "res_file_path", "dictPath": "res_file_path", "userDict": "res_file_path", "optimization": 1 } |
其中,frontBinPath为前端资源文件,包含文本归一化,分词和韵律等配置,必选;backBinPath为后端资源文件,主要为发音人配置,必选;dictPath为词典文件,必选;userDict保留参数,可选;optimization为优化选项,用于降低CPU使用率,1位打开优化,0位关闭优化,默认关闭优化,可选。
callback – 通用回调函数,内部串行调用,与外部调用线程属于同一线程;返回合成的音频,格式为单通道,16k采样率,有符号16bit编码;合成最后一次回调,数据长度为0,表示合成结束;若需要中断合成,将回调返回值设置为非0即可。
userdata – 用户指针,透传,不需要可设为NULL;
返回值
成功 – 引擎指针;
失败 – NULL;
2.2 duilite_cntts_start
int duilite_cntts_start(struct duilite_cntts *cntts, char *param);
接口能力
启动cntts引擎。
输入参数
cntts – 引擎指针;
param – 启动参数,JSON字符串,可选,不需要可设为NULL,格式如下:
{ "speed": 1.2, "volume": 60, "lmargin": 5, "rmargin": 10, "useSSML": 1 } |
其中speed表示语速,范围为0.5-2.0,越小越快,默认为1.0,可选;volume表示音量,范围为0-100,默认为50,可选;lmargin表示音频头部静音时间,范围为5-20,默认为5,可选;rmargin表示音频尾部静音时间,范围为5-20,默认为10,可选;useSSML表示使用SSML进行合成,具体使用方法请参考SSML使用文档,默认关闭,可选。
返回值
成功 – 0;
失败 – 非0;
2.3 duilite_cntts_feed
int duilite_cntts_feed(struct duilite_cntts *cntts, char *data);
接口能力
该接口阻塞,输入合成文本,开始合成,实时通过串行调用通用回调函数返回合成的音频。
输入参数
cntts – 引擎指针;
data – 需要合成的文本,格式为以’\0’结尾的字符串,若开启ssml,则输入ssml标记语言。
返回值
成功 – 0;
失败 – 非0;
2.4 duilite_cntts_set
int duilite_cntts_set(struct duilite_cntts *cntts, char *param);
接口能力
设置一些参数,比如发音人资源,实现切换发音人功能;该接口在启动引擎后调用,不可在合成过程中调用。
输入参数
cntts – 引擎指针;
param – 设置参数,格式如下:
{ "backBinPath": "res_file_path" } |
其中backBinPath为发音人资源文件。
返回值
成功 – 0;
失败 – 非0;
2.5 duilite_cntts_delete
int duilite_cntts_delete(struct duilite_cntts *cntts);
接口能力
销毁cntts引擎。
输入参数
cntts – 引擎指针;
返回值
成功 – 0;
附录1
1. 常见错误码
错误码 |
数值 |
释义 |
SpeechNoError |
0 |
成功,无错误 |
SpeechAuthError |
-9999 |
授权错误 |
SpeechReadFileError |
-9998 |
读文件失败 |
SpeechWriteFileError |
-9997 |
写文件失败 |
SpeechRemoveFileError |
-9996 |
删除文件失败 |
SpeechStatFileError |
-9995 |
获取文件信息失败 |
SpeechNotDir |
-9994 |
目录不存在 |
SpeechOpenDirError |
-9993 |
打开目录失败 |
SpeechMakeDirError |
-9992 |
创建目录失败 |
SpeechDirPathInvaild |
-9991 |
目录路径非法 |
SpeechWsaInitError |
-9990 |
Wsa初始化失败 |
SpeechInputNull |
-9899 |
输入为空 |
SpeechNotJson |
-9898 |
非Json格式 |
SpeechNoField |
-9897 |
配置字段缺失 |
SpeechNoFile |
-9896 |
文件缺失 |
SpeechNoMem |
-9895 |
内存申请失败 |
SpeechNoInstance |
-9894 |
引擎指针为空 |
SpeechCoreError |
-9893 |
内核错误 |
SpeechCoreNotSupport |
-9892 |
内核不支持该功能 |
SpeechExceedLimit |
-9891 |
超过相应限制 |
SpeechSpeexChannelError |
-9799 |
Speex通道错误 |
SpeechSpeexRateError |
-9798 |
Speex比特率错误 |
SpeechSpeexOggInitError |
-9797 |
Ogg初始化错误 |
SpeechSpeexStateError |
-9796 |
Speex引擎错误 |
SpeechNWakeupIndexError |
-9699 |
多路唤醒通道索引错误 |
SpeechUploadInitError |
-9599 |
数据上传模块初始化失败 |