Windows SDK 开发手册

1、概述

SDK作为思必驰离线语音技术,集成了一整套成熟的单点语音技术,旨在使第三方应用可以快捷便利地集成和使用思必驰的离线语音技术。在使用单项基础技术接口之前,先授权(离线功能概述)

2、语音唤醒

语音唤醒(wakeup),又称关键词检测keyword spooting),一般输入经过信号处理后的单通道音频数据。

2.1 duilite_wakeup_new

struct duilite_wakeup *duilite_wakeup_new(char *cfg, duilite_callback callback, void *userdata);

 接口能力

初始化wakeup引擎。

输入参数

cfg – 初始化配置,JSON字符串,格式如下:

{

"resBinPath": "res_file_path"

}

其中,resBinPath为资源文件,必选。

callback – 通用回调函数,唤醒时返回唤醒结果json字符串,格式见附录1-1。 

userdata – 用户指针,透传,不需要可设为NULL

返回值

成功  引擎指针;

失败 – NULL;

2.2 duilite_wakeup_register

     int duilite_wakeup_register(struct duilite_wakeup *wakeup, int callback_type, duilite_callback callback, void *userdata);

接口能力

设置通用回调函数。需要注意的是,此处设置一些辅助性的函数,非初始化接口设置的唤醒通用回调函数。

输入参数

wakeup – 引擎指针;

callback_type – 通用回调函数类型,如下表:

通用回调函数类型

备注

DUILITE_CALLBACK_WAKEUP_VPRINTCUT

声纹回调,输出的数据送往声纹引擎,输出的数据有音频数据和一些json字符串,开发者负责将输出数据透传至声纹引擎。

callback – 通用回调函数,内部串行调用,与外部调用线程属于同一线程;

userdata – 用户指针,透传,不需要可设为NULL

返回值

成功  0;

失败 – 非0;

2.3 duilite_wakeup_start

int duilite_wakeup_start(struct duilite_wakeup *wakeup, char *param);

接口能力

启动wakeup引擎。

输入参数

wakeup – 引擎指针;

param  启动参数,JSON字符串,格式如下:

{

"env": "words=ni hao xiao le;thresh=0.2;",

"throwWaitWakeup": 0

}

其中env配置示例见附录1-1,必选;throwWaitWakeup表示是否开启待唤醒状态,1表示是,0或者未设置该字段表示否,可选,默认为0。

返回值

成功  0;

失败 – 非0;

2.4 duilite_wakeup_feed

int duilite_wakeup_feed(struct duilite_wakeup *wakeup, char *data, int len);

接口能力

输入音频数据,并计算;若唤醒,通过调用通用回调函数返回结果。

输入参数

wakeup – 引擎指针;

data – 音频数据;

len – 音频数据长度;

返回值

成功  0;

失败 – 非0;

2.5 duilite_wakeup_stop

int duilite_wakeup_stop(struct duilite_wakeup *wakeup);

接口能力

停止wakeup引擎,并将缓冲区的音频数据处理完毕;一般在收到语音唤醒信号后不需要引擎继续工作时调用;注意,不能在通用回调函数中调用该接口。

输入参数

wakeup – 引擎指针;

返回值

成功  0;

失败 – 非0;

2.6 duilite_wakeup_cancel

int duilite_wakeup_cancel(struct duilite_wakeup *wakeup);

接口能力

取消当前唤醒工作,并重置引擎。

输入参数

wakeup – 引擎指针;

返回值

成功  0;

失败 – 非0;

2.7 duilite_wakeup_set

int duilite_wakeup_set(struct duilite_wakeup *wakeup, char *param);

接口能力

配置wakeup引擎。

输入参数

wakeup – 引擎指针;

param  配置参数,JSON字符串,可选,不需要可设为NULL,格式如下:

{

"env": "words=ni hao xiao le;thresh=0.4;"

}

其中env配置示例见附录1-1,可选,用于动态更新唤醒词的阈值(目前只支持更新thresh)。

返回值

成功  0;

失败 – 非0;

2.8 duilite_wakeup_delete

int duilite_wakeup_delete(struct duilite_wakeup *wakeup);

接口能力

销毁wakeup引擎。

输入参数

wakeup – 引擎指针;

返回值

成功  0;

失败 – 非0;

附录1

1. 语音唤醒引擎启动参数及结果示例

  •  启动参数

启动参数示例:

{"env": "words=ni hao xiao le;thresh=0.2;dcheck=1;vad=1;"}

当需要支持短词唤醒时,各参数配置实例如下:

"env":"words=xiao kang xiao kang,xiao kang;thresh=0.85,0.8;subword_wakeup=0,1;"

 

字段

释义

示例

words

唤醒词,拼音形式,词之间逗号分隔,字之间空格分隔,必选。

words=ni hao xiao le,ni hao xiao chi;

thresh

唤醒词的阈值,具体取值请咨询技术对接人员,必选。

thresh=0.2,0.4;

dcheck

唤醒后唤醒词解码功能,1表示打开,0表示关闭,默认关闭,可选

dcheck=1,0;

major

设置主唤醒词,1为是,0位否,默认为否,可选

major=1,0;

vad

唤醒中vad的开关,1表示打开,0表示关闭,默认为1,可选。

vad=1;

subword_wakeup

唤醒中的短唤醒词开关,1表示打开,0表示关闭,可选。通常只给主唤醒词配半字唤醒。

subword_wakeup=1

当有多个唤醒词时,各参数需要一一对应,如:

{"env": "words=ni hao xiao le,ni hao xiao chi;thresh=0.2,0.4;" }

  • 结果说明

status1

{

"version": "res_file_path",

"lib_version": "1.5.6",

"vad_version": "version",

"status": 1,

"wakeupWord": "ni hao xiao le",

"major": 0,

"boundary": 0,

"confidence": 0.390171,

"frame": 58,

"wakeup_frame": 51,

"abs_feed_frame": 57,

"words": {

"ni hao xiao le": 0.2000,

"ni hao xiao chi": 1.5000

}

}

status为2:

{

"version": "res_file_path",

"lib_version": "1.6.8",

"vad_version": "version",

"status": 2,

"wakeupWord": "ni hao xiao chi",

"major": 1,

"confidence": 0.506597,

"pre_start_offset": 45760,

"start_offset": 45760,

"end_offset": 11200,

"speech_len": 34560,

"abs_feed_bytes": 309440,

"delay": 157.766113,

"speed": "normal",

"words": {

"ni hao xiao chi": 0.4000

}

}

status为7

{

"version": " res_file_path ",

"lib_version": "1.6.16",

"vad_version": "version",

"status": 7,

"wakeupWord": "xiao kang",

"confidence": 0.848336,

"abs_feed_frame": 21846,

"words": {

"xiao kang xiao kang": 0.8000,

"xiao kang": 0.8000

}

}

 

各字段释义如下表:

成员

释义

version

资源文件版本

lib_version

算法版本

vad_version

若在唤醒中使用了vad,则表示资源版本,可选

status

唤醒状态,详见图表3.5.3

wakeupWord

唤醒词

major

是否为主唤醒词

confidence

唤醒置信度

status:1

boundary

边界信息开关

frame

唤醒帧号

wakeup_frame

通过vad后的唤醒帧号

abs_feed_frame

唤醒已处理的绝对帧序号

status:2

pre_start_offset

一般同start_offset

start_offset

唤醒词起始点相对于已输入音频的偏移量

end_offset

唤醒点相对于已输入音频的偏移量

speech_len

实际唤醒音频长度

abs_feed_bytes

唤醒已处理的字节数

abs_recv_bytes

唤醒已接收字节数

delay

speed

语速,取值有normal、fast、slow

words

通过env配置的唤醒词列表

  •  唤醒状态码

语音唤醒引擎,唤醒回调中的唤醒状态如下:

状态值

释义

-1

唤醒出现异常

0

等待唤醒

1

已唤醒,一般收到该状态,表明唤醒成功,若是多麦信号处理配合声纹使用则无该状态。

2

唤醒边界,输出边界信息

3

唤醒重启

4

预唤醒,达到低阈值,准备进入唤醒状态,常用来保存音频

5

唤醒音频信息,配合声纹使用,该信息后立马返回唤醒音频

6

唤醒音频

7

半字唤醒,只抛信息,不重启

 

2. 常见错误码

错误码

数值

释义

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

数据上传模块初始化失败