audio_recognize res text filter <asr_text>
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user