test_online_fbank.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/env python3
  2. import sys
  3. try:
  4. import kaldifeat
  5. except:
  6. print("Please install kaldifeat first")
  7. sys.exit(0)
  8. import kaldi_native_fbank as knf
  9. import torch
  10. def main():
  11. sampling_rate = 16000
  12. samples = torch.randn(16000 * 10)
  13. opts = kaldifeat.FbankOptions()
  14. opts.frame_opts.dither = 0
  15. opts.mel_opts.num_bins = 80
  16. opts.frame_opts.snip_edges = False
  17. opts.mel_opts.debug_mel = False
  18. online_fbank = kaldifeat.OnlineFbank(opts)
  19. online_fbank.accept_waveform(sampling_rate, samples)
  20. opts = knf.FbankOptions()
  21. opts.frame_opts.dither = 0
  22. opts.mel_opts.num_bins = 80
  23. opts.frame_opts.snip_edges = False
  24. opts.mel_opts.debug_mel = False
  25. fbank = knf.OnlineFbank(opts)
  26. fbank.accept_waveform(sampling_rate, samples.tolist())
  27. assert online_fbank.num_frames_ready == fbank.num_frames_ready
  28. for i in range(fbank.num_frames_ready):
  29. f1 = online_fbank.get_frame(i)
  30. f2 = torch.from_numpy(fbank.get_frame(i))
  31. assert torch.allclose(f1, f2, atol=1e-3), (i, (f1 - f2).abs().max())
  32. if __name__ == "__main__":
  33. torch.manual_seed(20220825)
  34. main()
  35. print("success")