#!/usr/bin/env python3
|
|
import sys
|
|
try:
|
import kaldifeat
|
except:
|
print("Please install kaldifeat first")
|
sys.exit(0)
|
|
import kaldi_native_fbank as knf
|
import torch
|
|
|
def main():
|
sampling_rate = 16000
|
samples = torch.randn(16000 * 10)
|
|
opts = kaldifeat.FbankOptions()
|
opts.frame_opts.dither = 0
|
opts.mel_opts.num_bins = 80
|
opts.frame_opts.snip_edges = False
|
opts.mel_opts.debug_mel = False
|
|
online_fbank = kaldifeat.OnlineFbank(opts)
|
|
online_fbank.accept_waveform(sampling_rate, samples)
|
|
opts = knf.FbankOptions()
|
opts.frame_opts.dither = 0
|
opts.mel_opts.num_bins = 80
|
opts.frame_opts.snip_edges = False
|
opts.mel_opts.debug_mel = False
|
|
fbank = knf.OnlineFbank(opts)
|
fbank.accept_waveform(sampling_rate, samples.tolist())
|
|
assert online_fbank.num_frames_ready == fbank.num_frames_ready
|
for i in range(fbank.num_frames_ready):
|
f1 = online_fbank.get_frame(i)
|
f2 = torch.from_numpy(fbank.get_frame(i))
|
assert torch.allclose(f1, f2, atol=1e-3), (i, (f1 - f2).abs().max())
|
|
|
if __name__ == "__main__":
|
torch.manual_seed(20220825)
|
main()
|
print("success")
|