diff --git a/app/netease_control_center_common_module/src/netease_control_center/globals/Init.go b/app/netease_control_center_common_module/src/netease_control_center/globals/Init.go new file mode 100644 index 0000000..ed5f108 --- /dev/null +++ b/app/netease_control_center_common_module/src/netease_control_center/globals/Init.go @@ -0,0 +1,5 @@ +package globals + +func InitGlobals() { + InitLabWakeupDatastruct() +} diff --git a/app/netease_control_center_common_module/src/netease_control_center/globals/labWakeupDatastruct.go b/app/netease_control_center_common_module/src/netease_control_center/globals/labWakeupDatastruct.go index 112a7f4..a262ba5 100755 --- a/app/netease_control_center_common_module/src/netease_control_center/globals/labWakeupDatastruct.go +++ b/app/netease_control_center_common_module/src/netease_control_center/globals/labWakeupDatastruct.go @@ -1,5 +1,7 @@ package globals +import "fmt" + const ( MSC_CMD_ONE_SHOT string = "快捷命令" MSC_CMD_ONE_SHOT_WAKEUP string = "快捷命令WakeupbyMain" //被唤醒后的快捷指令 @@ -25,6 +27,7 @@ const ( ) type wakeupVal struct { + Enable bool //used? WkupWord string //唤醒词 DayThresh string //白天阈值 NightThresh string //夜间阈值 @@ -47,6 +50,13 @@ var ( } ) +func InitLabWakeupDatastruct() { + if cfg := GetCurPlatformConfig(); cfg.VoiceConfig.EnableOemWakeupVal { + WkupArray = cfg.VoiceConfig.WakeupVals + fmt.Printf("Rplace the text :%+x\n", cfg.VoiceConfig.WakeupVals) + } +} + //查看是否打开了实验室某个唤醒功能 func IsWakeupCmdEnable(cmd WakeupWordsType) bool { for _, value := range OneShot.Words { diff --git a/app/netease_control_center_common_module/src/netease_control_center/globals/platformConfig.go b/app/netease_control_center_common_module/src/netease_control_center/globals/platformConfig.go index 2236a02..e2703cc 100644 --- a/app/netease_control_center_common_module/src/netease_control_center/globals/platformConfig.go +++ b/app/netease_control_center_common_module/src/netease_control_center/globals/platformConfig.go @@ -2,23 +2,37 @@ package globals import "netease_control_center/interfaces/log" -type PlatformConfig struct { - IconSwitch bool - TopLight bool - MicAdc bool - LedMcuInit bool - InputKeyPath string - FakeVersion bool +type PlatformConfigVoice struct { + EnableOemWakeupVal bool + WakeupVals [MaxWords]wakeupVal } + +type PlatformConfig struct { + IconSwitch bool + TopLight bool + MicAdc bool + LedMcuInit bool + InputKeyPath string + FakeVersion bool + VoiceConfig PlatformConfigVoice +} + var ( - platformConfigs = map[string]PlatformConfig{ - "default": PlatformConfig{MicAdc:false, LedMcuInit:true,IconSwitch:true, TopLight:true, InputKeyPath:"/dev/input/event2"}, - "EVT":PlatformConfig{MicAdc:true,LedMcuInit:true,IconSwitch:true, TopLight:true, InputKeyPath:"/dev/input/event2"}, - "r311-pv1":PlatformConfig{MicAdc:false, LedMcuInit:true, IconSwitch:true, TopLight:true, InputKeyPath:"/dev/input/event1"}, - "r311-pv1c":PlatformConfig{MicAdc:true, LedMcuInit:false, IconSwitch:false, TopLight:false, FakeVersion:true, InputKeyPath:"/dev/input/event1"}, - "r311-c1-evb":PlatformConfig{MicAdc:false, LedMcuInit:false, IconSwitch:false, TopLight:false, FakeVersion:true, InputKeyPath:"/dev/input/event1"}, - } - curPlatformConfig *PlatformConfig + platformConfigs = map[string]PlatformConfig{ + "default": PlatformConfig{MicAdc: false, LedMcuInit: true, IconSwitch: true, TopLight: true, InputKeyPath: "/dev/input/event2"}, + "EVT": PlatformConfig{MicAdc: true, LedMcuInit: true, IconSwitch: true, TopLight: true, InputKeyPath: "/dev/input/event2"}, + "r311-pv1": PlatformConfig{MicAdc: false, LedMcuInit: true, IconSwitch: true, TopLight: true, InputKeyPath: "/dev/input/event1"}, + "r311-pv1c": PlatformConfig{MicAdc: true, LedMcuInit: false, IconSwitch: false, TopLight: false, FakeVersion: true, InputKeyPath: "/dev/input/event1"}, + "r311-c1-evb": PlatformConfig{MicAdc: false, LedMcuInit: false, IconSwitch: false, TopLight: false, FakeVersion: true, + VoiceConfig: PlatformConfigVoice{EnableOemWakeupVal: true, + WakeupVals: [MaxWords]wakeupVal{ + MainWakeup: wakeupVal{WkupWord: MainWakeupWord, DayThresh: "0.05", NightThresh: "0.06", Major: "0", Dcheck: "0", DayThresh2: "0.05", NightThresh2: "0.05"}, + NextSong: wakeupVal{WkupWord: NextSongWord, DayThresh: "0.05", NightThresh: "0.05", Major: "0", Dcheck: "0", DayThresh2: "0.05", NightThresh2: "0.06"}, + VolumeAdjust: wakeupVal{WkupWord: string(VolumeUpWord + "," + VolumeDownWord), DayThresh: "0.05,0.05", NightThresh: "0.05,0.05", Major: "0,0", Dcheck: "0,0", DayThresh2: "0.05,0.05", NightThresh2: "0.05,0.05"}, + }}, + InputKeyPath: "/dev/input/event1"}, + } + curPlatformConfig *PlatformConfig ) func GetCurPlatformConfig() PlatformConfig { @@ -35,10 +49,10 @@ func GetCurPlatformConfig() PlatformConfig { if queryString == "DVT" { queryString = "EVT" } - if tmp,ok := platformConfigs[*ActualHv]; ok { + if tmp, ok := platformConfigs[*ActualHv]; ok { curPlatformConfig = &tmp return tmp } else { return platformConfigs["default"] } -} \ No newline at end of file +} diff --git a/app/netease_control_center_common_module/src/netease_control_center/main.go b/app/netease_control_center_common_module/src/netease_control_center/main.go index 1f29f63..30b9001 100755 --- a/app/netease_control_center_common_module/src/netease_control_center/main.go +++ b/app/netease_control_center_common_module/src/netease_control_center/main.go @@ -45,6 +45,9 @@ func main() { log.Println(log.DebugLog, "GitTag: ", *globals.GitTag) log.Println(log.DebugLog, "Hv: ", *globals.Hv) + //Init globals vars + globals.InitGlobals() + if os.Getenv("ccmode") == "manufacture" { manufacture.Start() select {} diff --git a/app/netease_control_center_common_module/src/netease_control_center/modules/controller/task_voiceControl.go b/app/netease_control_center_common_module/src/netease_control_center/modules/controller/task_voiceControl.go index 66d13eb..e79d47e 100755 --- a/app/netease_control_center_common_module/src/netease_control_center/modules/controller/task_voiceControl.go +++ b/app/netease_control_center_common_module/src/netease_control_center/modules/controller/task_voiceControl.go @@ -604,6 +604,8 @@ func Nduilite_fespa_set_arg(initSdk bool) { } } + + var tmpEnv struct { Env string `json:"env"` } diff --git a/app/netease_voice_common_module/Config.in b/app/netease_voice_common_module/Config.in index a2c918e..ae07273 100644 --- a/app/netease_voice_common_module/Config.in +++ b/app/netease_voice_common_module/Config.in @@ -25,9 +25,24 @@ choice bool "Used xunfei CAE SDK" config NETEASE_DUILITE_SDK - bool "Used duilite CAE SDK" + bool "Used duilite sdk!" + endchoice +if NETEASE_DUILITE_SDK +choice + prompt "Selected Duilite SDK Version" + default NETEASE_DUILITE_FESPA_SDK + + config NETEASE_DUILITE_FESPA_SDK + bool "Used duilite FESPA(circle mic) SDK for 6mic dida" + + config NETEASE_DUILITE_FESPL_SDK + bool "Used duilite FESPL(line mic) for 4 and 2 mic" + +endchoice +endif + choice prompt "Selected TTS SDK" default XUNFEI_TTS_SDK diff --git a/app/netease_voice_common_module/Makefile b/app/netease_voice_common_module/Makefile index aa3689e..c41e129 100644 --- a/app/netease_voice_common_module/Makefile +++ b/app/netease_voice_common_module/Makefile @@ -15,6 +15,7 @@ $(info CONFIG_XUNFEI_CAE_SDK=$(CONFIG_XUNFEI_CAE_SDK)) $(info CONFIG_NETEASE_MSC_SDK=$(CONFIG_NETEASE_MSC_SDK)) $(info CONFIG_NETEASE_CAE_SDK=$(CONFIG_NETEASE_CAE_SDK)) $(info CONFIG_USED_DC_SDK=$(CONFIG_USED_DC_SDK)) +$(info CONFIG_NETEASE_DUILITE_FESPL_SDK=$(CONFIG_NETEASE_DUILITE_FESPL_SDK)) define Package/$(PKG_NAME) SECTION:=utils @@ -50,10 +51,17 @@ define Package/$(PKG_NAME) ifeq ('$(CONFIG_USED_DC_SDK)', 'y') DEPENDS+= +libneteasedc endif + + ifeq ('$(CONFIG_NETEASE_DUILITE_FESPA_SDK)', 'y') + TARGET_CFLAGS+= -DNETEASE_DUILITE_FESPA_SDK=1 + endif + ifeq ('$(CONFIG_NETEASE_DUILITE_FESPL_SDK)', 'y') + TARGET_CFLAGS+= -DNETEASE_DUILITE_FESPL_SDK=1 + endif endef ifeq ('$(CONFIG_NETEASE_DUILITE_SDK)', 'y') - TARGET_LDFLAGS += -lauth_tina -lduilite + TARGET_LDFLAGS += -lauth_tina -lduilite -lauth_tina endif ifeq ('$(CONFIG_XUNFEI_MSC_SDK)', 'y') diff --git a/app/netease_voice_common_module/src/nduilite.c b/app/netease_voice_common_module/src/nduilite_fespa.c similarity index 77% rename from app/netease_voice_common_module/src/nduilite.c rename to app/netease_voice_common_module/src/nduilite_fespa.c index 9f1f54b..eede93e 100644 --- a/app/netease_voice_common_module/src/nduilite.c +++ b/app/netease_voice_common_module/src/nduilite_fespa.c @@ -20,6 +20,8 @@ when who why /* ------------------------------------------------------------------------ ** Includes ** ------------------------------------------------------------------------ */ +#if NETEASE_DUILITE_FESPA_SDK + #include "base.h" #include "cae_lib.h" #include "error.h" @@ -169,8 +171,8 @@ int Netease_duilite_vad_start() { duiliteUnlock("vad_start"); return ret; } else { - n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", duilitevad, - duiliteok); + n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", + duilitevad, duiliteok); return -1; } #else @@ -196,8 +198,8 @@ int Netease_duilite_vad_stop(char IsLock) { } return ret; } else { - n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", duilitevad, - duiliteok); + n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", + duilitevad, duiliteok); return -1; } #else @@ -217,8 +219,8 @@ int Neteaase_duilite_vad_cancel() { duiliteUnlock(" vad_cancel "); return ret; } else { - n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", duilitevad, - duiliteok); + n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", + duilitevad, duiliteok); return -1; } @@ -291,33 +293,68 @@ int Netease_nduilite_init(duilite_callback wakeup_callback, duilite_callback beamforming_callback, duilite_callback vad_callback) { int ret = 0; + char *auth_cfg; + char *cfg; + char *vad_cfg; - char *auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":" - "\"e3eee41c3276bd027f2814f6cf3b8991\", " - "\"provision\":\"/usr/share/netease/duilite/auth/" - "aiengine-2.9.5-15205715844583be.provision\", " - "\"serialNumber\":\"/mnt/UDISK/device.number\"}"; + switch (getWorkMode()) { + case WorkMode_R311_C1_EVB: + auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":" + "\"e3eee41c3276bd027f2814f6cf3b8991\", " + "\"provision\":\"/usr/share/netease/duilite/auth/" + "aiengine-2.9.5-15205715844583be.provision\", " + "\"serialNumber\":\"/mnt/UDISK/device.number\"}"; - ///*初始化时默认采用夜间唤醒阈值,thresh=0.59;major=0;thresh2=0.36; - ///时间同步成功后再根据实际时间来切换阈值*/ - char *cfg = "{\"aecBinPath\": " - "\"/usr/share/netease/duilite/fespa/" - "AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin\", " - "\"wakeupBinPath\": " - "\"/usr/share/netease/duilite/fespa/" - "wakeup_aihome_ntes_20180914_pre.bin\", " - "\"beamformingBinPath\": " - "\"/usr/share/netease/duilite/fespa/" - "UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin\", " - "\"env\": \"words=di da di " - "da;thresh=0.59;major=0;dcheck=0;thresh2=0.36;\", " - "\"rollBack\": 0}"; + ///*初始化时默认采用夜间唤醒阈值,thresh=0.59;major=0;thresh2=0.36; + ///时间同步成功后再根据实际时间来切换阈值*/ + cfg = "{\"aecBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "AEC_ch6-2-ch4_1ref_common_20180801_v0.9.4.bin\", " + "\"wakeupBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "wakeup_aifar_comm_20180104.bin\", " + "\"beamformingBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "ULA_asr_ch4_2_ch4_35mm_20181206_v1.1.0.8_asrpost0.bin\", " + "\"env\": \"words=di da di " + "da;thresh=0.59;major=0;dcheck=0;thresh2=0.36;\", " + "\"rollBack\": 0}"; #if USED_NETEASE_DUILITE_VAD - char *vad_cfg = "{\"resBinPath\": " - "\"/usr/share/netease/duilite/vad/" - "vad_aihome_v0.6.bin\",\"pauseTime\": 500}"; + vad_cfg = "{\"resBinPath\": " + "\"/usr/share/netease/duilite/vad/" + "vad_aihome_v0.8.bin\",\"pauseTime\": 500}"; #endif + break; + + default: + auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":" + "\"e3eee41c3276bd027f2814f6cf3b8991\", " + "\"provision\":\"/usr/share/netease/duilite/auth/" + "aiengine-2.9.5-15205715844583be.provision\", " + "\"serialNumber\":\"/mnt/UDISK/device.number\"}"; + + ///*初始化时默认采用夜间唤醒阈值,thresh=0.59;major=0;thresh2=0.36; + ///时间同步成功后再根据实际时间来切换阈值*/ + cfg = "{\"aecBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin\", " + "\"wakeupBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "wakeup_aihome_ntes_20180914_pre.bin\", " + "\"beamformingBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin\", " + "\"env\": \"words=di da di " + "da;thresh=0.59;major=0;dcheck=0;thresh2=0.36;\", " + "\"rollBack\": 0}"; + +#if USED_NETEASE_DUILITE_VAD + vad_cfg = "{\"resBinPath\": " + "\"/usr/share/netease/duilite/vad/" + "vad_aihome_v0.6.bin\",\"pauseTime\": 500}"; +#endif + } if (1 == duiliteok) { return 1; @@ -327,7 +364,7 @@ int Netease_nduilite_init(duilite_callback wakeup_callback, if (NULL == _duilitelock) { _duilitelock = native_mutex_create(NULL, NULL); } - + ret = duilite_library_load(auth_cfg); if (0 != ret) { n_error("Duilite library load fail!(%d)\n", ret); @@ -377,12 +414,12 @@ void Dmic_data_convert(const void *audioData, unsigned int audio_len) { short tmp; int bitPerChan = 16; int chanNum = 8; - //16bit 8 channel, 0,1 is null - if (audio_len%(bitPerChan*chanNum/8) != 0) { + // 16bit 8 channel, 0,1 is null + if (audio_len % (bitPerChan * chanNum / 8) != 0) { n_error("Input data len(%d) error, not full frame!", audio_len); } - while(p < (audioData+audio_len)) { + while (p < (audioData + audio_len)) { p[0] = p[2]; p[1] = p[3]; p[2] = p[4]; @@ -415,7 +452,7 @@ void Netease_nduilite_writeaudio(const void *audioData, return; } - //n_debug("Write nduilite data, len:%d\n", audio_len); + // n_debug("Write nduilite data, len:%d\n", audio_len); ret = duilite_fespa_feed(fespa, audioData, audio_len); #if 0 @@ -462,4 +499,5 @@ int Netease_nduilite_reinit(duilite_callback wakeup_callback, } return 1; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/app/netease_voice_common_module/src/nduilite_fespl.c b/app/netease_voice_common_module/src/nduilite_fespl.c new file mode 100644 index 0000000..52690a7 --- /dev/null +++ b/app/netease_voice_common_module/src/nduilite_fespl.c @@ -0,0 +1,503 @@ +/* ========================================================================= + +DESCRIPTION + Netease && Xunfei speech processing main program + Cae voice process + +Copyright (c) 2017 by Netease, Co,LTD. All Rights Reserved. +============================================================================ */ + +/* ========================================================================= + + REVISION + +when who why +-------- --------- +------------------------------------------- +2017/06/28 wangzijiao Created. +============================================================================ */ + +/* ------------------------------------------------------------------------ +** Includes +** ------------------------------------------------------------------------ */ +#define NETEASE_DUILITE_FESPL_SDK 1 +#if NETEASE_DUILITE_FESPL_SDK + +#include "base.h" +#include "cae_lib.h" +#include "error.h" +#include +#include +#include +#include +#include +#include +#include + +#include "msc.h" +#include "nduilite.h" +#include + +/* ------------------------------------------------------------------------ +** Macros +** ------------------------------------------------------------------------ */ + +/* ------------------------------------------------------------------------ +** Defines +** ------------------------------------------------------------------------ */ +#define DUILITE_DEBUG (0) +/* ------------------------------------------------------------------------ +** Types +** ------------------------------------------------------------------------ */ + +/* ------------------------------------------------------------------------ +** Global Variable Definitions +** ------------------------------------------------------------------------ */ +static struct duilite_fespl *fespa = NULL; +static NATIVE_MUTEX_HANDLE _duilitelock = NULL; +static volatile char vadstatus = 0; // 0 stop, 1 start +static char duiliteok = 0; // 0 not ok, 1 ok + +#if DUILITE_DEBUG +static int fd_audio_orig; +#endif + +#if USED_NETEASE_DUILITE_VAD +static struct duilite_vad *duilitevad = NULL; +static duilite_callback oem_vad_cb = NULL; +#endif + +static duilite_callback oem_audio_cb = NULL; + +/* ------------------------------------------------------------------------ +** Function Definitions +** ------------------------------------------------------------------------ +*/ + +int Netease_duilite_fespa_set(char *arg) { + int ret; + if (NULL == arg) { + n_error("Arg is null!"); + return -2; + } + + if (NULL == fespa) { + n_error("fespa is null, do not set%s\n", arg); + return -1; + } + + if (1 != duiliteok) { + n_error("duilite not ok!\n"); + return -3; + } + + ret = duilite_fespl_set(fespa, arg); + n_debug("Set arg to duilite(ret=%d):%s\n", ret, arg); +} + +static void duiliteLock(char *who) { + if (NULL != _duilitelock) { + // n_debug("Lock! %s\n", who); + native_mutex_take(_duilitelock, 0); + } +} + +static void duiliteUnlock(char *who) { + if (NULL != _duilitelock) { + // n_debug("UnLock!%s\n", who); + native_mutex_given(_duilitelock); + } +} + +static void vad_audiocb(void *userdata, int type, char *msg, int len) { + if (NULL != oem_audio_cb) { + oem_audio_cb(userdata, type, msg, len); + } + +#if USED_NETEASE_DUILITE_VAD + if (type == DUILITE_MSG_TYPE_BINARY && duilitevad != NULL) { + duiliteLock("write audio"); + if (vadstatus == 1) { + duilite_vad_feed(duilitevad, msg, len); + } + duiliteUnlock("write audio"); + } + // n_debug("Get beforming data\n"); +#endif +} + +#if USED_NETEASE_DUILITE_VAD +static void vad_status_cb(void *userdata, int type, char *msg, int len) { + if (oem_vad_cb != NULL) { + oem_vad_cb(userdata, type, msg, len); + } + + if (type == DUILITE_MSG_TYPE_JSON) { + json_t *js = json_loadb(msg, len, 0, NULL); + if (js != NULL) { + json_t *status = json_object_get(js, "status"); + if (status != NULL && json_is_integer(status)) { + switch (json_integer_value(status)) { + case 1: // start + setVadStatus(VadStatus_Begin); + break; + case 2: // end + setVadStatus(VadStatus_Finish); + Netease_duilite_vad_stop(0); + break; + default: + n_error("Unknow status:%s\n", msg); + } + } + json_decref(js); + } + } +} +#endif + +int Netease_duilite_vad_start() { +#if USED_NETEASE_DUILITE_VAD + int ret = -1; + + if (NULL != duilitevad && 1 == duiliteok) { + duiliteLock("vad_start"); + if (vadstatus == 1) { + n_debug("Begin to stop, in start!\n"); + duilite_vad_stop(duilitevad); + } + ret = duilite_vad_start(duilitevad, NULL); + n_debug("!!!!VAD start!!%d\n", ret); + vadstatus = 1; + + duiliteUnlock("vad_start"); + return ret; + } else { + n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", + duilitevad, duiliteok); + return -1; + } +#else + return 0; +#endif +} + +int Netease_duilite_vad_stop(char IsLock) { +#if USED_NETEASE_DUILITE_VAD + int ret = 0; + n_debug("Begin to stop vad!\n"); + if (NULL != duilitevad && 1 == duiliteok) { + if (1 == IsLock) { + duiliteLock(" vad_stop "); + } + if (vadstatus == 1) { + ret = duilite_vad_stop(duilitevad); + vadstatus = 0; + } + + if (1 == IsLock) { + duiliteUnlock(" vad_stop "); + } + return ret; + } else { + n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", + duilitevad, duiliteok); + return -1; + } +#else + return 0; +#endif +} + +int Neteaase_duilite_vad_cancel() { +#if USED_NETEASE_DUILITE_VAD + int ret = 0; + if (NULL != duilitevad && 1 == duiliteok) { + duiliteLock(" vad_cancel "); + if (1 == vadstatus) { + ret = duilite_vad_cancel(duilitevad); + vadstatus = 0; + } + duiliteUnlock(" vad_cancel "); + return ret; + } else { + n_error("Duilite check err, duilitevad:0x%p, duiliteok:%d\n", + duilitevad, duiliteok); + + return -1; + } +#else + return 0; +#endif +} + +// voice binary data convert by HongChuanRong +void CheckData(const void *dataIn, int lenIn, void *dataOut, int *lenOut) { +#define DATA_CHAN_NUM (12) + static short ckDataBuf[DATA_CHAN_NUM]; + static int ckDataPos = 0; + static int chanOneFoundFlag = 0; + if (lenIn % sizeof(int) != 0) { + fprintf(stderr, "fatal error!\n"); + return; + } + const int totalCountsIn = lenIn / sizeof(int); + const int *pDataIn = (const int *)dataIn; + short *pDataOut = (short *)dataOut; + int countsOut = 0; + + if (!chanOneFoundFlag) { + // we have to find chan one first (Peng) + for (auto k = 0; k < totalCountsIn; ++k) { + const int chanId = (pDataIn[k] >> 8) & 0x0f; + if (chanId == 1) { + // chan one found + chanOneFoundFlag = 1; + CheckData(pDataIn + k, (totalCountsIn - k) * sizeof(int), + dataOut, lenOut); + return; + } + } + return; + } + for (auto k = 0; k < totalCountsIn; ++k) { + const int chanId = (pDataIn[k] >> 8) & 0x0f; + + if (chanId == (ckDataPos + 1)) { + ckDataBuf[ckDataPos++] = (short)(pDataIn[k] >> 16); + } else { + fprintf(stderr, "expecting chan: %d, input chan: %d\n", + ckDataPos + 1, chanId); + ckDataPos = 0; + } + + if (ckDataPos == DATA_CHAN_NUM) { + short finalOut[8]; + finalOut[0] = ckDataBuf[8 - 1]; + finalOut[1] = ckDataBuf[2 - 1]; + finalOut[2] = ckDataBuf[7 - 1]; + finalOut[3] = ckDataBuf[1 - 1]; + finalOut[4] = ckDataBuf[9 - 1]; + finalOut[5] = ckDataBuf[3 - 1]; + finalOut[6] = ckDataBuf[4 - 1]; + finalOut[7] = ckDataBuf[10 - 1]; + + memcpy(pDataOut + countsOut, finalOut, sizeof(finalOut)); + countsOut += 8; + ckDataPos = 0; + } + } + (*lenOut) = countsOut * sizeof(short); +} + +int Netease_nduilite_init(duilite_callback wakeup_callback, + duilite_callback doa_callback, + duilite_callback beamforming_callback, + duilite_callback vad_callback) { + int ret = 0; + char *auth_cfg; + char *cfg; + char *vad_cfg; + + switch (getWorkMode()) { + case WorkMode_R311_C1_EVB: + auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":" + "\"e3eee41c3276bd027f2814f6cf3b8991\",\"deviceId\": \"28ede0d08139\"," + "\"provision\":\"/usr/share/netease/duilite/auth/" + "aiengine-2.9.5-15205715844583be.provision\", " + "\"serialNumber\":\"/mnt/UDISK/device.number\"}"; + + ///*初始化时默认采用夜间唤醒阈值,thresh=0.59;major=0;thresh2=0.36; + ///时间同步成功后再根据实际时间来切换阈值*/ + cfg = "{\"aecBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "AEC_ch6-2-ch4_1ref_common_20180801_v0.9.4.bin\", " + "\"wakeupBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "wakeup_aifar_comm_20180104.bin\", " + "\"beamformingBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "ULA_asr_ch4_2_ch4_35mm_20181206_v1.1.0.8_asrpost0.bin\", " + "\"env\": \"words=di da di da;thresh=0.05;major=0;dcheck=0;thresh2=0.05;\", " + "\"rollBack\": 0}"; + +#if USED_NETEASE_DUILITE_VAD + vad_cfg = "{\"resBinPath\": " + "\"/usr/share/netease/duilite/vad/" + "vad_aihome_v0.8.bin\",\"pauseTime\": 500}"; +#endif + break; + + default: + auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":" + "\"e3eee41c3276bd027f2814f6cf3b8991\", " + "\"provision\":\"/usr/share/netease/duilite/auth/" + "aiengine-2.9.5-15205715844583be.provision\", " + "\"serialNumber\":\"/mnt/UDISK/device.number\"}"; + + ///*初始化时默认采用夜间唤醒阈值,thresh=0.59;major=0;thresh2=0.36; + ///时间同步成功后再根据实际时间来切换阈值*/ + cfg = "{\"aecBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin\", " + "\"wakeupBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "wakeup_aihome_ntes_20180914_pre.bin\", " + "\"beamformingBinPath\": " + "\"/usr/share/netease/duilite/fespa/" + "UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin\", " + "\"env\": \"words=di da di " + "da;thresh=0.59;major=0;dcheck=0;thresh2=0.36;\", " + "\"rollBack\": 0}"; + +#if USED_NETEASE_DUILITE_VAD + vad_cfg = "{\"resBinPath\": " + "\"/usr/share/netease/duilite/vad/" + "vad_aihome_v0.6.bin\",\"pauseTime\": 500}"; +#endif + } + + if (1 == duiliteok) { + return 1; + } + n_debug("Begin to init duilite!\n"); + + if (NULL == _duilitelock) { + _duilitelock = native_mutex_create(NULL, NULL); + } + + ret = duilite_library_load(auth_cfg); + if (0 != ret) { + n_error("Duilite library load fail!(%d)\n", ret); + return 0; + } + fespa = duilite_fespl_new(cfg); + if (NULL != fespa) { + n_debug("fespa new success!\n"); + } else { + n_error("fespa new fail!\n"); + duilite_library_release(); + return 0; + } + +#if USED_NETEASE_DUILITE_VAD + duilitevad = duilite_vad_new(vad_cfg, vad_status_cb, NULL); + oem_vad_cb = vad_callback; + if (NULL == duilitevad) { + n_debug("Vad new fail!\n"); + duilite_fespl_delete(fespa); + duilite_library_release(); + + return 0; + } else { + n_debug("Vad new success!\n"); + } +#endif + duilite_fespl_register(fespa, DUILITE_CALLBACK_FESPL_WAKEUP, + wakeup_callback, NULL); + duilite_fespl_register(fespa, DUILITE_CALLBACK_FESPL_DOA, doa_callback, + NULL); + duilite_fespl_register(fespa, DUILITE_CALLBACK_FESPL_BEAMFORMING, + vad_audiocb, NULL); + oem_audio_cb = beamforming_callback; + + n_debug("Init duilite finish!\n"); + +#if DUILITE_DEBUG + fd_audio_orig = open("/tmp/bkconvertdata", O_CREAT | O_APPEND | O_RDWR); +#endif + duiliteok = 1; + return 1; +} + +void Dmic_data_convert(const void *audioData, unsigned int audio_len) { + short *p = audioData; + short tmp; + int bitPerChan = 16; + int chanNum = 8; + // 16bit 8 channel, 0,1 is null + if (audio_len % (bitPerChan * chanNum / 8) != 0) { + n_error("Input data len(%d) error, not full frame!", audio_len); + } + + while (p < (audioData + audio_len)) { + p[0] = p[2]; + p[1] = p[3]; + p[2] = p[4]; + p[3] = p[5]; + p[4] = p[6]; + p[5] = p[7]; + p[6] = 0x0000; + p[7] = 0x0000; + p += 8; + } +} + +void Netease_nduilite_writeaudio(const void *audioData, + unsigned int audio_len) { + int len = 0; + char *newbuf = NULL; + int ret = -1; + + if (0 == duiliteok) { + return; + } + + if (NULL == fespa) { + n_debug("nduilite fd is null!\n"); + return; + } + + if (audio_len == 0) { + n_debug("nduilite write audio fail, len = 0\n"); + return; + } + + //n_debug("Write nduilite data, len:%d\n", audio_len); + ret = duilite_fespl_feed(fespa, audioData, audio_len); + +#if 0 + newbuf = (char *)malloc(audio_len + 60); + + if (newbuf == NULL) { + n_error("nduilite malloc fail!\n"); + return; + } + + CheckData(audioData, audio_len, (void *)newbuf, &len); + + ret = duilite_fespl_feed(fespa, newbuf, len); + +#if DUILITE_DEBUG + n_debug("orig data len:%d, convert len:%d, ret:%d\n", audio_len, len, ret); + write(fd_audio_orig, newbuf, len); +#endif + free(newbuf); +#endif +} + +int Netease_nduilite_reinit(duilite_callback wakeup_callback, + duilite_callback doa_callback, + duilite_callback beamforming_callback, + duilite_callback vad_callback) { + if (1 == duiliteok) { + duiliteok = 0; + n_debug("Duilite reinit sdk!\n"); + usleep(15000); + if (NULL != fespa) { + duilite_fespl_delete(fespa); + fespa = NULL; + } + + if (NULL != duilitevad) { + duilite_vad_delete(duilitevad); + duilitevad = NULL; + } + + duilite_library_release(); + Netease_nduilite_init(wakeup_callback, doa_callback, + beamforming_callback, vad_callback); + } + + return 1; +} +#endif \ No newline at end of file diff --git a/app/netease_voice_common_module/src/record.c b/app/netease_voice_common_module/src/record.c index ce7c806..75c5f54 100644 --- a/app/netease_voice_common_module/src/record.c +++ b/app/netease_voice_common_module/src/record.c @@ -444,7 +444,7 @@ static void *RecordThread(void *param) { switch (getWorkMode()) { case WorkMode_R311_C1_EVB: #define ADC_CH_NUM 6 - #define VIRTUAL_CH 2 + #define VIRTUAL_CH 0 #define BIT_PER_CH 16 tmpbufsize = record->chunk_size * (ADC_CH_NUM + VIRTUAL_CH) * BIT_PER_CH/8; tmpbuf = (char *)calloc(1, tmpbufsize); diff --git a/lib/libduilite/2mic/lib/duilite.h b/lib/libduilite/2mic/lib/duilite.h new file mode 100644 index 0000000..98d55f3 --- /dev/null +++ b/lib/libduilite/2mic/lib/duilite.h @@ -0,0 +1,219 @@ +#ifndef __DUILITE_H__ +#define __DUILITE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef NO_ANDROID +#undef __ANDROID__ +#endif + +#if (!(defined DUILITE_CALL) || !(defined DUILITE_IMPORT_OR_EXPORT)) + #if defined _WIN32 + #if defined _WIN64 + #define DUILITE_CALL __stdcall + #else + #define DUILITE_CALL + #endif + + #ifdef DUILITE_IMPLEMENTION + #define DUILITE_IMPORT_OR_EXPORT __declspec(dllexport) + #else + #define DUILITE_IMPORT_OR_EXPORT __declspec(dllimport) + #endif + #elif defined __ANDROID__ + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT + #undef JNIEXPORT + #define JNIEXPORT __attribute ((visibility("default"))) + #elif defined __APPLE__ + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT + #elif defined __unix__ + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT __attribute ((visibility("default"))) + #else + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT + #endif +#endif + +/* version */ +#define DUILITE_MAJOR 0 +#define DUILITE_MINOR 7 +#define DUILITE_REVISION 0 + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#define DUILITE_VERSION_STRING TOSTRING(DUILITE_MAJOR) "." TOSTRING(DUILITE_MINOR) "." TOSTRING(DUILITE_REVISION) +#define DUILITE_VERSION_TEXT "AISpeech DUILite SDK V" DUILITE_VERSION_STRING " " __DATE__ " " __TIME__ + +#define DUILITE_VERSION_NUM (((DUILITE_MAJOR)%100)*10000 + ((DUILITE_MINOR)%100)*100 + ((DUILITE_REVISION)%100)) + + +#define DUILITE_MSG_TYPE_JSON 0 +#define DUILITE_MSG_TYPE_BINARY 1 + + +enum duilite_callback_type { + DUILITE_CALLBACK_FESPA_WAKEUP = 0, + DUILITE_CALLBACK_FESPA_DOA, + DUILITE_CALLBACK_FESPA_BEAMFORMING, + DUILITE_CALLBACK_FESPL_WAKEUP, + DUILITE_CALLBACK_FESPL_DOA, + DUILITE_CALLBACK_FESPL_BEAMFORMING, + DUILITE_CALLBACK_FEND_BEAMFORMING +}; + +typedef int (*duilite_callback)(void *userdata, int type, char *msg, int len); + +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_library_load(char *cfg); +DUILITE_IMPORT_OR_EXPORT void DUILITE_CALL duilite_library_release(); +DUILITE_IMPORT_OR_EXPORT const char *duilite_get_version(void); + +struct duilite_vad; +DUILITE_IMPORT_OR_EXPORT struct duilite_vad * DUILITE_CALL duilite_vad_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_start(struct duilite_vad *vad, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_feed(struct duilite_vad *vad, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_stop(struct duilite_vad *vad); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_cancel(struct duilite_vad *vad); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_delete(struct duilite_vad *vad); + +struct duilite_speexenc; +DUILITE_IMPORT_OR_EXPORT struct duilite_speexenc * DUILITE_CALL duilite_speexenc_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_start(struct duilite_speexenc *speexenc, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_feed(struct duilite_speexenc *speexenc, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_stop(struct duilite_speexenc *speexenc); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_delete(struct duilite_speexenc *speexenc); + +struct duilite_echo; +DUILITE_IMPORT_OR_EXPORT struct duilite_echo * DUILITE_CALL duilite_echo_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_start(struct duilite_echo *echo, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_feed(struct duilite_echo *echo, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_stop(struct duilite_echo *echo); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_cancel(struct duilite_echo *echo); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_delete(struct duilite_echo *echo); + +struct duilite_wakeup; +DUILITE_IMPORT_OR_EXPORT struct duilite_wakeup * DUILITE_CALL duilite_wakeup_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_start(struct duilite_wakeup *wakeup, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_feed(struct duilite_wakeup *wakeup, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_stop(struct duilite_wakeup *wakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_cancel(struct duilite_wakeup *wakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_delete(struct duilite_wakeup *wakeup); + +struct duilite_cntts; +DUILITE_IMPORT_OR_EXPORT struct duilite_cntts * DUILITE_CALL duilite_cntts_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_start(struct duilite_cntts *cntts, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_feed(struct duilite_cntts *cntts, char *data); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_set(struct duilite_cntts *cntts, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_delete(struct duilite_cntts *cntts); + +struct duilite_gram; +DUILITE_IMPORT_OR_EXPORT struct duilite_gram * DUILITE_CALL duilite_gram_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gram_start(struct duilite_gram *gram, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gram_delete(struct duilite_gram *gram); + +struct duilite_asr; +DUILITE_IMPORT_OR_EXPORT struct duilite_asr * DUILITE_CALL duilite_asr_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_start(struct duilite_asr *asr, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_feed(struct duilite_asr *asr, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_stop(struct duilite_asr *asr); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_cancel(struct duilite_asr *asr); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_delete(struct duilite_asr *asr); + +struct duilite_fespa; +DUILITE_IMPORT_OR_EXPORT struct duilite_fespa * DUILITE_CALL duilite_fespa_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_register(struct duilite_fespa *fespa, int callback_type, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_start(struct duilite_fespa *fespa, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_feed(struct duilite_fespa *fespa, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_stop(struct duilite_fespa *fespa); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_set(struct duilite_fespa *fespa, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_delete(struct duilite_fespa *fespa); + +struct duilite_fespl; +DUILITE_IMPORT_OR_EXPORT struct duilite_fespl * DUILITE_CALL duilite_fespl_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_register(struct duilite_fespl *fespl, int callback_type, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_start(struct duilite_fespl *fespl, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_feed(struct duilite_fespl *fespl, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_stop(struct duilite_fespl *fespl); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_set(struct duilite_fespl *fespl, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_delete(struct duilite_fespl *fespl); + +struct duilite_fdm; +DUILITE_IMPORT_OR_EXPORT struct duilite_fdm * DUILITE_CALL duilite_fdm_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_start(struct duilite_fdm *fdm, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_set(struct duilite_fdm *fdm, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_get(struct duilite_fdm *fdm, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_feed(struct duilite_fdm *fdm, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_stop(struct duilite_fdm *fdm); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_delete(struct duilite_fdm *fdm); + +struct duilite_nr; +DUILITE_IMPORT_OR_EXPORT struct duilite_nr * DUILITE_CALL duilite_nr_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_start(struct duilite_nr *nr, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_feed(struct duilite_nr *nr, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_stop(struct duilite_nr *nr); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_delete(struct duilite_nr *nr); + +struct duilite_vprint; +DUILITE_IMPORT_OR_EXPORT struct duilite_vprint * DUILITE_CALL duilite_vprint_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_start(struct duilite_vprint *vprint, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_feed(struct duilite_vprint *vprint, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_stop(struct duilite_vprint *vprint); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_delete(struct duilite_vprint *vprint); + +struct duilite_qbye; +DUILITE_IMPORT_OR_EXPORT struct duilite_qbye * DUILITE_CALL duilite_qbye_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_start(struct duilite_qbye *qbye, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_feed(struct duilite_qbye *qbye, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_stop(struct duilite_qbye *qbye); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_delete(struct duilite_qbye *qbye); + +struct duilite_gender; +DUILITE_IMPORT_OR_EXPORT struct duilite_gender * DUILITE_CALL duilite_gender_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_start(struct duilite_gender *gender, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_feed(struct duilite_gender *gender, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_stop(struct duilite_gender *gender); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_delete(struct duilite_gender *gender); + +struct duilite_semantic; +DUILITE_IMPORT_OR_EXPORT struct duilite_semantic * DUILITE_CALL duilite_semantic_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_start(struct duilite_semantic *semantic, char *param); +//DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_feed(struct duilite_semantic *semantic, char *data, int len); +//DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_stop(struct duilite_semantic *semantic); +//DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_cancel(struct duilite_semantic *semantic); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_delete(struct duilite_semantic *semantic); + +struct duilite_nwakeup; +DUILITE_IMPORT_OR_EXPORT struct duilite_nwakeup * DUILITE_CALL duilite_nwakeup_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_start(struct duilite_nwakeup *nwakeup, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_feed(struct duilite_nwakeup *nwakeup, int index, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_stop(struct duilite_nwakeup *nwakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_cancel(struct duilite_nwakeup *nwakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_delete(struct duilite_nwakeup *nwakeup); + +struct duilite_dmasp; +DUILITE_IMPORT_OR_EXPORT struct duilite_dmasp * DUILITE_CALL duilite_dmasp_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_start(struct duilite_dmasp *dmasp, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_feed(struct duilite_dmasp *dmasp, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_stop(struct duilite_dmasp *dmasp); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_cancel(struct duilite_dmasp *dmasp); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_delete(struct duilite_dmasp *dmasp); + +struct duilite_fend; +DUILITE_IMPORT_OR_EXPORT struct duilite_fend * DUILITE_CALL duilite_fend_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_register(struct duilite_fend *fend, int callback_type, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_start(struct duilite_fend *fend, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_feed(struct duilite_fend *fend, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_stop(struct duilite_fend *fend); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_cancel(struct duilite_fend *fend); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_delete(struct duilite_fend *fend); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/libduilite/2mic/lib/libauth_tina.so b/lib/libduilite/2mic/lib/libauth_tina.so new file mode 100644 index 0000000..1e82e4a Binary files /dev/null and b/lib/libduilite/2mic/lib/libauth_tina.so differ diff --git a/lib/libduilite/2mic/lib/libduilite.so b/lib/libduilite/2mic/lib/libduilite.so new file mode 100644 index 0000000..de27903 Binary files /dev/null and b/lib/libduilite/2mic/lib/libduilite.so differ diff --git a/lib/libduilite/2mic/res/fespl/AEC_ch4-2-ch2_1ref_common_20180731_v0.9.4.bin b/lib/libduilite/2mic/res/fespl/AEC_ch4-2-ch2_1ref_common_20180731_v0.9.4.bin new file mode 100644 index 0000000..671e688 Binary files /dev/null and b/lib/libduilite/2mic/res/fespl/AEC_ch4-2-ch2_1ref_common_20180731_v0.9.4.bin differ diff --git a/lib/libduilite/2mic/res/fespl/UDA_asr_ch2_2_ch2_30mm_20181129_v1.1.0.8_asrpost0.bin b/lib/libduilite/2mic/res/fespl/UDA_asr_ch2_2_ch2_30mm_20181129_v1.1.0.8_asrpost0.bin new file mode 100644 index 0000000..08c3595 Binary files /dev/null and b/lib/libduilite/2mic/res/fespl/UDA_asr_ch2_2_ch2_30mm_20181129_v1.1.0.8_asrpost0.bin differ diff --git a/lib/libduilite/2mic/res/vad/vad_aihome_v0.8.bin b/lib/libduilite/2mic/res/vad/vad_aihome_v0.8.bin new file mode 100644 index 0000000..80d1e1e Binary files /dev/null and b/lib/libduilite/2mic/res/vad/vad_aihome_v0.8.bin differ diff --git a/lib/libduilite/2mic/res/wakeup/wakeup_aifar_comm_20180104.bin b/lib/libduilite/2mic/res/wakeup/wakeup_aifar_comm_20180104.bin new file mode 100644 index 0000000..758cf9c Binary files /dev/null and b/lib/libduilite/2mic/res/wakeup/wakeup_aifar_comm_20180104.bin differ diff --git a/lib/libduilite/4mic/lib/duilite.h b/lib/libduilite/4mic/lib/duilite.h new file mode 100644 index 0000000..98d55f3 --- /dev/null +++ b/lib/libduilite/4mic/lib/duilite.h @@ -0,0 +1,219 @@ +#ifndef __DUILITE_H__ +#define __DUILITE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef NO_ANDROID +#undef __ANDROID__ +#endif + +#if (!(defined DUILITE_CALL) || !(defined DUILITE_IMPORT_OR_EXPORT)) + #if defined _WIN32 + #if defined _WIN64 + #define DUILITE_CALL __stdcall + #else + #define DUILITE_CALL + #endif + + #ifdef DUILITE_IMPLEMENTION + #define DUILITE_IMPORT_OR_EXPORT __declspec(dllexport) + #else + #define DUILITE_IMPORT_OR_EXPORT __declspec(dllimport) + #endif + #elif defined __ANDROID__ + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT + #undef JNIEXPORT + #define JNIEXPORT __attribute ((visibility("default"))) + #elif defined __APPLE__ + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT + #elif defined __unix__ + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT __attribute ((visibility("default"))) + #else + #define DUILITE_CALL + #define DUILITE_IMPORT_OR_EXPORT + #endif +#endif + +/* version */ +#define DUILITE_MAJOR 0 +#define DUILITE_MINOR 7 +#define DUILITE_REVISION 0 + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#define DUILITE_VERSION_STRING TOSTRING(DUILITE_MAJOR) "." TOSTRING(DUILITE_MINOR) "." TOSTRING(DUILITE_REVISION) +#define DUILITE_VERSION_TEXT "AISpeech DUILite SDK V" DUILITE_VERSION_STRING " " __DATE__ " " __TIME__ + +#define DUILITE_VERSION_NUM (((DUILITE_MAJOR)%100)*10000 + ((DUILITE_MINOR)%100)*100 + ((DUILITE_REVISION)%100)) + + +#define DUILITE_MSG_TYPE_JSON 0 +#define DUILITE_MSG_TYPE_BINARY 1 + + +enum duilite_callback_type { + DUILITE_CALLBACK_FESPA_WAKEUP = 0, + DUILITE_CALLBACK_FESPA_DOA, + DUILITE_CALLBACK_FESPA_BEAMFORMING, + DUILITE_CALLBACK_FESPL_WAKEUP, + DUILITE_CALLBACK_FESPL_DOA, + DUILITE_CALLBACK_FESPL_BEAMFORMING, + DUILITE_CALLBACK_FEND_BEAMFORMING +}; + +typedef int (*duilite_callback)(void *userdata, int type, char *msg, int len); + +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_library_load(char *cfg); +DUILITE_IMPORT_OR_EXPORT void DUILITE_CALL duilite_library_release(); +DUILITE_IMPORT_OR_EXPORT const char *duilite_get_version(void); + +struct duilite_vad; +DUILITE_IMPORT_OR_EXPORT struct duilite_vad * DUILITE_CALL duilite_vad_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_start(struct duilite_vad *vad, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_feed(struct duilite_vad *vad, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_stop(struct duilite_vad *vad); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_cancel(struct duilite_vad *vad); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vad_delete(struct duilite_vad *vad); + +struct duilite_speexenc; +DUILITE_IMPORT_OR_EXPORT struct duilite_speexenc * DUILITE_CALL duilite_speexenc_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_start(struct duilite_speexenc *speexenc, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_feed(struct duilite_speexenc *speexenc, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_stop(struct duilite_speexenc *speexenc); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_speexenc_delete(struct duilite_speexenc *speexenc); + +struct duilite_echo; +DUILITE_IMPORT_OR_EXPORT struct duilite_echo * DUILITE_CALL duilite_echo_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_start(struct duilite_echo *echo, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_feed(struct duilite_echo *echo, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_stop(struct duilite_echo *echo); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_cancel(struct duilite_echo *echo); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_echo_delete(struct duilite_echo *echo); + +struct duilite_wakeup; +DUILITE_IMPORT_OR_EXPORT struct duilite_wakeup * DUILITE_CALL duilite_wakeup_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_start(struct duilite_wakeup *wakeup, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_feed(struct duilite_wakeup *wakeup, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_stop(struct duilite_wakeup *wakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_cancel(struct duilite_wakeup *wakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_wakeup_delete(struct duilite_wakeup *wakeup); + +struct duilite_cntts; +DUILITE_IMPORT_OR_EXPORT struct duilite_cntts * DUILITE_CALL duilite_cntts_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_start(struct duilite_cntts *cntts, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_feed(struct duilite_cntts *cntts, char *data); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_set(struct duilite_cntts *cntts, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_cntts_delete(struct duilite_cntts *cntts); + +struct duilite_gram; +DUILITE_IMPORT_OR_EXPORT struct duilite_gram * DUILITE_CALL duilite_gram_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gram_start(struct duilite_gram *gram, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gram_delete(struct duilite_gram *gram); + +struct duilite_asr; +DUILITE_IMPORT_OR_EXPORT struct duilite_asr * DUILITE_CALL duilite_asr_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_start(struct duilite_asr *asr, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_feed(struct duilite_asr *asr, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_stop(struct duilite_asr *asr); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_cancel(struct duilite_asr *asr); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_asr_delete(struct duilite_asr *asr); + +struct duilite_fespa; +DUILITE_IMPORT_OR_EXPORT struct duilite_fespa * DUILITE_CALL duilite_fespa_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_register(struct duilite_fespa *fespa, int callback_type, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_start(struct duilite_fespa *fespa, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_feed(struct duilite_fespa *fespa, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_stop(struct duilite_fespa *fespa); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_set(struct duilite_fespa *fespa, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespa_delete(struct duilite_fespa *fespa); + +struct duilite_fespl; +DUILITE_IMPORT_OR_EXPORT struct duilite_fespl * DUILITE_CALL duilite_fespl_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_register(struct duilite_fespl *fespl, int callback_type, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_start(struct duilite_fespl *fespl, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_feed(struct duilite_fespl *fespl, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_stop(struct duilite_fespl *fespl); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_set(struct duilite_fespl *fespl, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fespl_delete(struct duilite_fespl *fespl); + +struct duilite_fdm; +DUILITE_IMPORT_OR_EXPORT struct duilite_fdm * DUILITE_CALL duilite_fdm_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_start(struct duilite_fdm *fdm, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_set(struct duilite_fdm *fdm, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_get(struct duilite_fdm *fdm, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_feed(struct duilite_fdm *fdm, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_stop(struct duilite_fdm *fdm); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fdm_delete(struct duilite_fdm *fdm); + +struct duilite_nr; +DUILITE_IMPORT_OR_EXPORT struct duilite_nr * DUILITE_CALL duilite_nr_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_start(struct duilite_nr *nr, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_feed(struct duilite_nr *nr, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_stop(struct duilite_nr *nr); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nr_delete(struct duilite_nr *nr); + +struct duilite_vprint; +DUILITE_IMPORT_OR_EXPORT struct duilite_vprint * DUILITE_CALL duilite_vprint_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_start(struct duilite_vprint *vprint, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_feed(struct duilite_vprint *vprint, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_stop(struct duilite_vprint *vprint); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_vprint_delete(struct duilite_vprint *vprint); + +struct duilite_qbye; +DUILITE_IMPORT_OR_EXPORT struct duilite_qbye * DUILITE_CALL duilite_qbye_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_start(struct duilite_qbye *qbye, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_feed(struct duilite_qbye *qbye, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_stop(struct duilite_qbye *qbye); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_qbye_delete(struct duilite_qbye *qbye); + +struct duilite_gender; +DUILITE_IMPORT_OR_EXPORT struct duilite_gender * DUILITE_CALL duilite_gender_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_start(struct duilite_gender *gender, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_feed(struct duilite_gender *gender, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_stop(struct duilite_gender *gender); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_gender_delete(struct duilite_gender *gender); + +struct duilite_semantic; +DUILITE_IMPORT_OR_EXPORT struct duilite_semantic * DUILITE_CALL duilite_semantic_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_start(struct duilite_semantic *semantic, char *param); +//DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_feed(struct duilite_semantic *semantic, char *data, int len); +//DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_stop(struct duilite_semantic *semantic); +//DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_cancel(struct duilite_semantic *semantic); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_semantic_delete(struct duilite_semantic *semantic); + +struct duilite_nwakeup; +DUILITE_IMPORT_OR_EXPORT struct duilite_nwakeup * DUILITE_CALL duilite_nwakeup_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_start(struct duilite_nwakeup *nwakeup, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_feed(struct duilite_nwakeup *nwakeup, int index, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_stop(struct duilite_nwakeup *nwakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_cancel(struct duilite_nwakeup *nwakeup); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_nwakeup_delete(struct duilite_nwakeup *nwakeup); + +struct duilite_dmasp; +DUILITE_IMPORT_OR_EXPORT struct duilite_dmasp * DUILITE_CALL duilite_dmasp_new(char *cfg, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_start(struct duilite_dmasp *dmasp, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_feed(struct duilite_dmasp *dmasp, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_stop(struct duilite_dmasp *dmasp); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_cancel(struct duilite_dmasp *dmasp); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_dmasp_delete(struct duilite_dmasp *dmasp); + +struct duilite_fend; +DUILITE_IMPORT_OR_EXPORT struct duilite_fend * DUILITE_CALL duilite_fend_new(char *cfg); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_register(struct duilite_fend *fend, int callback_type, duilite_callback callback, void *userdata); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_start(struct duilite_fend *fend, char *param); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_feed(struct duilite_fend *fend, char *data, int len); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_stop(struct duilite_fend *fend); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_cancel(struct duilite_fend *fend); +DUILITE_IMPORT_OR_EXPORT int DUILITE_CALL duilite_fend_delete(struct duilite_fend *fend); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/libduilite/4mic/lib/libauth_tina.so b/lib/libduilite/4mic/lib/libauth_tina.so new file mode 100644 index 0000000..1e82e4a Binary files /dev/null and b/lib/libduilite/4mic/lib/libauth_tina.so differ diff --git a/lib/libduilite/4mic/lib/libduilite.so b/lib/libduilite/4mic/lib/libduilite.so new file mode 100644 index 0000000..de27903 Binary files /dev/null and b/lib/libduilite/4mic/lib/libduilite.so differ diff --git a/lib/libduilite/res/auth/aiengine-2.9.5-15205715844583be.provision b/lib/libduilite/4mic/res/auth/aiengine-2.9.5-15205715844583be.provision similarity index 100% rename from lib/libduilite/res/auth/aiengine-2.9.5-15205715844583be.provision rename to lib/libduilite/4mic/res/auth/aiengine-2.9.5-15205715844583be.provision diff --git a/lib/libduilite/4mic/res/fespa/AEC_ch6-2-ch4_1ref_common_20180801_v0.9.4.bin b/lib/libduilite/4mic/res/fespa/AEC_ch6-2-ch4_1ref_common_20180801_v0.9.4.bin new file mode 100644 index 0000000..0a32f3f Binary files /dev/null and b/lib/libduilite/4mic/res/fespa/AEC_ch6-2-ch4_1ref_common_20180801_v0.9.4.bin differ diff --git a/lib/libduilite/4mic/res/fespa/ULA_asr_ch4_2_ch4_35mm_20181206_v1.1.0.8_asrpost0.bin b/lib/libduilite/4mic/res/fespa/ULA_asr_ch4_2_ch4_35mm_20181206_v1.1.0.8_asrpost0.bin new file mode 100644 index 0000000..83eb2b0 Binary files /dev/null and b/lib/libduilite/4mic/res/fespa/ULA_asr_ch4_2_ch4_35mm_20181206_v1.1.0.8_asrpost0.bin differ diff --git a/lib/libduilite/4mic/res/fespa/wakeup_aifar_comm_20180104.bin b/lib/libduilite/4mic/res/fespa/wakeup_aifar_comm_20180104.bin new file mode 100644 index 0000000..758cf9c Binary files /dev/null and b/lib/libduilite/4mic/res/fespa/wakeup_aifar_comm_20180104.bin differ diff --git a/lib/libduilite/4mic/res/vad/vad_aihome_v0.8.bin b/lib/libduilite/4mic/res/vad/vad_aihome_v0.8.bin new file mode 100644 index 0000000..80d1e1e Binary files /dev/null and b/lib/libduilite/4mic/res/vad/vad_aihome_v0.8.bin differ diff --git a/lib/libduilite/lib/include/duilite.h b/lib/libduilite/6mic/lib/duilite.h similarity index 100% rename from lib/libduilite/lib/include/duilite.h rename to lib/libduilite/6mic/lib/duilite.h diff --git a/lib/libduilite/lib/libauth_tina.so b/lib/libduilite/6mic/lib/libauth_tina.so similarity index 100% rename from lib/libduilite/lib/libauth_tina.so rename to lib/libduilite/6mic/lib/libauth_tina.so diff --git a/lib/libduilite/lib/libduilite.so b/lib/libduilite/6mic/lib/libduilite.so similarity index 100% rename from lib/libduilite/lib/libduilite.so rename to lib/libduilite/6mic/lib/libduilite.so diff --git a/lib/libduilite/6mic/res/auth/aiengine-2.9.5-15205715844583be.provision b/lib/libduilite/6mic/res/auth/aiengine-2.9.5-15205715844583be.provision new file mode 100644 index 0000000..fc1f61c --- /dev/null +++ b/lib/libduilite/6mic/res/auth/aiengine-2.9.5-15205715844583be.provision @@ -0,0 +1 @@ +ƝșƚȞɛƙΞəτݑŤݜшݜјݜўэݜшݜћݜььݜьݢ݉ݞݛݗţУОўўќЛݛݒݚݞ̝݂ \ No newline at end of file diff --git a/lib/libduilite/res/fespa/AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin b/lib/libduilite/6mic/res/fespa/AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin similarity index 100% rename from lib/libduilite/res/fespa/AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin rename to lib/libduilite/6mic/res/fespa/AEC_ch8-2-ch6_2ref_NTES_20180413_v0.9.3.bin diff --git a/lib/libduilite/res/fespa/UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin b/lib/libduilite/6mic/res/fespa/UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin similarity index 100% rename from lib/libduilite/res/fespa/UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin rename to lib/libduilite/6mic/res/fespa/UCA_asr_ch8-2-ch6_70mm_netease_20180425_v1.1.9.bin diff --git a/lib/libduilite/res/fespa/wakeup_aihome_ntes_20180817_pre.bin b/lib/libduilite/6mic/res/fespa/wakeup_aihome_ntes_20180817_pre.bin similarity index 100% rename from lib/libduilite/res/fespa/wakeup_aihome_ntes_20180817_pre.bin rename to lib/libduilite/6mic/res/fespa/wakeup_aihome_ntes_20180817_pre.bin diff --git a/lib/libduilite/res/fespa/wakeup_aihome_ntes_20180914_pre.bin b/lib/libduilite/6mic/res/fespa/wakeup_aihome_ntes_20180914_pre.bin similarity index 100% rename from lib/libduilite/res/fespa/wakeup_aihome_ntes_20180914_pre.bin rename to lib/libduilite/6mic/res/fespa/wakeup_aihome_ntes_20180914_pre.bin diff --git a/lib/libduilite/res/vad/vad_aihome_v0.6.bin b/lib/libduilite/6mic/res/vad/vad_aihome_v0.6.bin similarity index 100% rename from lib/libduilite/res/vad/vad_aihome_v0.6.bin rename to lib/libduilite/6mic/res/vad/vad_aihome_v0.6.bin diff --git a/lib/libduilite/Config.in b/lib/libduilite/Config.in new file mode 100644 index 0000000..1aa57a4 --- /dev/null +++ b/lib/libduilite/Config.in @@ -0,0 +1,20 @@ +if PACKAGE_libduilite + +comment "DUILITE SDK Select" + +choice + prompt "Selected Duilite version" + default DUILITE_6MIC + + config DUILITE_6MIC + bool "6 mic version" + + config DUILITE_4MIC + bool "4 mic version" + + config DUILITE_2MIC + bool "2 mic version" + +endchoice + +endif diff --git a/lib/libduilite/Makefile b/lib/libduilite/Makefile index aff6965..549112e 100644 --- a/lib/libduilite/Makefile +++ b/lib/libduilite/Makefile @@ -8,12 +8,32 @@ PKG_BUILD_DIR:=$(COMPILE_DIR)/$(PKG_NAME) include $(BUILD_DIR)/package.mk +define Package/$(PKG_NAME)/config + source "$(SOURCE)/Config.in" +endef + +$(info 6mic=$(CONFIG_DUILITE_6MIC)) +$(info 4mic=$(CONFIG_DUILITE_4MIC)) +$(info 2mic=$(CONFIG_DUILITE_2MIC)) + define Package/$(PKG_NAME) CATEGORY:=Netease SUBMENU:=libs SECTION:=libs TITLE:=Duilife voice library DEPENDS:=+libstdcpp + + ifeq ('$(CONFIG_DUILITE_6MIC)', 'y') + DUILITE_DOCUMENT:=6mic + endif + + ifeq ('$(CONFIG_DUILITE_4MIC)', 'y') + DUILITE_DOCUMENT:=4mic + endif + + ifeq ('$(CONFIG_DUILITE_2MIC)', 'y') + DUILITE_DOCUMENT:=2mic + endif endef define Package/$(PKG_NAME)/description @@ -22,7 +42,7 @@ endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) - $(CP) -d ./lib/* $(PKG_BUILD_DIR)/ + $(CP) -d ./$(DUILITE_DOCUMENT)/lib/* $(PKG_BUILD_DIR)/ endef define Build/Configure @@ -34,16 +54,16 @@ endef define Build/InstallDev $(INSTALL_DIR) $(1)/usr/lib $(INSTALL_DIR) $(1)/usr/include/msc - $(INSTALL_DATA) ./lib/*.so $(1)/usr/lib/ - $(INSTALL_DATA) ./lib/include/*.h $(1)/usr/include/ + $(INSTALL_DATA) ./$(DUILITE_DOCUMENT)/lib/*.so $(1)/usr/lib/ + $(INSTALL_DATA) ./$(DUILITE_DOCUMENT)/lib/*.h $(1)/usr/include/ endef define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/lib - $(INSTALL_DATA) ./lib/*.so $(1)/usr/lib/ + $(INSTALL_DATA) ./${DUILITE_DOCUMENT}/lib/*.so $(1)/usr/lib/ $(INSTALL_DIR) $(1)/usr/share/netease/duilite - $(CP) -d ./res/* $(1)/usr/share/netease/duilite/ + $(CP) -d ./${DUILITE_DOCUMENT}/res/* $(1)/usr/share/netease/duilite/ # $(INSTALL_DATA) ./res/common.jet $(1)/usr/share/netease/ endef