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)?;
}
model.clear_cache();
let text = tokenizer.token_decode(generated)?;
Ok(text)
}
+1 -1
View File
@@ -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(),
+8 -4
View File
@@ -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("<asr_text>") {
let mut split: Vec<&str> = text.split("<asr_text>").collect();
text = split.pop().unwrap_or(&text).to_string();
}
Ok(AsrResult::init(text))
}
}