# 语音唤醒Linux SDK

# 功能简介

唤醒SDK基于科大讯飞MorfeiCore AIOT架构构建,唤醒引擎包括提取特征和解码两个部分,通过对输入特定帧长的音频提取特征,在进行解码网络处理判断唤醒状态并返回。本文主要描述唤醒算法相关接口及调用流程,用于指导开发人员快速进行唤醒算法集成。

# 名词解析

名词 说明
语音唤醒 将待唤醒的机器(低功耗状态)或应用,用带唤醒词的语音进行唤醒。

# 授权说明

唤醒SDK目前只支持云端授权方式。

云端授权方式:使用云端授权方式,设备需要具备联网能力。在启动唤醒服务前设备需要联网,否则SDK无法通过网络获取授权,SDK能力将无法使用。在购买SDK开发包后,科大讯飞为每台设备分配productid (每个产品唯一)和deviceid(每台设备唯一),开发者在启动麦克风阵列服务时通过相应接口将productid和deviceid传入SDK。

# 相关约定说明

文档中使用的符号约定:

符号 含义
[in] 表明该参数是调用时赋值的参数——输入参数
[out] 该参数在函数返回时被赋值——输出参数
[in/out] 该参数在函数调用时作为输入、函数返回时作为输出参数

# 唤醒SDK接口说明

# 接口调用流程

唤醒引擎流程包括以下几个步骤(图2-1):

(1) 启动MorfeiCore服务

(2) 初始化引擎,初始化引擎内存函数

(3) 创建引擎实例

(4) 加载唤醒资源

(5) 注册唤醒引擎回调函数

(6) 写入唤醒音频

(7) 获得唤醒结果/获得唤醒回调

(8) 唤醒引擎重置

(9) 引擎资源释放

(10) 引擎逆初始化

(11) 停止MorfeiCore服务

图2-1 唤醒引擎工作流程

# MorfeiCore接口函数列表

函数名称 功能简介
morfeicore_start 初始化MorFeiCore 服务
morfeicore_stop 逆初始化MorFeiCore 服务
morfeicore_getversion 获取MorFeiCore版本号

# IVW接口函数列表

函数名称 功能简介
IVWInit 初始化IVW引擎
IVWNew 创建IVW引擎实例
IVWUnInit 逆初始化IVW引擎
IVWGetVersion 获取IVW引擎版本号
IVWLoadResource 加载IVW资源
IVWDestroy 销毁IVW引擎实例
IVWSetListener 设置IVW回调接口
IVWGetParam 获取IVW实例参数
IVWSetParam 设置IVW实例参数
IVWAudioWrite 写入音频
IVWReset 重置一个IVW实例
IVWGetResult 获取IVW实例结果

# 返回值说明

对于开发接口,如果调用成功,返回值为int型的接口都会返回0,否则返回错误码,错误码详见aiot_errors.h。

# 函数调用

# IVWInit

函数原型

int IVWInit(struct AiotOS * param)

功能说明

初始化IVW引擎。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
param[in] 保留使用的结构体参数

# IVWUnInit

函数原型

int IVWUnInit()

功能说明

逆初始化IVW引擎。

返回值

如果函数调用成功返回0,失败返回错误码。

# IVWGetVersion

函数原型

char* IVWGetVersion()

功能说明

获取IVW引擎版本号。

返回值

如果函数调用成功返回引擎版本号,例如:2.0.1001。

# IVWLoadResource

函数原型

int IVWLoadResource(const char * resouce, int length)

功能说明

加载IVW资源。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
resurce[in] 唤醒引擎使用资源指针
length[in] 资源长度

# IVWNew

函数原型

int IVWNew(IVW_HANDLE* handle, const char * param, void *reserved)

功能说明

创建唤醒引擎。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in/out] 唤醒句柄
param[in] 唤醒引擎初始化参数
(ivw_type:low/high,ivw_num:yyy,appid:zzz)
reserved 保留接口

# IVWDestory

函数原型

int IVWDestory(IVW_HANDLE handle)

功能说明

销毁IVW引擎实例。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针

# IVWSetListener

函数原型

int IVWSetListener(IVW_HANDLE handle, const int cbtype, const void* listener, void* userdata)

功能说明

设置IVW回调接口。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针
cbtype[in] 唤醒回调接口类型,区分是那种回调函数
(0:唤醒信息回调接口,回调类型PIVWCallBack)
listener[in] 回调函数指针
userdata[in] 用户数据

回调类型

typedef int (*PIVWCallBack)(const char *param, void *userData);

回调参数说明

参数名 参数解释
param [out] 唤醒回调信息
userdata [out] 用户数据

# IVWGetParam

函数原型

int IVWGetParam(IVW_HANDLE handle, const char *name, char *value, int* length)

功能说明

获取IVW实例参数。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针
name[in] 参数名称
value[in/out] 获取的参数内容
length[in/out] 获取的参数长度

# IVWSetParam

函数原型

int IVWSetParam(IVW_HANDLE handle, int paramtype, void* paramvalue, int length);

功能说明

设置实例参数。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针
paramtype[in] 参数类型
paramvalue[in] 参数值
length[in] 参数长度

# IVWWriteAudio

函数原型

int IVWWriteAudio(IVW_HANDLE handle, const char* data, int length, int flag)

功能说明

写入唤醒音频。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针
data[in] 音频数据地址(16k、16bit、单通道、pcm音频)
length[in] 传入音频长度,字节为单位
flag[in] 当前数据状态标志

# IVWReset

函数原型

int IVWReset(IVW_HANDLE handle);

功能说明

重置一个唤醒实例。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针

# IVWGetResult

函数原型

int IVWGetResult(IVW_HANDLE handle, char* result, int* length);

功能说明

获取实例结果。

返回值

如果函数调用成功返回0,失败返回错误码。

参数说明

参数名 参数解释
handle[in] 实例对象句柄指针
result[in/out] 唤醒结果
length[in/out] 唤醒结果长度
在线
咨询
建议
反馈
体验
中心