@@ -55,13 +55,19 @@ impl<S: AsyncSource + Unpin> Stream for ChunkStream<S> {
55
55
if this. buffer . len ( ) >= min_buffer_samples {
56
56
let data = std:: mem:: take ( & mut this. buffer ) ;
57
57
let speech = filter_speech_chunks ( & mut this. vad , data) ;
58
- return Poll :: Ready ( Some ( SamplesBuffer :: new ( 1 , sample_rate, speech) ) ) ;
58
+ if !speech. is_empty ( ) {
59
+ return Poll :: Ready ( Some ( SamplesBuffer :: new ( 1 , sample_rate, speech) ) ) ;
60
+ }
59
61
}
60
62
}
61
63
Poll :: Ready ( None ) if !this. buffer . is_empty ( ) => {
62
64
let data = std:: mem:: take ( & mut this. buffer ) ;
63
65
let speech = filter_speech_chunks ( & mut this. vad , data) ;
64
- return Poll :: Ready ( Some ( SamplesBuffer :: new ( 1 , sample_rate, speech) ) ) ;
66
+ if speech. is_empty ( ) {
67
+ return Poll :: Ready ( None ) ;
68
+ } else {
69
+ return Poll :: Ready ( Some ( SamplesBuffer :: new ( 1 , sample_rate, speech) ) ) ;
70
+ }
65
71
}
66
72
Poll :: Ready ( None ) => return Poll :: Ready ( None ) ,
67
73
Poll :: Pending => return Poll :: Pending ,
@@ -70,7 +76,11 @@ impl<S: AsyncSource + Unpin> Stream for ChunkStream<S> {
70
76
71
77
let data = this. buffer . drain ( 0 ..max_samples) ;
72
78
let speech = filter_speech_chunks ( & mut this. vad , data) ;
73
- Poll :: Ready ( Some ( SamplesBuffer :: new ( 1 , sample_rate, speech) ) )
79
+ if speech. is_empty ( ) {
80
+ Poll :: Pending
81
+ } else {
82
+ Poll :: Ready ( Some ( SamplesBuffer :: new ( 1 , sample_rate, speech) ) )
83
+ }
74
84
}
75
85
}
76
86
0 commit comments