From: hcj <1224667075@qq.com> Date: Fri, 4 Jul 2025 03:44:33 +0000 (+0800) Subject: 增加tts打断 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=4961d7f9d7d0822ac7a78aa3478a3ddede0a09c8;p=mirrors%2FFD230.git 增加tts打断 --- diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp index d8a86f170..5a489512d 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp @@ -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);—— 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 d978b239d..98211d218 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 @@ -1140,6 +1140,7 @@ static void AiDeinitVoiceCallVolteResources(VoiceCallVolteContext *context) static std::shared_ptr 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; } } 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 03f7368af..a9173e787 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,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