File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed
Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff 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 ( ) ;
You can’t perform that action at this time.
0 commit comments