Skip to content

Commit adbb10d

Browse files
committed
Added segmenter
1 parent fcb85f9 commit adbb10d

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

pkg/whisper/segmenter/segmenter.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ func NewSegmenter(r io.Reader, dur time.Duration, sample_rate int) (*Segmenter,
4343

4444
// Sample buffer is duration * sample rate
4545
if dur > 0 {
46-
segmenter.n = int(dur.Seconds()) * sample_rate
47-
segmenter.buf = make([]float32, 0, int(dur.Seconds())*sample_rate)
46+
segmenter.n = int(dur.Seconds() * float64(sample_rate))
47+
segmenter.buf = make([]float32, 0, segmenter.n)
4848
}
4949

5050
// Open the file
@@ -106,10 +106,10 @@ func (s *Segmenter) Decode(ctx context.Context, fn SegmentFunc) error {
106106
// n != 0 and len(buf) >= n we have a segment to process
107107
if s.n != 0 && len(s.buf) >= s.n {
108108
fn(s.ts, s.buf)
109+
// Increment the timestamp
110+
s.ts += time.Duration(len(s.buf)) * time.Second / time.Duration(s.sample_rate)
109111
// Clear the buffer
110112
s.buf = s.buf[:0]
111-
// Increment the timestamp
112-
s.ts += time.Duration(float64(s.n)/float64(s.sample_rate)) * time.Second
113113
}
114114

115115
// Continue processing

pkg/whisper/segmenter/segmenter_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func Test_segmenter_001(t *testing.T) {
2020
if !assert.NoError(err) {
2121
t.SkipNow()
2222
}
23-
segmenter, err := segmenter.NewSegmenter(f, time.Second, 16000)
23+
segmenter, err := segmenter.NewSegmenter(f, 200*time.Millisecond, 16000)
2424
if !assert.NoError(err) {
2525
t.SkipNow()
2626
}

0 commit comments

Comments
 (0)