Skip to content

Commit bafa0de

Browse files
committed
Merge remote-tracking branch 'origin/main' into docker
2 parents 5dd1f99 + 4d7c01c commit bafa0de

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/services/ws.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,16 @@ async fn get_whisper_asr_text(
397397
ClientMsg::StartChat => {
398398
// start chat
399399
let wav_data = recv_audio_to_wav(audio).await?;
400+
if let Some(vad_url) = &asr.vad_url {
401+
let response =
402+
crate::ai::vad::vad_detect(client, vad_url, wav_data.clone()).await;
403+
404+
let is_speech = response.map(|r| !r.timestamps.is_empty()).unwrap_or(true);
405+
if !is_speech {
406+
log::info!("VAD detected no speech, ignore this audio");
407+
continue;
408+
}
409+
}
400410
std::fs::write(format!("./record/{id}/asr.last.wav"), &wav_data)?;
401411

402412
let st = std::time::Instant::now();
@@ -476,6 +486,17 @@ async fn get_paraformer_v2_text(
476486
}
477487

478488
if let Some(mut asr) = asr.take() {
489+
let wav_data = crate::util::pcm_to_wav(
490+
&samples,
491+
crate::util::WavConfig {
492+
channels: 1,
493+
sample_rate: 16000,
494+
bits_per_sample: 16,
495+
},
496+
);
497+
if let Err(e) = std::fs::write(format!("./record/{id}/asr.last.wav"), &wav_data) {
498+
log::error!("`{id}` error writing asr file {id}: {e}");
499+
};
479500
samples.clear();
480501
asr.finish_task().await?;
481502
let mut text = String::new();

0 commit comments

Comments
 (0)