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;

失败 – 非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

数据上传模块初始化失败