修改使用九天模型,增加语音打断
authorhcj <1224667075@qq.com>
Mon, 30 Jun 2025 09:23:58 +0000 (17:23 +0800)
committerhcj <1224667075@qq.com>
Mon, 30 Jun 2025 09:23:58 +0000 (17:23 +0800)
code/sdk/drivers/peripheral/slip/asio.c
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.cpp

index 24810bd..4b7719b 100644 (file)
@@ -187,7 +187,8 @@ void sio_send(u8_t c, sio_fd_t fd)
 {
        slip_send_buffer.buffer[slip_send_buffer.len] = c;
        slip_send_buffer.len += 1;
-       if( slip_send_buffer.len >= (SLIP_UART_SEND_BUFFER_MAX) ) {
+       // if( slip_send_buffer.len >= (SLIP_UART_SEND_BUFFER_MAX) ) 
+       if( slip_send_buffer.len >= (SLIP_UART_SEND_BUFFER_MAX) || c == SLIP_END) {
                //printf("send2 data len = %d\n", slip_send_buffer.len);
                // uart_write_bytes(UART_NUM_0, (const char *)slip_send_buffer.buffer, slip_send_buffer.len);
                slip_uart_write((const char *)slip_send_buffer.buffer, slip_send_buffer.len);
index f53db39..02fcf6a 100644 (file)
@@ -892,7 +892,7 @@ void send_ai_txt(uint8_t type,char *msg)
     }
     
    
-    cJSON_AddStringToObject(dataJSON,"type","chat");
+    cJSON_AddStringToObject(dataJSON,"type","jiutian-lan");
 
     cJSON_AddStringToObject(dataJSON,"content",msg);
 
@@ -978,7 +978,7 @@ bool chat_ws_url_init(char * put_buf)
     char token[64]={0};
     if(read_dev_token(token))
     {
-        sprintf(put_buf,"ws://amp.raisound.com/chat/ws?dt=%s&platform=huoshan",token);
+        sprintf(put_buf,"ws://amp.raisound.com/chat/ws?dt=%s&platform=chinamobiledevice&bot_type=jiutian-lan",token);
         return true;
     }
     else
@@ -995,7 +995,7 @@ static uint8_t ai_tts_server_init_flag   = 0;   //tts初始化标志
 // 获取ASR服务初始化标志
 uint8_t get_ai_asr_service_init_flag(void)
 {
-    return 1;
+    return true;
 }
 
 // 设置ASR服务初始化标志
@@ -1034,26 +1034,26 @@ void bk_websocket_demo(void *data) {
     /* code */
         is_bk_websocket_chat=1;
 
-        // char url_buf[124]={0};
-        // if(chat_ws_url_init(url_buf))
-        // {
-        //     printf("%s\r\n",url_buf);
-        // }
-        // else
-        // {
-        //     is_bk_websocket_chat=0;
-        //     return;
-        // }
+        char url_buf[124]={0};
+        if(chat_ws_url_init(url_buf))
+        {
+            printf("%s\r\n",url_buf);
+        }
+        else
+        {
+            is_bk_websocket_chat=0;
+        return;
+        }
         uint8_t client_count=3;
 
         while (client_count)
         {
             // http://118.145.158.207:22080ws://118.145.158.207:22080/chat/ws
-            chat_client = init_websocket_client("ws://118.145.158.207:22080/chat/ws",NULL,0);
+            chat_client = init_websocket_client(url_buf,NULL,1);
 
             if (chat_client== NULL) {
             client_count--;
-bk_sleep(1000);
+            bk_sleep(1000);
             continue ;
             }
             else
@@ -1150,11 +1150,22 @@ int32_t uapi_tts_paly_init(void);
 
 int32_t uapi_tts_paly_stop(void);
 
+uint32_t bk_websocket_tts_tick=0;
+
+uint8_t tts_reconnect=0;
+
+void tts_server_deinit(void);
 
 
 void uapi_UI_start_asr(void)
 {
     asr_server_init();
+
+    if(bk_websocket_tts_tick!=0)
+    {
+        tts_server_deinit();
+        tts_reconnect=1;
+    }
 }
 
 void uapi_UI_stop_asr(void)
@@ -1236,7 +1247,7 @@ void send_ai_bin(char *buf,uint32_t len)
     if (send_websocket_message(asr_client,( const unsigned char *)buf,len,WS_BINARY)==0)
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"send_websocket_message succ 0\n");
-        bk_sleep(300);
+        bk_sleep(100);
     }
     else
     {
@@ -1749,12 +1760,13 @@ void tts_paly()
 }
 
 uint8_t  is_bk_websocket_tts=0;
-uint32_t bk_websocket_tts_tick=0;
+
 
 
 void bk_websocket_tts(void *data) {
   
     // while (1)
+    TTS_SATRT :
     uapi_cat1_keep_wakeup(1);
 
     WebSocketMessageType type;
@@ -1841,7 +1853,7 @@ void bk_websocket_tts(void *data) {
                 bk_sleep(1);
                 printf("bk_websocket_demo %d\n",len);
             }
-            else
+            else if(type==WS_TEXT)
             {
                 printf("bk_websocket_demo %s %d %d\n",tts_recv_buf,bk_websocket_tts_tick,(uint32_t)osKernelGetTickCount());
                 bk_websocket_tts_tick=0;
@@ -1856,6 +1868,15 @@ void bk_websocket_tts(void *data) {
 
         lwip_close_websocket_client(tts_client);
         tts_client=NULL;
+
+        if(tts_reconnect)
+        {   
+            if(disconnect_server==0)
+            {
+                goto TTS_SATRT;
+            }
+            tts_reconnect=0;
+        }
         // return;
     }
       is_bk_websocket_tts=0;
@@ -1985,7 +2006,7 @@ bool init_ai_task(void)
         if (g_timer_time_sync == NULL)
         {
               WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"g_timer_time_sync create failed\n");
-}
+        }
       
 
     
index 6ce130d..730668c 100755 (executable)
@@ -1251,7 +1251,7 @@ void stop_AudioCaptureProcess_AI(void)
    
 }
 
-static void* AudioCaptureProcess_AI(void* arg)
+static void AudioCaptureProcess_AI(void* arg)
 {
     MEDIA_ERR_LOG("AudioCaptureProcess_AI");
 
@@ -1275,7 +1275,7 @@ static void* AudioCaptureProcess_AI(void* arg)
     ret = g_stream_in_uplink->Start();
     if (ret != 0) {
         MEDIA_ERR_LOG("audio stream out downink play failed");
-        return NULL;
+        return ;
 
     }
     MEDIA_ERR_LOG("g_stream_in_uplink->Start");
@@ -1284,7 +1284,7 @@ static void* AudioCaptureProcess_AI(void* arg)
     if(data_buf == NULL)
     {
         MEDIA_ERR_LOG("malloc");
-        return NULL;
+        return ;
     }
 
     AudioCaptureTask_is_run=1;
@@ -1309,7 +1309,7 @@ static void* AudioCaptureProcess_AI(void* arg)
             record_size+=readlen;
 
             fwrite(data_buf,1,readlen,fp);
-            if(record_size>=1024*20)
+            if(record_size>=1024*40)
             {
                 g_sample_needStop=1;
             }
@@ -1341,9 +1341,10 @@ static void* AudioCaptureProcess_AI(void* arg)
 
     MEDIA_INFO_LOG("AudioCaptureProcess end");
     AudioCaptureTask_is_run=0;
-    return NULL;
+    return ;
 }
-
+#include "thread_init.h"
+#include "custom_utils.h"
 
 void startAudioCaptureTask(void)
 {
@@ -1352,8 +1353,21 @@ void startAudioCaptureTask(void)
         MEDIA_ERR_LOG("AudioCaptureTask_is_run  %d",AudioCaptureTask_is_run);
         return;
     }   
-    MediaThreadattr attr = { "AudioCaptureTask", 0x1000, THREAD_SCHED_INVALID, 0, true };
-    MediaThreadCreate(AudioCaptureProcess_AI, NULL, &attr);
+    // MediaThreadattr attr = { "AudioCaptureTask", 0x1000, THREAD_SCHED_INVALID, 0, true };
+    // MediaThreadCreate(AudioCaptureProcess_AI, NULL, &attr);
+
+
+    MEDIA_ERR_LOG("startAudioCaptureTask !\r\n");
+
+    app_task_definition_t taskcfg;
+    taskcfg.create_queue_handle = NULL;
+    taskcfg.attr.name="AudioCaptureTask";
+    taskcfg.attr.priority = TASK_PRIORITY_APP;
+    taskcfg.attr.stack_size = 0x1000;
+    taskcfg.func = AudioCaptureProcess_AI;
+    taskcfg.use_mem = USE_EXTEND_MEM;
+  
+    errcode_t ret=uapi_create_osThread_custom(&taskcfg);
 }