vad参数修改
authorhcj <1224667075@qq.com>
Fri, 21 Nov 2025 03:23:38 +0000 (11:23 +0800)
committerhcj <1224667075@qq.com>
Fri, 21 Nov 2025 03:23:38 +0000 (11:23 +0800)
code/sdk/middleware/services/media/hal/audio/plugins/brandy/primary/primary_sub_port_in.c
code/sdk/zhihui/imsl/src/vad_server.c
code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c

index fe01d1d..116174b 100644 (file)
@@ -199,7 +199,7 @@ static int32_t AIDevOpen(td_handle *aiHandle, enum AudioCategory audioCategory)
 #elif defined(BORAD_N9) || defined(BORAD_W9)
         gain.integer = gain.integer + 10; // 前端mic灵敏度不同可通过此处调增,增加4db增益  默认gain.integer = gain.integer+4
 #elif defined(LEINIAO) 
-        gain.integer = gain.integer -18; // 前端mic灵敏度不同可通过此处调增,增加4db增益  默认gain.integer = gain.integer+4
+        gain.integer = gain.integer -15; // 前端mic灵敏度不同可通过此处调增,增加4db增益  默认gain.integer = gain.integer+4
 #endif
         MEDIA_HAL_DOFUNC_TIME(ret = uapi_ai_set_volume(*aiHandle, &gain));
         CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "uapi_ai_set_volume failed");
index 28e48cd..8fd27ed 100644 (file)
@@ -421,7 +421,7 @@ errcode_t vad_server_init(vad_status_callback_t callback)
     struct VadConfig vad_config = {
         .vad_log_level = 1,                   /* INFO 日志 */
         .sil_threshold = 63,                  /* 静音阈值 */
-        .energy_threshold = 100000,            /* 能量阈值 */
+        .energy_threshold = 80000,            /* 能量阈值 */
         .min_speech_length = 240,             /* 最短语音长度 (ms) */
         .silence_detect_length = 300,         /* 静音检测长度 (ms) */
         .rule1_min_tailing_silence = 480,     /* 规则1静音时间 (ms) */
index 8c6d1d3..c5a303c 100644 (file)
@@ -19,7 +19,7 @@
 #define ENABLE_BINARY_DATA_INTERRUPT_CHECK 1  // 启用二进制数据间隔检查
 
 // 主线程循环间隔时长(毫秒)
-#define LN_WS_MAIN_THREAD_INTERVAL_MS 200
+#define LN_WS_MAIN_THREAD_INTERVAL_MS 500
 
 // 心跳间隔(秒)
 #define LN_WS_HEARTBEAT_INTERVAL_SEC 30  //5分钟发送一次心跳,正常最大7分钟
@@ -137,6 +137,9 @@ static void record_audio_duration(uint32_t duration);
 static bool check_playback_completion_by_duration(void);
 static bool check_playback_completion_by_timeout(void);
 
+static const char story_theme_cache[64]={0};
+
+
 uint16_t send_audio=0;
 
 // 音频聊天相关结构体
@@ -187,7 +190,7 @@ static uint32_t g_audio_timeout_ticks = 1500; // 音频超时tick数(默认1.5
 static uint32_t g_last_binary_data_tick = 0;  // 最后一次接收二进制数据的tick
 
 // 音频数据最近缓存(环形缓冲区,仅保留最近数据)
-#define AUDIO_CACHE_BUFFER_SIZE  1024  // 8KB缓存
+#define AUDIO_CACHE_BUFFER_SIZE  (1024+512)  // 8KB缓存
 static uint8_t g_audio_cache_buffer[AUDIO_CACHE_BUFFER_SIZE];
 static uint32_t g_audio_cache_pos = 0;  // 当前写入位置
 static uint32_t g_audio_cache_total = 0;  // 总写入数据量
@@ -517,6 +520,8 @@ int ln_ws_send_audio_data(const uint8_t *audio_data, uint32_t audio_size, bool f
         LN_WS_ERROR("Invalid audio data parameters\n");
         return -1;
     }
+    // AI_SendAudioDataToQueue(audio_data, audio_size);
+
     
     // ========== VAD 处理:在录音接口层推送 ==========
     // 优势:1. 更上层更清晰  2. 天然只处理录音数据  3. finished即is_last
@@ -1294,6 +1299,10 @@ int ln_ws_send_text(const char *text)
     return uapi_ws_send_text(text);
 }
 
+// int ln_ws_send_random_story_cache(const char *story_theme)
+// {
+
+// }
 /* 发送随机故事请求 */
 int ln_ws_send_random_story_request(const char *story_theme)
 {
@@ -1313,9 +1322,19 @@ int ln_ws_send_random_story_request(const char *story_theme)
         return -1;
     }
     // ln_ws_send_voice_chat_interrupt("故事请求开始");
+
+    // if (g_ws_connected == WS_STATE_RECONNECTING) {
+    //     // 重连中,缓存音频数据
+    //     LN_WS_INFO("Connection reconnecting,ln_ws_send_random_story_request data (%s)\n", story_theme);
+    //     return ln_ws_audio_buffer_add(audio_data, audio_size, finished);
+    // } 
+
+
     
     // 生成聊天ID(使用当前对话ID)
     generate_chat_id(g_audio_chat_ctx.chat_id, sizeof(g_audio_chat_ctx.chat_id));
+    // g_audio_chat_ctx.finish_state = LN_CHAT_SENT_END_NO_REPLY;
+
     // 生成消息ID
     char message_id[128];
     generate_message_id(message_id, sizeof(message_id), g_audio_chat_ctx.chat_id, 1);
@@ -2619,6 +2638,8 @@ static void ln_ws_reconnect_success_callback(void)
     LN_WS_INFO("WebSocket reconnection successful, triggering reconnect success event\n");
     
     g_ws_connected = WS_STATE_CONNECTED;
+
+
     
     LN_WS_INFO("Reconnect success event triggered\n");
 }