快速入门一节里,导入SDK时导入的cfg文件就是本节介绍的配置文件。AIUI初始化时会读取这些参数配置,根据配置初始化各个内部模块。

# 配置文件

# 配置文件示例

AIUI的配置内容格式是json,配置了AIUI运行时各方面的参数:

/* AIUI Mobile版本参数配置 */
{
	/* 交互参数 */
	"interact":{
		"interact_timeout":"60000",
		"result_timeout":"5000"
	},
	
	/* 全局设置 */
	"global":{
		"scene":"main",
		"clean_dialog_history":"auto"
	},
	
	/* 业务相关参数 */
	// 本地vad参数
	"vad":{
		"vad_enable":"1", 
		"engine_type":"meta",
		"res_type":"assets",
		"res_path":"vad/meta_vad_16k.jet"
	},
	
	// 识别(音频输入)参数
	"iat":{
		"sample_rate":"16000"
	},

	/* 业务流程相关参数 */
	// 语音业务流程控制
	"speech":{
		"data_source":"sdk"
	}/* 用户参数,透传到后处理(非必须)*/
	"userparams":{
		"xxxx": "xxx" //自定义字段
	}"tts": {
		"play_mode": "sdk",     // 播放模式,取值:sdk(内部播放,默认),user(外部自行播放)
		"buffer_time": "0",     // 音频缓冲时长,当缓冲音频大于该值时才开始播放,默认值:0ms
		"stream_type": "3",     // 播放音频流类型,取值参考AudioManager类,默认值:3
		"audio_focus": "0"      // 播放音频时是否抢占焦点,取值:1, 0(默认值)
	}
}

# 配置字段说明

用户定制的场景参数,不同的场景可对应不同的云端处理流程。
参数类型 参数名称
login 语音云登录参数 appid
在讯飞开放平台上注册的8位应用唯一标识。
global 全局参数设置 scene
clean_dialog_history
清除交互历史设置
  • auto 自动清除历史(默认模式)
  • user 用户手动清除历史
interact 交互参数 interact_timeout
交互超时(单位:ms)

即唤醒之后,如果在这段时间内无有效交互则重新进入待唤醒状态,取值:[10000,180000)。
默认为1min。
result_timeout
结果超时(单位:ms)

即检测到语音后端点后一段时间内无结果返回则抛出10120错误码。
默认值:5000。
speech 业务相关参数 data_source
录音数据来源配置
  • sdk sdk内部录音
  • user 外部录音
interact_mode
交互模式设置

continuous
持续交互,对于语音即“一次唤醒,多次交互”
oneshot(默认模式)
一次交互,对于语音即“一次唤醒,一次交互”
oneshot举例:

问:叮咚叮咚,给我唱首歌(说完后AIUI即进入休眠状态)
答:请欣赏xxxx。
后续AIUI因已休眠不能继续交互,需重新唤醒才能继续交互。
vad 音频端点检测参数 vad_enable
vad开启

取值:
1(vad开启)
0(vad关闭)
默认值:1。
engine_type
vad引擎类型

取值:meta(模型vad)
默认值:meta。
res_type
资源类型
使用模型vad时必须设置,取值:
  • assets资源(apk工程的assets文件)
  • res资源(apk工程的res文件)
  • path资源(sdcard文件)
res_path
资源文件路径

使用模型vad时必须设置。
vad_bos
VAD前端超时时间

单位:毫秒 示例 "5000"
vad_eos
VAD后端超时时间

单位:毫秒 示例 "1000"
cloud_vad_eos
云端VAD后端超时时间

单位:毫秒 示例 "30000"
cloud_vad_gap
云端VAD分句间隔

上限值:1800
单位:毫秒 示例 "400"
audioparams 音频透传参数设置 msc.lng
经度

示例:117.16334474130745
msc.lat
纬度

示例:31.821021912318592
log 日志相关参数 debug_log
Debug日志开关

取值:1(打开),0(关闭),默认值:0。
日志打开时会向logcat打印调试日志。
save_datalog
是否保存数据日志

取值:1(打开),0(关闭),默认值:0。
打开之后会将所有上传到云端的音频和云端返回的结果保存到本地,保存的路径位于/sdcard/AIUI/data/,每一次唤醒后的交互音频都保存在此目录下wakeXX开始的文件夹下。
datalog_path
数据日志的保存路径

当不设置或者为空值时,使用默认值:“/sdcard/AIUI/data/”。
datalog_size
数据日志的大小限制(单位:MB)

取值:[-1,+∞)
默认值:-1(表示无大小限制)。
注意:设置成-1可能会造成SD卡被日志写满,从而导致AIUI性能下降,影响体验效果。

# 动态配置

配置文件中的情景模式和后台应用定义的情景模式对应,在后台可以为不同情景模式配置不同语义技能、问答库,通过本地的配置文件或者动态设置场景可使用不同情景模式下对应的业务。使用方法如下所示:

Android 示例代码

String setParams = "{\"global\":{\"scene\":\"main\"}}"
AIUIMessage setMsg = new AIUIMessage(CMD_SET_PARAMS, 0 , 0, setParams, "");
mAgent.sendMessage(setMsg);

iOS/Linux/Windows 示例代码

const char* setParams = "{\"global\":{\"scene\":\"main\"}}";
IAIUIMessage* writeMsg=IAIUIMessage::create(AIUIConstant::CMD_SET_PARAMS, 0, 0, setParams, NULL);
m_angent->sendMessage(writeMsg);
writeMsg->destroy();