首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么FairSeq的VQ-Wav2Vec输出缺少帧?

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

Stack Overflow用户
提问于 2020-06-15 02:34:39
回答 1查看 99关注 0票数 0

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

代码语言:javascript
复制
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- each 2vec每10ms处理一次输入语音(假设以16K样本/秒的速度采样)样本,并为这10ms语音中的每一个输出512个样本的特征向量。因此,假设输入语音是10000个样本,我们应该获得62帧( 62 * 160 = 9920个样本)。

为什么我只看到60帧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 04:12:31

来自文章(arxiv.org/pdf/1904.05862.pdf):“编码器的输出是一个低频特征表示zi kHz Z,它编码大约30毫秒的16 kHz音频和步进结果表示zi每10ms。”=>窗口是重叠的,这就解释了为什么你得到的帧减少了2帧。实际上,我们正在以10毫秒的步长移动30毫秒的窗口。在您的示例中,30ms窗口采用60个不同的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62376687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档