Class: Itak

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

Defined Under Namespace

Classes: Denoiser, VAD

Constant Summary collapse

SAMPLE_RATE =
16_000

Instance Method Summary collapse

Instance Method Details

#run(src, dest = nil) ⇒ Object



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

def run(src, dest=nil)
  src = Pathname(src)
  if dest
    dest = Pathname(dest)
    if dest.directory?
      dest = dest/src.basename.sub_ext(".denoised-vad" + src.extname)
    end
  else
    dest = src.sub_ext(".denoised-vad" + src.extname)
  end
  dest.dirname.mkpath

  waveform, sample_rate = TorchAudio.load(src.to_path)
  raise "Currently only #{SAMPLE_RATE}Hz audio is supported" unless sample_rate == SAMPLE_RATE

  $stderr.puts "Denoising..."
  denoised = Denoiser.new.denoise(waveform)

  $stderr.puts "VAD..."
  vadded = VAD.new.run(denoised)

  TorchAudio.save(dest.to_path, vadded.unsqueeze(0), SAMPLE_RATE)
  $stderr.puts "Saved to #{dest}"
  dest
end