From cefc8a4257577b835e5d0f2a3f1e75398fa69002 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Tue, 11 Nov 2025 18:10:12 +0800 Subject: [PATCH] =?utf8?q?lnppp=E7=89=88=E6=9C=ACvad=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdModel.cpp | 2 +- .../config/target_config/brandy/config.py | 2 ++ code/sdk/zhihui/dmp/dmp_dev_authentication.c | 27 ++++++++++++----- code/sdk/zhihui/imsl/CMakeLists.txt | 2 +- code/sdk/zhihui/imsl/src/vad_server.c | 30 +++++++++++++++++++ .../zhihui/leiniao/imsl_ln/ln_api_websocket.c | 1 + 6 files changed, 55 insertions(+), 9 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index 151a06a66..339eca903 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -2506,7 +2506,7 @@ // 录音结束处理函数 void ThunderBirdModel::HandleAudioRecordingEnd() { - return ;//需要vad的时候在处理 + // return ;//需要vad的时候在处理 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioRecordingEnd: 录音结束"); // 获取当前视图状态 diff --git a/code/sdk/build/config/target_config/brandy/config.py b/code/sdk/build/config/target_config/brandy/config.py index ad28455bc..91fd4e84c 100644 --- a/code/sdk/build/config/target_config/brandy/config.py +++ b/code/sdk/build/config/target_config/brandy/config.py @@ -1533,6 +1533,8 @@ target = { #VAD 相关配置 "imsl", "minimp3", + "dmp", + "nativeabilityfwk", "custom_utils", diff --git a/code/sdk/zhihui/dmp/dmp_dev_authentication.c b/code/sdk/zhihui/dmp/dmp_dev_authentication.c index ec04cc572..c2734ab23 100644 --- a/code/sdk/zhihui/dmp/dmp_dev_authentication.c +++ b/code/sdk/zhihui/dmp/dmp_dev_authentication.c @@ -477,10 +477,17 @@ bool dmp_aut_active(void)//设备激活 if(ret==200) { dmp_read_dev_pass_save(out_buf); + cJSON_free(json_string); + return true; } + else + { + cJSON_free(json_string); + return false; - cJSON_free(json_string); - return true; + } + + } @@ -495,16 +502,22 @@ bool dmp_aut_login(void)//登录 time_t timestamp; timestamp = time(NULL); - if(timestamp - aut_login_time < 60 * 60 ) - { - return true; - } - char dev_pass[64]={0}; // 若内存中无 data_pass,则尝试从配置中加载 if (strlen(data_pass) == 0) { (void)cm_get_dmp_data_pass(data_pass, sizeof(data_pass)); } + if(strlen(data_pass) == 0) + { + if(dmp_aut_active())//设备激活 + { + (void)cm_get_dmp_data_pass(data_pass, sizeof(data_pass)); + } + else + { + return false; + } + } memcpy(dev_pass, data_pass, strlen(data_pass)); printf("dev_sign_in 2"); int count = 5; diff --git a/code/sdk/zhihui/imsl/CMakeLists.txt b/code/sdk/zhihui/imsl/CMakeLists.txt index 215df740b..d5521d382 100644 --- a/code/sdk/zhihui/imsl/CMakeLists.txt +++ b/code/sdk/zhihui/imsl/CMakeLists.txt @@ -20,7 +20,7 @@ set(PUBLIC_HEADER # 公共宏定义(可选) set(PUBLIC_DEFINES # 例如:IMSL_LN_ENABLE=1 - ENABLE_VAD_SERVER=0 + ENABLE_VAD_SERVER=1 ) # 根据 MINI_MP3 宏添加 MP3 解码支持 diff --git a/code/sdk/zhihui/imsl/src/vad_server.c b/code/sdk/zhihui/imsl/src/vad_server.c index 1b5e272cb..a9ef0ddca 100644 --- a/code/sdk/zhihui/imsl/src/vad_server.c +++ b/code/sdk/zhihui/imsl/src/vad_server.c @@ -127,6 +127,7 @@ static void vad_mp3_pcm_callback(const int16_t *pcm_data, int samples, int chann } #endif +static uint8_t dmp_auth=0; /** * @brief 处理 PCM 数据,直接送给 VAD(简化版) * @note VAD 库支持可变长度输入(推荐 < 100ms),无需固定切分 @@ -140,6 +141,35 @@ static errcode_t vad_process_pcm_data(const int16_t *pcm_data, size_t sample_cou } pcm_call_count++; + + LOGIN_SUCC: + + if(dmp_auth==0) + { + char dmp_token[64]; + if(dmp_read_dev_token(dmp_token)) + { + struct AuthInfo auth_info; + strcpy(auth_info.dmp_token, dmp_token); + int ret =auth_vad(&auth_info); + printf("vad_process_pcm_data %d\r\n",ret); + dmp_auth=1; + } + else + { + if(dmp_aut_login()) + { + goto LOGIN_SUCC; + } + else + { + return ERRCODE_FAIL; + } + } + } + + + /* 检查数据长度是否合理(VAD 推荐 < 100ms)*/ const size_t MAX_SAMPLES_PER_CALL = 1600; // 100ms @ 16kHz diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c index d3d362d21..8c5152815 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c @@ -857,6 +857,7 @@ static void ai_binary_message_handler(const uint8_t *raw_data, uint32_t timestam // 记录接收数据的时间 g_last_binary_data_tick = osKernelGetTickCount(); + g_vad_cooldown_active = false; if (!is_chat_id_matched() && g_audio_playback_active) { LN_WS_WARN("Chat ID not matched\n"); -- 2.17.1