## AIUIAgent參數和消息
### AIUI參數字段說明
|參數類型| 說明 |參數名稱| 說明 |
| --- | --- | --- | --- |
|global|全局參數設置|scene|用戶定制的場景參數,不同的場景可對應不同的云端處理流程。|
|||clean_dialog_history|清除語義對話歷史方式,取值:auto(默認),user(用戶自己控制)。設置為auto時,在首次喚醒時消除對話歷史,設置為user則需要用戶發送CMD_CLEAN_DIALOG_HISTORY命令清除歷史。|
|interact|人機交互參數|interact_timeout|交互超時(單位:ms),即喚醒之后,如果在這段時間內無有效交互(無有效語義結果返回),則重新進入待喚醒狀態,取值:[10000,180000),默認為1min。|
|||result_timeout|結果超時(單位:ms),即檢測到語音后端點后一段時間內無結果返回則拋出超時錯誤,默認值:5000。|
|vad|音頻端點檢測參數|engine_type|vad引擎類型,取值:meta(模型vad),fixfront(能量vad),默認值:meta。|
|||res_type|資源類型,取值:assets資源(apk工程的assets文件),res資源(apk工程的res文件),path資源(sdcard文件)。使用模型vad時必須設置。|
|||res_path|資源文件路徑,使用模型vad時必須設置。|
|iat|語音識別參數|sample_rate|音頻采樣率(單位:Hz),取值:8000,16000,默認值:16000。|
|speech|語音業務相關參數|data_source|數據源,取值:user(由用戶從外部寫入),sdk(SDK內部錄音機采集)。|
|||interact_mode|交互模式,取值:oneshot(喚醒后一次交互后即休眠),continuous(默認,喚醒后可以持續交互)。|
對于有默認值的參數,若參數中不存在對應的key-value設置,即表示取默認值。若某類型參數全部使用默認值,可以將該類型從配置文件中刪除。
~~~
{
/* login相關參數 */
"login":{
"appid":"XXXXXXXX"
},
/* 交互參數 */
"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"
}
}
~~~
### AIUIMessage類型說明
|msgType(消息類型)|取值|說明|返回|
| --- | --- | --- | --- |
|CMD_GET_STATE|1|獲取服務狀態。|有|
|CMD_WRITE|2|向AIUI服務寫入數據。需要在params中指定數據類型、調用的業務等,例如:”data_type=audio,sample_rate=16000”,data為待寫入的二進制數據(如音頻、圖像、文本等)。|無|
|CMD_STOP_WRITE|3|停止寫入數據。需要在params中指定要停止寫入的數據類型,如“data_type=audio,sample_rate=16000”即停止寫入音頻。|無|
|CMD_RESET|4|重置AIUI服務的狀態。服務會立即停止并重新啟動,進入到待喚醒狀態。|無|
|CMD_START|5|啟動AIUI服務。當AIUI服務停止后,使用此命令啟動服務。|無|
|CMD_STOP|6|停止AIUI服務。服務停止之后,將不響應外部輸入。|無|
|CMD_WAKEUP|7|喚醒消息。用于手動喚醒AIUI服務,arg1為喚醒后拾音的波束號,默認為0。關于波束的定義參見《麥克風設計參考V0.7》。|無|
|CMD_RESET_WAKEUP|8|重置喚醒狀態。AIUI服務重置為待喚醒狀態。若當前為喚醒狀態,發送該消息重置后會拋出EVENT_SLEEP事件。|無|
|CMD_SET_BEAM|9|設置麥克風陣列的拾音波束。用arg1攜帶拾音波束號。|無|
|CMD_SET_PARAMS|10|設置參數配置。用params攜帶參數設置JSON字符串,具體格式參照aiui.cfg文件。暫時只可以用來修改scene參數,實時生效。示例:{“global”:{“scene”:”nlp31”} } 該示例將scene修改為nlp31。修改其他參數方法也是如此,即發送一條params字段為JSON字符串(指明待修改的參數類型、名稱和取值,格式參照aiui.cfg)的CMD_SET_PARAMS消息。|無|
|CMD_UPLOAD_LEXICON|11|上傳用戶詞表。將用戶詞表按格式組成JSON字符串,放在params字段傳入SDK,具體格式:{“name”:”userword”, // 詞表名稱“content”:”XXXX” // 詞表內容},其中XXXX也為一個JSON字符串,示例:{"userword":[{"name":"我的常用詞","words":["佳晨實業","蜀南庭苑","高蘭路","復聯二"]},{"name":"我的好友","words":["李馨琪","鹿曉雷","張集棟","周家莉","葉震珂","熊澤萌"]}]}|有|
|CMD_SEND_LOG|12|發送應用日志到云端,可以幫助分析應用問題。需要將JSON格式的字符串放在params字段中攜帶。|無|
|CMD_SYNC|13|同步操作。arg1字段為待同步的數據類型,取值:SYNC_DATA_STATUS(狀態同步,params字段為狀態JSON字符串),SYNC_DATA_INDIVIDUAL(個性化數據同步,如聯系人),SYNC_DATA_ACCOUNT(第三方賬號關系同步),SYNC_DATA_ATHENA_INDIVIDUAL(雅典娜個性化數據同步)。|有|
|CMD_START_SAVE|14|開始保存數據。params字段為待保存的數據屬性,如“data_type=raw_audio”則保存陣列原始音頻。|無|
|CMD_BUILD_GRAMMAR|16|構建本地語法。用params字段攜帶bnf語法內容,bnf語法規則請參見《BNF語法開發指南》。|有|
|CMD_UPDATE_LOCAL_LEXICON|17|更新本地詞表。當構建好本地語法之后,可以動態更新某個槽(聲明為slot,實質上為詞表)的內容,以動態變更支持的說法。將需要更新的槽名稱和內容組成JSON字符串,用params字段攜帶。示例:{“name”:”<contact>”, “content”:”張三\\n李四\\n” }注:只有在剛剛成功構建語法(即發送了CMD_BUILD_GRAMMAR消息并返回成功事件)之后才能更新本地詞表。|有|
注:“有返回”的含義是在向AIUI發送一條CMD消息后,AIUI會拋出一個對應的EVENT事件返回CMD消息的處理結果。
### AIUIEvent 類型說明
|eventType(事件類型)|取值|說明|
| --- | --- | --- |
|EVENT_RESULT|1|結果事件。data字段攜帶結果數據,info字段為描述數據的JSON字符串。|
|EVENT_ERROR|2|出錯事件。arg1字段為錯誤碼,info字段為錯誤描述信息。|
|EVENT_STATE|3|服務狀態事件。當向AIUI發送CMD_GET_STATE命令時拋出該事件,arg1字段取值為STATE_IDLE(空閑狀態)、STATE_READY(就緒狀態,待喚醒)、STATE_WORKING(工作狀態,已喚醒)狀態之一。|
|EVENT_WAKEUP|4|喚醒事件。info字段為喚醒結果JSON字符串。|
|EVENT_SLEEP|5|休眠事件。當出現交互超時,服務會進入休眠狀態(待喚醒),或者發送了CMD_RESET_WAKEUP時,拋出該事件。arg1字段取值:TYPE_AUTO(自動休眠,即交互超時)、TYPE_COMPEL(外部強制休眠,即發送CMD_RESET_WAKEUP)。|
|EVENT_VAD|6|VAD事件。當檢測到輸入音頻的前端點后,會拋出該事件,用arg1標識前后端點或者音量信息:0(前端點)、1(音量)、2(后端點)。當arg1取值為1時,arg2為音量大小。|
|EVENT_CMD_RETURN|8|某條CMD命令對應的返回事件。對于除CMD_GET_STATE外的有返回的命令,都會返回該事件,用arg1標識對應的CMD命令,arg2為返回值,0表示成功,info字段為描述信息。|