Class: Itak::VAD

Inherits:
Object
  • Object
show all
Defined in:
lib/itak/vad.rb

Instance Method Summary collapse

Constructor Details

#initialize(model: "silero-v6.2.0") ⇒ VAD

Returns a new instance of VAD.



8
9
10
# File 'lib/itak/vad.rb', line 8

def initialize(model: "silero-v6.2.0")
  @model = model
end

Instance Method Details

#run(src, dest, params: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/itak/vad.rb', line 12

def run(src, dest, params: nil)
  src = Pathname(src)
  dest = Pathname(dest)
  context = Whisper::VAD::Context.new(@model)
  params ||= Whisper::VAD::Params.new(
    threshold: 0.7,
    min_silence_duration_ms: 1000
  )
  waveform, sample_rate = TorchAudio.load(src)
  chunks = []
  context.detect(src.to_path, params).each do |segment|
    segment => {start_time:, end_time:}
    st = start_time * sample_rate / 1000
    en = end_time * sample_rate / 1000
    chunks << waveform[0][st..en]
  end
  output = Torch.cat(chunks)
  TorchAudio.save(dest.to_path, output.unsqueeze(0), sample_rate)
  dest
end