.min_speech_length = 240, /* 最短语音长度 (ms) */
.silence_detect_length = 300, /* 静音检测长度 (ms) */
.rule1_min_tailing_silence = 480, /* 规则1静音时间 (ms) */
- .rule2_min_tailing_silence = 960, /* 规则2静音时间 (ms) */
+ .rule2_min_tailing_silence = 600, /* 规则2静音时间 (ms) */
.rule3_min_tailing_silence = 960 /* 规则3静音时间 (ms) */
};
#endif
#include "Ln_Bluetooth_apiC.h"
+#define VAD_TEST_ENABLED 0
+
+#if VAD_TEST_ENABLED
+/* 16 kHz 单声道、由 MIDI 音高序列(C4–E4–G4–C5,120 BPM)合成的 PCM 经 LAME CBR64 编码后的 MP3 裸帧流(无 ID3 / Xing) */
+#include "ln_midi_like_16k_mp3_frames.h"
+#endif
// 功能开关宏定义
#define ENABLE_BINARY_DATA_INTERRUPT_CHECK 1 // 启用二进制数据间隔检查
-#define ENABLE_AUDIO_FILE_WRITE 0 // 启用音频文件写入功能(根据chat_id生成文件)
+#define ENABLE_AUDIO_FILE_WRITE 1 // 启用音频文件写入功能(根据chat_id生成文件)
// 主线程循环间隔时长(毫秒)
#define LN_WS_MAIN_THREAD_INTERVAL_MS 500
} ln_ws_log_level_t;
// 当前日志等级(可通过配置修改)
-static ln_ws_log_level_t g_log_level = LN_WS_LOG_WARN;
+static ln_ws_log_level_t g_log_level = LN_WS_LOG_DEBUG;
void ln_ws_set_log_level(uint8_t level)
{
#define LN_WS_INFO(fmt, ...) LN_WS_LOG(LN_WS_LOG_INFO, __LINE__, fmt, ##__VA_ARGS__)
#define LN_WS_DEBUG(fmt, ...) LN_WS_LOG(LN_WS_LOG_DEBUG, __LINE__, fmt, ##__VA_ARGS__)
+
+
+
+
/*
* - g_ws_client_fd 当前 WebSocket 客户端fd
* - g_ws_connected 连接状态:0=未连接,1=连接中,2=连接成功
}
// 发送JSON字符串
+ #if VAD_TEST_ENABLED
+ int ret = 0;
+ #else
int ret = uapi_ws_send_text(json_string);
+ #endif
LN_WS_DEBUG("Sent audio data: chatId=%s, messageId=%s, size=%u, finished=%s\n",
g_audio_chat_ctx.chat_id, message_id, audio_size, finished ? "true" : "false");
ln_ws_add_to_audio_cache(data, size);
}
}
- LOS_Msleep(10);
+ LOS_Msleep(5);
}
// "audioBase64":
ln_ws_start_vad_cooldown();
}
g_vad_recognition_enabled = false;
+
+#if VAD_TEST_ENABLED
+ for(int i=0; i<LN_MIDI_LIKE_16K_MP3_FRAMES_LEN/1024; i++)
+ {
+ if(i==LN_MIDI_LIKE_16K_MP3_FRAMES_LEN/1024-1)
+ {
+ AI_SendAudioDataToQueue(ln_midi_like_16k_mp3_frames + i*1024, LN_MIDI_LIKE_16K_MP3_FRAMES_LEN%1024);
+ }
+ else
+ {
+ AI_SendAudioDataToQueue(ln_midi_like_16k_mp3_frames + i*1024, 1024);
+ }
+ }
+#endif
LN_WS_INFO("VAD recognition disabled after recording end (status=2)\n");
}
else