// 发送失败,等待下次发送
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送失败,等待下次发送,fouce_count:%d",fouce_count);
fouce_count++;
- if (fouce_count >= 3)
+ if (fouce_count >= 3 && !hasTtsStartSucceeded)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送失败准备发送:uapi_start_tts");
- uapi_start_tts();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送失败准备发送:uapi_start_tts有且只发一次");
+ bool startOk = uapi_start_tts();
fouce_count = 0;
+ if (startOk)
+ {
+ hasTtsStartSucceeded = true;
+ }
}
}
}
// 发送失败,等待下次发送
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送失败,等待下次发送,fouce_count:%d",fouce_count);
fouce_count++;
- if (fouce_count >= 3)
+ if (fouce_count >= 3 && !hasTtsStartSucceeded)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送失败准备发送:uapi_start_tts");
- uapi_start_tts();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送失败准备发送:uapi_start_tts有且只发一次");
+ bool startOk = uapi_start_tts();
fouce_count = 0;
+ if (startOk)
+ {
+ hasTtsStartSucceeded = true;
+ }
}
}
}
static uint8_t tts_record_flag = 0;
// 添加一个静态变量用于跟踪连续出现0的次数
static int s_tts_tick_zero_count = 0;
- static int continue_zero_count = 0; // 静态变量:记录连续为0的次数(初始化为0)
static void AI4G_IS_START_TTS_CallbackProc(int data)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AI4G_IS_START_TTS_CallbackProc:%s", AiVoiceModel::GetInstance().GetAccumulatedText().c_str());
// 无文本时停止定时器
if (AiVoiceModel::GetInstance().GetAccumulatedText().empty())
{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "没有文本了准备发送:stop_ai4g_tts_play_timer");
AiVoiceModel::GetInstance().stop_ai4g_tts_play_timer();
return;
}
{
AiVoiceModel::GetInstance().ProcessTextByPunctuation();
}
-
-#if 0
- // 当前回调中get_bk_websocket_tts_tick()是否为0
- bool current_tick_zero = (get_bk_websocket_tts_tick() == 0);
-
- // 更新连续为0的次数
- if (current_tick_zero)
- {
- continue_zero_count++; // 本次为0,计数+1
- }
- else
- {
- continue_zero_count = 0; // 本次不为0,计数重置为0
- }
-
- // 核心逻辑:连续0中,奇数次(1、3、5...)发送,偶数次(2、4、6...)跳过
- if (current_tick_zero)
- {
- if (continue_zero_count % 2 == 1) // 奇数次(第1、3、5...次):发送
- {
- if (!get_ai_osal_msg_queue_is_full())
- {
- AiVoiceModel::GetInstance().ProcessTextByPunctuation();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "发送TTS文本(连续第%d次为0,奇数次)", continue_zero_count);
- fouce_count = 0;
- }
- }
- else // 偶数次(第2、4、6...次):跳过
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "连续第%d次为0,偶数次,本次不发送", continue_zero_count);
- }
- }
- else
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "get_bk_websocket_tts_tick:%d(不满足发送条件)", get_bk_websocket_tts_tick());
- fouce_count++;
- if (fouce_count >= 20)
- {
- if (!get_ai_osal_msg_queue_is_full())
- {
- AiVoiceModel::GetInstance().ProcessTextByPunctuation();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "强行发送fouce_count:%d", fouce_count);
- fouce_count = 0;
- }
- }
- }
-#endif
return;
}
g_ai4g_is_start_tts_play_Handle = nullptr;
AI4G_IS_START_TTS_PLAY_CNT = NUMBER_TEN;
s_tts_tick_zero_count = 0; // 重置计数器
- continue_zero_count = 0; // 重置静态变量
fouce_count = 0;
start_uapi_stop_tts_timer();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret);
}
g_uapi_stop_tts_Handle = nullptr;
- uapi_stop_tts();
- // uapi_UI_start_asr(1);
+ if (g_ai4g_is_start_tts_play_Handle == nullptr)
+ {
+ hasTtsStartSucceeded = false;
+ uapi_stop_tts();
+ }
}
}