From d0b0ddca6e769051c79826953bc628c0ea462a52 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Sat, 5 Jul 2025 19:33:07 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=BC=BA=E5=88=B6?= =?utf8?q?=E6=89=A7=E8=A1=8C=E6=89=93=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../slip/cat1Service/cat1_at_cmd.cpp | 4 +- .../peripheral/slip/cat1Service/cat1_ws.cpp | 106 +++++++++++++----- .../peripheral/slip/cat1Service/cat1_ws.h | 3 +- .../voice_call_volte_sample_wrapper.cpp | 4 +- .../wrapper/voice_call_volte_sample_wrapper.h | 2 +- 5 files changed, 85 insertions(+), 34 deletions(-) diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_at_cmd.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_at_cmd.cpp index 5391356b2..d184439c0 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_at_cmd.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_at_cmd.cpp @@ -465,7 +465,7 @@ static uint32_t wstest(uint8_t *para, uint32_t paraLen, char *strCommonCmd) return 0; } -extern void send_ai_txt(uint8_t type,char *msg); +extern bool send_ai_txt(uint8_t type,char *msg); static uint32_t ai_msg(uint8_t *para, uint32_t paraLen, char *strCommonCmd) { @@ -689,7 +689,7 @@ static const at_cmd_table_t g_cat1_cmd[] = { { (char *)"AT^STARTTTS", starttts, (char *)"1" }, { (char *)"AT^SENDTTTS", sendttstxt, (char *)"1" }, { (char *)"AT^STOPTEST", stopwstest, (char *)"1" }, - + }; at_cmd_table_t *get_cat1_cmd_table(uint32_t *cmd_count) diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp index 869db83e4..4da61b191 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp @@ -931,26 +931,26 @@ uint8_t uapi_get_tts_break(void) return tts_break; } +char result_str_asr[256]={0}; + void uapi_UI_start_asr(void) { - - if(get_AIStreamend()==1) - { - AIStreamFlush(); + memset_s(result_str_asr,256,0,256); - tts_break=1; + // uapi_stop_tts(); - if(bk_websocket_tts_tick!=0) - { - send_msg_data_into_Ai_msg_queue((uint8_t *)"tts_recv_buf",13,201); - tts_server_deinit(); - tts_reconnect=1; - } + tts_break=1; + tts_server_deinit(); + tts_reconnect=1; - } + AIStreamFlush(); + send_msg_data_into_Ai_msg_queue((uint8_t *)"tts_recv_buf",13,201); + + + asr_need_stop=0; asr_server_init(); @@ -963,7 +963,7 @@ void uapi_UI_start_asr(void) { tts_server_init(); } - + } @@ -975,19 +975,27 @@ void uapi_UI_stop_start_asr_timeout(void) void uapi_UI_stop_asr(void) { - stop_AudioCaptureProcess_AI(); + if(stop_AudioCaptureProcess_AI()) + { + // if(strlen(result_str_asr)) + // { + // send_ai_txt(0,result_str_asr); + // memset_s(result_str_asr,256,0,256); + // } + + } } -void send_ai_txt(uint8_t type,char *msg) +bool send_ai_txt(uint8_t type,char *msg) { cJSON* dataJSON = cJSON_CreateObject(); if (dataJSON == NULL) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Error creating JSON object\n"); - return; + return false; } @@ -1000,7 +1008,7 @@ void send_ai_txt(uint8_t type,char *msg) if (jsonString == NULL) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Error printing JSON to string\n"); cJSON_Delete(dataJSON); - return; + return false; } uint32_t data_len = strlen(jsonString); @@ -1008,21 +1016,29 @@ void send_ai_txt(uint8_t type,char *msg) if (data_len == 0) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Error: JSON string length is 0\n"); - return; + cJSON_free(jsonString); + return false; } if (send_websocket_message(chat_client,( uint8_t *)jsonString,strlen(jsonString),WS_TEXT)==0) +{ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"send_websocket_message succ 0\n"); + cJSON_free(jsonString); + return true; + } + else { if(chat_client==NULL) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"chat_client is NULL\n"); } + cJSON_free(jsonString); + return false; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"send_websocket_message fail\n"); } - cJSON_free(jsonString); + } @@ -1355,7 +1371,7 @@ void asr_record_test(void) } - char result_str_asr[256]={0}; + uint8_t asr_is_start=0; bool aer_result_analysis(char *buf) @@ -1410,9 +1426,9 @@ bool aer_result_analysis(char *buf) SendMsgToUIService(UI_AI_JUMP_TO_RESULT_VIEW, 0, nullptr, 0);//先跳转到结果界面 ble_set_ai_Question_str(result_str_asr); - stop_AudioCaptureProcess_AI(); + // stop_AudioCaptureProcess_AI(); send_ai_txt(0,result_str_asr); - + } if(strcmp(event_str,"TranscriptionStarted")==0) //可以对话了,切换到聆听界面 { @@ -1665,9 +1681,9 @@ void uapi_start_tts(void) \"trace_id\": \"3fa6b9e6a30b407ea38ad7ae69e6c291\"},\ \"payload\": \ {\"voice\":\"xiaoyun\",\ - \"format\":\"pcm\",\ + \"format\":\"mp3\",\ \"sample_rate\":16000,\ - \"volume\":50,\ + \"volume\":80,\ \"speech_rate\":0}\ }"; @@ -1676,6 +1692,26 @@ void uapi_start_tts(void) if (send_websocket_message(tts_client,( uint8_t *)jsonString,strlen(jsonString),WS_TEXT)==0) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"send_websocket_message succ 0\n"); } + + +void uapi_stop_tts(void) +{ + char *jsonString = + " { \ + \"header \": { \ + \"event\": \"StopSynthesis\", \ + \"trace_id\": \" 3fa6b9e6a30b407ea38ad7ae69e6c291 \" \ + } \ + } "; + + printf("uapi_start_tts : %s\r\n",jsonString); + + if (send_websocket_message(tts_client,( uint8_t *)jsonString,strlen(jsonString),WS_TEXT)==0) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"send_websocket_message succ 0\n"); +} + + + void uapi_start_tts_single(void) { char *jsonString = @@ -1706,7 +1742,17 @@ void uapi_start_tts_single(void) char *jsonString = (char *)malloc(strlen(buf)+300);// [512] ={0}; - sprintf(jsonString, " { \"header\": { \ + sprintf(jsonString, + + // " {\" header\" : { \ + // \"event\": \" RunSynthesis\", \ + // \"trace_id \": \" 3fa6b9e6a30b407ea38ad7ae69e6c291 \" \ + // }, \ + // \"payload \": { \ + // \"text \":\" %s \" \ + // }}" + + " { \"header\": { \ \"event\": \"LongTextStream\", \ \"trace_id\": \"3fa6b9e6a30b407ea38ad7ae69e6c291\"\ },\ @@ -1717,7 +1763,9 @@ void uapi_start_tts_single(void) \"volume\":80,\ \"speech_rate\":0,\ \"text\":\"%s\"\ - } } ",buf); + } } " + + ,buf); printf("uapi_start_tts : %s\r\n",jsonString); @@ -1859,7 +1907,7 @@ void bk_websocket_tts(void *data) { // uapi_start_asr(); // uapi_start_tts_single_txt("2025英超夏季转会窗分阶段开启第一阶段2025年6月1日至2025年6月11日凌晨2:00北京时间第二阶段常规夏窗2025年6月16日至2025年9月2日凌晨2:00北京时间本贴将持续更新2025年夏窗以曼联转会相关为主的新闻和消息。"); } - + tts_break=0; // uapi_start_tts_single(); char* tts_recv_buf=(char *)malloc(1024*4); @@ -1902,11 +1950,11 @@ void bk_websocket_tts(void *data) { bk_websocket_tts_tick=0; // tts_paly(); } - // aer_result_analysis(asr_recv_buf); - } + bk_websocket_tts_tick=0; + set_ai_tts_server_init_flag(0); lwip_close_websocket_client(tts_client); diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.h b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.h index 003903174..4991e3201 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.h +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.h @@ -40,10 +40,11 @@ void uapi_start_asr_task(void); void asr_record_test(void); -void send_ai_bin(uint8_t *buf,uint32_t len); +bool send_ai_txt(uint8_t type,char *msg); void uapi_start_asr(void); +void uapi_stop_tts(void); diff --git a/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.cpp b/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.cpp index a87b229bd..141a5c2d3 100755 --- a/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.cpp +++ b/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.cpp @@ -1247,12 +1247,14 @@ uint8_t g_sample_needStop=0; uint8_t AudioCaptureTask_is_run=0; -void stop_AudioCaptureProcess_AI(void) +uint8_t stop_AudioCaptureProcess_AI(void) { if(AudioCaptureTask_is_run) { g_sample_needStop=1; +return 1; } +return 0; } diff --git a/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.h b/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.h index 4d3998551..459b9754d 100755 --- a/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.h +++ b/code/sdk/middleware/services/media/foundation/sample/wrapper/voice_call_volte_sample_wrapper.h @@ -27,7 +27,7 @@ AudioSession get_ai_g_sessionId(void); void startAudioCaptureTask(void); -void stop_AudioCaptureProcess_AI(void); +uint8_t stop_AudioCaptureProcess_AI(void); int32_t AIStreamFlush(void); -- 2.17.1