优化tts播放
authorluozheng <1732036298@qq.com>
Fri, 11 Jul 2025 01:46:49 +0000 (09:46 +0800)
committerluozheng <1732036298@qq.com>
Fri, 11 Jul 2025 01:46:49 +0000 (09:46 +0800)
code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModelC.h
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp

index be87d50..c74b0be 100644 (file)
@@ -10,6 +10,8 @@ extern "C"
 #include <stdint.h>
 
     uint8_t getselect4gorbtai(void);
+    uint8_t get_clear_queue_stream(void);
+    void set_clear_queue_stream(uint8_t);
 
 #ifdef __cplusplus
 #if __cplusplus
index 286d861..934f9c4 100644 (file)
@@ -1803,6 +1803,18 @@ extern "C"
         return 0;
     }
 
+    static uint8_t clear_queue_stream = 0;
+    uint8_t get_clear_queue_stream(void)
+    {
+        return clear_queue_stream;
+    }
+
+    // 清空队列中可能存在的音频数据
+    void set_clear_queue_stream(uint8_t state)
+    {
+        clear_queue_stream = state;
+    }
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 852d99f..c0690d6 100644 (file)
@@ -38,6 +38,7 @@ namespace OHOS
 #include "pm.h"
 #include "pm_veto.h"
 #include <asm/delay.h>
+#include <aivoice/include/AiVoiceModelC.h>
 
         void remove_4GAI_vote(void)
         {
@@ -405,7 +406,8 @@ namespace OHOS
                 if (model->GetSelect4gorbt() == AI_SELECT_4G)
                 {
                     AiVoiceModel::GetInstance().stop_ai4g_tts_play_timer();
-                    usleep(50000);
+                    // usleep(50000);
+                    LOS_Msleep(50);
                     uapi_UI_start_asr();
                     ChangeViewAndLogicOperator(AIVOICE_RETURN_RESULT_TEXT_VIEWID, AIVOICE_AIMODE_CONNECTING);
                     return true;
@@ -422,8 +424,10 @@ namespace OHOS
                 {
                     AiVoiceModel::GetInstance().stop_ai4g_tts_play_timer();
                     // model->cancel_tts_play();
+                    set_clear_queue_stream(1);
+                    // usleep(50000);
+                    LOS_Msleep(50);
                     dinit_ai_task();
-                    usleep(50000);
                 }
             }
             ChangeViewAndLogicOperator(it->second.first, it->second.second);
index 12e926e..4ba80ef 100644 (file)
@@ -2447,6 +2447,24 @@ static void blesrvAi_send_service_task(void const *arg)
 \r
         if(getselect4gorbtai() == 1) //选择的是4g\r
         {\r
+            if(get_clear_queue_stream())\r
+            {\r
+                // osal_msg_queue_write_head_copy(g_ble_Ai_record_queue, (void *)&mail,sizeof(blesrv_custom_cmd_t), 0);\r
+                int quesize = osal_msg_queue_get_msg_num(g_ble_Ai_record_queue);\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"do_uart_slip_cmd quesize %d\n",quesize);\r
+                while(quesize)\r
+                {\r
+                    osal_msg_queue_read_copy(g_ble_Ai_record_queue, (void *)&mail, &msgsize,\r
+                                        OSAL_MSGQ_WAIT_FOREVER);\r
+                    if(mail.msg_data)\r
+                    {\r
+                        free(mail.msg_data);\r
+                        mail.msg_data = NULL;\r
+                    }\r
+                    quesize--;\r
+                }\r
+                set_clear_queue_stream(0);\r
+            }\r
             if(mail.msg_data && mail.msg_len!=0)\r
             {\r
                 if(server_handle == 200 ||server_handle == 201 )\r
index 4ad6867..048ee9a 100644 (file)
@@ -1226,6 +1226,7 @@ void bk_websocket_demo(void *data) {
 #include "soc_osal.h"
 #include "common_def.h"
 #include "los_printf.h"
+#include <aivoice/include/AiVoiceModelC.h>
 
 #define CAT1_SERVICE_TASK_SIZE       (2048)
 #define CAT1_SERVICE_TASK_PRIO       5
@@ -1966,6 +1967,7 @@ void bk_websocket_tts(void *data) {
         {   
             if(disconnect_server==0)
             {
+                set_clear_queue_stream(1);
                 goto TTS_SATRT;
             }
             tts_reconnect=0;