@@ -423,11 +423,16 @@ impl ParaformerASRSession {
423423 let mut recv_audio_bytes = 0 ;
424424
425425 loop {
426- let client_fut = session. client_rx . recv ( ) ;
427- let asr_fut = self . next_result ( ) ;
428- let r = tokio:: select! {
429- asr = asr_fut => SelectResult :: AsrResult ( asr) ,
430- chunk = client_fut => SelectResult :: ClientMsg ( chunk) ,
426+ let r = if start_submit {
427+ let client_fut = session. client_rx . recv ( ) ;
428+ let asr_fut = self . next_result ( ) ;
429+ tokio:: select! {
430+ asr = asr_fut => SelectResult :: AsrResult ( asr) ,
431+ chunk = client_fut => SelectResult :: ClientMsg ( chunk) ,
432+ }
433+ } else {
434+ let chunk = session. client_rx . recv ( ) . await ;
435+ SelectResult :: ClientMsg ( chunk)
431436 } ;
432437
433438 match r {
@@ -563,26 +568,27 @@ impl ParaformerASRSession {
563568 }
564569 }
565570
566- let _ = self . finish_task ( ) . await . map_err ( |e| {
567- log:: warn!( "`{}` error finishing paraformer asr task: {e}" , session. id) ;
568- } ) ;
571+ if start_submit {
572+ let _ = self . finish_task ( ) . await . map_err ( |e| {
573+ log:: warn!( "`{}` error finishing paraformer asr task: {e}" , session. id) ;
574+ } ) ;
569575
570- loop {
571- if let Ok ( Some ( sentence) ) = self . next_result ( ) . await {
572- if sentence. sentence_end {
573- log:: info!(
574- "`{}` paraformer ASR final result after finish: {:?}" ,
575- session. id,
576- sentence. text
577- ) ;
578- asr_text += & sentence. text ;
576+ loop {
577+ if let Ok ( Some ( sentence) ) = self . next_result ( ) . await {
578+ if sentence. sentence_end {
579+ log:: info!(
580+ "`{}` paraformer ASR final result after finish: {:?}" ,
581+ session. id,
582+ sentence. text
583+ ) ;
584+ asr_text += & sentence. text ;
585+ break ;
586+ }
587+ } else {
579588 break ;
580589 }
581- } else {
582- break ;
583590 }
584591 }
585-
586592 session. send_end_vad ( ) ?;
587593 Ok ( asr_text)
588594 }
0 commit comments