#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");
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) */
#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分钟
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;
// 音频聊天相关结构体
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; // 总写入数据量
LN_WS_ERROR("Invalid audio data parameters\n");
return -1;
}
+ // AI_SendAudioDataToQueue(audio_data, audio_size);
+
// ========== VAD 处理:在录音接口层推送 ==========
// 优势:1. 更上层更清晰 2. 天然只处理录音数据 3. finished即is_last
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)
{
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);
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");
}