增加tts打断
authorhcj <1224667075@qq.com>
Fri, 4 Jul 2025 03:44:33 +0000 (11:44 +0800)
committerhcj <1224667075@qq.com>
Fri, 4 Jul 2025 03:44:33 +0000 (11:44 +0800)
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.h

index d8a86f1..5a48951 100644 (file)
@@ -933,21 +933,24 @@ uint8_t uapi_get_tts_break(void)
 
 
 void uapi_UI_start_asr(void)
-{
-    if(bk_websocket_tts_tick!=0)
+{ 
+  
+    if(get_AIStreamend()==1)
     {
-        // uapi_tts_paly_stop();
-        tts_server_deinit();
-        send_msg_data_into_Ai_msg_queue((uint8_t *)"tts_recv_buf",13,201);
+        AIStreamFlush();
 
         tts_break=1;
-        tts_reconnect=1;
-        while (tts_break)
+
+        if(bk_websocket_tts_tick!=0)
         {
-            LOS_Msleep(10);
+            send_msg_data_into_Ai_msg_queue((uint8_t *)"tts_recv_buf",13,201);
+            tts_server_deinit();
+            tts_reconnect=1;
         }
-        LOS_Msleep(50);
+
     }
+    
+   
     asr_need_stop=0;
 
     asr_server_init();
@@ -1694,6 +1697,8 @@ void uapi_start_tts_single(void)
  
  void uapi_start_tts_single_txt(char *buf)
 {
+    
+
     char *jsonString = (char *)malloc(strlen(buf)+300);// [512] ={0};
  
     sprintf(jsonString, " {  \"header\": { \
@@ -1873,6 +1878,7 @@ void bk_websocket_tts(void *data) {
             {
                 if(bk_websocket_tts_tick==0)
                 {
+                    set_AIStreamend(0);
                     bk_websocket_tts_tick = (uint32_t)osKernelGetTickCount();
                 }
                 // tts_cache_file((uint8_t *)tts_recv_buf,len);——
index d978b23..98211d2 100755 (executable)
@@ -1140,6 +1140,7 @@ static void AiDeinitVoiceCallVolteResources(VoiceCallVolteContext *context)
 
 static std::shared_ptr<OHOS::Audio::AudioCapturer> g_audioCap;
 
+uint8_t RunVoiceCallVolteAI_is_ready=0;
 
 static int32_t RunVoiceCallVolteAI(VoiceCallVolteContext *context)
 {
@@ -1182,6 +1183,8 @@ static int32_t RunVoiceCallVolteAI(VoiceCallVolteContext *context)
 
     // g_stream_out_downink->AttachFrontend(asiDownlinkChannelId);
 
+    RunVoiceCallVolteAI_is_ready=1;
+
 
     MediaMutexLock(context->mutex);
     while (!context->isVoiceCallVolteStopped) {
@@ -1189,6 +1192,8 @@ static int32_t RunVoiceCallVolteAI(VoiceCallVolteContext *context)
     }
     MediaMutexUnLock(context->mutex);
 
+    RunVoiceCallVolteAI_is_ready=0;
+
 
     ret = g_stream_out_downink->Stop();
     if (ret != 0) {
@@ -1370,6 +1375,29 @@ void startAudioCaptureTask(void)
     errcode_t ret=uapi_create_osThread_custom(&taskcfg);
 }
 
+int32_t AIStreamFlush(void)
+{
+    if(RunVoiceCallVolteAI_is_ready && g_stream_out_downink)
+    {
+        g_stream_out_downink-> Pause();
+
+        g_stream_out_downink->Flush();
+
+        g_stream_out_downink->Play();
+    }
+    return 0;
+}
+static uint8_t AIStreampaly=0;
+
+uint8_t get_AIStreamend(void)
+{
+    return AIStreampaly;
+}
+
+void set_AIStreamend(uint8_t data)
+{
+    AIStreampaly=data;
+}
 
 
 int32_t AIStreamWrite(uint8_t *buf, uint32_t size)
@@ -1378,6 +1406,7 @@ int32_t AIStreamWrite(uint8_t *buf, uint32_t size)
     if(buf==NULL && size==1)
     {
         MEDIA_ERR_LOG("AIStreamWrite end");
+        AIStreampaly=2;
         uapi_set_tts_break(0);
         return -1;
     }
@@ -1388,16 +1417,26 @@ int32_t AIStreamWrite(uint8_t *buf, uint32_t size)
     }
     
     // 原有流写入逻辑
-    if (g_stream_out_downink)
+    if (g_stream_out_downink && RunVoiceCallVolteAI_is_ready)
     {
     StreamWrite_retry:
 
+        if(uapi_get_tts_break())
+        {
+            return -1;
+        }
+
+        AIStreampaly=1;
+
         uint64_t writeLen = 0;
         AudioRendererConfig renderConfig;
         if (g_stream_out_downink)
         {
             ret = g_stream_out_downink->StreamWrite(buf, size, writeLen, renderConfig);
-            MEDIA_ERR_LOG("StreamWrite writeLen %d\r\n", writeLen);
+            if(writeLen!=0)
+            {
+                MEDIA_ERR_LOG("StreamWrite writeLen %d\r\n", writeLen);
+            }
         }
         else
         {
@@ -1418,7 +1457,7 @@ int32_t AIStreamWrite(uint8_t *buf, uint32_t size)
 
         if (ret < 0)
         {
-            MEDIA_ERR_LOG("StreamWrite failed");
+            // MEDIA_ERR_LOG("StreamWrite failed");
             goto StreamWrite_retry;
         }
     }
index 03f7368..a9173e7 100755 (executable)
@@ -27,6 +27,13 @@ void startAudioCaptureTask(void);
 
 void stop_AudioCaptureProcess_AI(void);
 
+int32_t AIStreamFlush(void);
+
+uint8_t get_AIStreamend(void);
+
+void set_AIStreamend(uint8_t data);
+
+
 #ifdef __cplusplus
 };
 #endif