Deep learning 为什么FairSeq的VQ-Wav2Vec输出缺少帧?

Deep learning 为什么FairSeq的VQ-Wav2Vec输出缺少帧?,deep-learning,pytorch,fairseq,Deep Learning,Pytorch,Fairseq,我正在使用fairseq库使用VQ-Wav2Vec代码运行特征提取示例代码,如下所示: In [6]: import torch ...: from fairseq.models.wav2vec import Wav2VecModel In [7]: cp = torch.load('wav2vec_models/checkpoint_best.pt') ...: model = Wav2VecModel.build_model(cp['args'], task=None)

我正在使用fairseq库使用VQ-Wav2Vec代码运行特征提取示例代码,如下所示:

In [6]: import torch
   ...: from fairseq.models.wav2vec import Wav2VecModel

In [7]: cp = torch.load('wav2vec_models/checkpoint_best.pt')
   ...: model = Wav2VecModel.build_model(cp['args'], task=None)
   ...: model.load_state_dict(cp['model'])
   ...: model.eval()

In [9]: wav_input_16khz = torch.randn(1,10000)
   ...: z = model.feature_extractor(wav_input_16khz)
   ...: f, idxs = model.vector_quantizer.forward_idx(z)
   ...: print(idxs.shape, f.shape)

>>>> torch.Size([1, 60, 4]) torch.Size([1, 512, 60])
我的理解是,vq-wav2vec每10ms处理一次输入语音(假设以16K采样/秒的速度采样)样本,并为每10ms语音输出一个样本大小为[512]的特征向量。假设输入语音是10000个样本,我们应该得到62帧(62*160=9920个样本)

为什么我只能看到60帧?

来自文章(arxiv.org/pdf/1904.05862.pdf):“编码器的输出是低频特征表示。”∈Z编码约30毫秒的16 kHz音频,跨步每10毫秒产生一次表示zi。”=>窗口重叠,这解释了为什么减少2帧。 事实上,我们正在将30毫秒的窗口移动10毫秒。在您的示例中,30毫秒窗口占据60个不同的位置