From 865bc841ad69a743e1f4e8188180b441fe5486ab Mon Sep 17 00:00:00 2001 From: jhqxxx <18280426169@163.com> Date: Fri, 17 Apr 2026 15:46:43 +0800 Subject: [PATCH] audio_recognize res text filter --- src/models/common/generate.rs | 1 + src/models/fire_red_vad/vad.rs | 2 +- src/models/qwen3_asr/generate.rs | 12 ++++++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/models/common/generate.rs b/src/models/common/generate.rs index 6563aa2..7c0ef1b 100644 --- a/src/models/common/generate.rs +++ b/src/models/common/generate.rs @@ -140,6 +140,7 @@ pub fn generate_generic_text( } input_ids = ctx.prepare_for_next_token(next_token)?; } + model.clear_cache(); let text = tokenizer.token_decode(generated)?; Ok(text) } diff --git a/src/models/fire_red_vad/vad.rs b/src/models/fire_red_vad/vad.rs index c90947e..17a9c17 100644 --- a/src/models/fire_red_vad/vad.rs +++ b/src/models/fire_red_vad/vad.rs @@ -102,7 +102,7 @@ impl FireRedVad { Ok(Some(VadFrameResult { is_speech: true, is_i16: true, - is_speech_start: false, // TODO: is start speech, asr to clear cache + is_speech_start: true, // TODO: is start speech, asr to clear cache orig_audio: Some(audio_frame.clone()), kaldi_audio: Some(feats), model_name: self.model_name.clone(), diff --git a/src/models/qwen3_asr/generate.rs b/src/models/qwen3_asr/generate.rs index 2ee1e1e..c6befe3 100644 --- a/src/models/qwen3_asr/generate.rs +++ b/src/models/qwen3_asr/generate.rs @@ -89,9 +89,9 @@ impl<'a> Qwen3AsrGenerateModel<'a> { if !vad_res.is_speech || vad_res.orig_audio.is_none() { return Ok(AsrResult::init_empty()); } - if vad_res.is_speech_start { - self.qwen3_asr.clear_kv_cache(); - } + // if vad_res.is_speech_start { + // self.qwen3_asr.clear_kv_cache(); + // } let audio_data = self.processor .process_vad_res(&self.default_template, vad_res, &self.tokenizer)?; @@ -110,13 +110,17 @@ impl<'a> Qwen3AsrGenerateModel<'a> { ); let data_vec = vec![input_features]; let data = MultiModalData::new(data_vec); - let text = generate_generic_text( + let mut text = generate_generic_text( &mut self.qwen3_asr, &self.tokenizer, input_ids, data, &mut ctx, )?; + if text.contains("") { + let mut split: Vec<&str> = text.split("").collect(); + text = split.pop().unwrap_or(&text).to_string(); + } Ok(AsrResult::init(text)) } }