audio_recognize res text filter <asr_text>

This commit is contained in:
jhqxxx
2026-04-17 15:46:43 +08:00
parent d91b9767fe
commit 865bc841ad
3 changed files with 10 additions and 5 deletions
+1
View File
@@ -140,6 +140,7 @@ pub fn generate_generic_text<M: InferenceModel>(
} }
input_ids = ctx.prepare_for_next_token(next_token)?; input_ids = ctx.prepare_for_next_token(next_token)?;
} }
model.clear_cache();
let text = tokenizer.token_decode(generated)?; let text = tokenizer.token_decode(generated)?;
Ok(text) Ok(text)
} }
+1 -1
View File
@@ -102,7 +102,7 @@ impl FireRedVad {
Ok(Some(VadFrameResult { Ok(Some(VadFrameResult {
is_speech: true, is_speech: true,
is_i16: 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()), orig_audio: Some(audio_frame.clone()),
kaldi_audio: Some(feats), kaldi_audio: Some(feats),
model_name: self.model_name.clone(), model_name: self.model_name.clone(),
+8 -4
View File
@@ -89,9 +89,9 @@ impl<'a> Qwen3AsrGenerateModel<'a> {
if !vad_res.is_speech || vad_res.orig_audio.is_none() { if !vad_res.is_speech || vad_res.orig_audio.is_none() {
return Ok(AsrResult::init_empty()); return Ok(AsrResult::init_empty());
} }
if vad_res.is_speech_start { // if vad_res.is_speech_start {
self.qwen3_asr.clear_kv_cache(); // self.qwen3_asr.clear_kv_cache();
} // }
let audio_data = let audio_data =
self.processor self.processor
.process_vad_res(&self.default_template, vad_res, &self.tokenizer)?; .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_vec = vec![input_features];
let data = MultiModalData::new(data_vec); let data = MultiModalData::new(data_vec);
let text = generate_generic_text( let mut text = generate_generic_text(
&mut self.qwen3_asr, &mut self.qwen3_asr,
&self.tokenizer, &self.tokenizer,
input_ids, input_ids,
data, data,
&mut ctx, &mut ctx,
)?; )?;
if text.contains("<asr_text>") {
let mut split: Vec<&str> = text.split("<asr_text>").collect();
text = split.pop().unwrap_or(&text).to_string();
}
Ok(AsrResult::init(text)) Ok(AsrResult::init(text))
} }
} }