csukuangfj / kaldifeat

Kaldi-compatible online & offline feature extraction with PyTorch, supporting CUDA, batch processing, chunk processing, and autograd - Provide C++ & Python API
https://csukuangfj.github.io/kaldifeat
Other
187 stars 35 forks source link

想要fbank的输出是归一化的,应该怎么设置? #66

Closed joewale closed 1 year ago

joewale commented 1 year ago

RT

csukuangfj commented 1 year ago

可以描述一下么? fbank 输出做 normalization 是什么意思?

joewale commented 1 year ago

我设置各个参数后,fbank的输出如下:

image

是否有参数支持输出归一化后的结果,如下面这样的结果:

image
csukuangfj commented 1 year ago

你下面的结果是怎么算出来的?什么才叫归一化?

joewale commented 1 year ago

上面两个图没有对应关系哈,下面这个图是通过torchaudio.compliance.kaldi.fbank输出的

csukuangfj commented 1 year ago

你给的是同一段音频吗?

csukuangfj commented 1 year ago

你的输入都是做过 normalization的么?即是在 [-1, 1] 还是 [-32768, 32767] 之间?

joewale commented 1 year ago

给的是同一段语音,kaldi-feat对输入没有归一化(直接读取的pcm数据,没做[-1, 1]归一化),结果是上面的第一张图;当我用librosa.load读取音频后,输入kaldi-feat,结果出现下面的结果

image
joewale commented 1 year ago

librosa.load读取音频后是有做除以32767的归一化处理,我现在做了归一化得到的结果跟librosa.load读取音频后做kaldi-feat的结果一致。

csukuangfj commented 1 year ago

那现在问题是不是解决了? 只要对输入做归一化,对么?

joewale commented 1 year ago

那现在问题是不是解决了? 只要对输入做归一化,对么?

嗯。谢谢哈!

另外,再请教个问题,kaldi-feat的fbank的输出维度问题:以下的配置,4s的音频输入,输出的维度不是128x400,而是128x398, 需要设置哪个参数吗? opts = kaldifeat.FbankOptions() opts.frame_opts.dither = 0 opts.frame_opts.window_type = "hanning" opts.mel_opts.num_bins = 128 opts.frame_opts.frame_shift_ms = 10 opts.frame_opts.frame_length_ms = 25 opts.frame_opts.samp_freq = 32000 opts.use_log_fbank = True

csukuangfj commented 1 year ago

输出的维度不是128400,而是128398

128400 是哪里来的?

不是二维的吗? 你可以详细描述一下你要做什么吗?

joewale commented 1 year ago

输出的维度不是128400,而是128398

128400 是哪里来的?

不是二维的吗? 你可以详细描述一下你要做什么吗?

是二维的,刚才打印显示有问题,已更新

joewale commented 1 year ago

我其实在验证kaldi-feat的fbank跟torchaudio.compliance.kaldi.fbank输出结果的一致性

csukuangfj commented 1 year ago

有个 snip edges 的参数,你改一下,看行不行.

你现在是在和谁对比?你就用一模一样的参数。

csukuangfj commented 1 year ago

我其实在验证kaldi-feat的fbank跟torchaudio.compliance.kaldi.fbank输出结果的一致性

这个我已经验证过了.你确保所有的参数是一样的就行.

记住,关掉 dither

csukuangfj commented 1 year ago

你还可以看看

https://github.com/csukuangfj/kaldi-native-fbank

这个更加轻量级

joewale commented 1 year ago

嗯,snip_edges设置为false解决了,谢谢哈

joewale commented 1 year ago

这个看起来对线上推理的部署更友好,我试下,非常感谢!

csukuangfj commented 1 year ago

可以关掉了?

csukuangfj commented 1 year ago

还可以看下 https://github.com/k2-fsa/sherpa-ncnn https://github.com/k2-fsa/sherpa-onnx https://github.com/k2-fsa/sherpa

joewale commented 1 year ago

还可以看下 https://github.com/k2-fsa/sherpa-ncnn https://github.com/k2-fsa/sherpa-onnx https://github.com/k2-fsa/sherpa

好的哈

joewale commented 1 year ago

问题已解决,感谢