首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数组保存在与FBK Fairseq兼容的.npz结构中进行直接语音翻译?

如何将数组保存在与FBK Fairseq兼容的.npz结构中进行直接语音翻译?
EN

Stack Overflow用户
提问于 2020-05-15 17:35:44
回答 1查看 137关注 0票数 2

我用numpy生成了一个npz文件夹,代码为np.savez(outpath + "/data.npz", **keywords),其中关键字是一个字典,结构如下:

代码语言:javascript
复制
"0" : array
"1" : array

每个数组都是包含用speechpy提取的MFCC特征的二维数组。例如,键0的数组具有形状(518,13)。

这是生成的npz文件夹的文件夹和文件名结构:

代码语言:javascript
复制
data.npz
    0.npy
    1.npy

由于我必须将npz文件提供给一个序列建模工具包,以便在pytorch上构建语音翻译FBK-Fairseq-ST,因此读取npz文件的函数如下:

代码语言:javascript
复制
def reader_npz(path):
   with open(path, 'rb') as f:
      shape = np.load(f)
      for i in range(int(shape[0])):
         yield torch.from_numpy(np.load(f))

我不得不按照@V. Ayrat的评论中的建议,将for i in range(int(shape["0"]))行修改为for i in range(int(shape[0])),以避免键错误。

问题是,这会导致TypeError: only size-1 arrays can be converted to Python scalars,因为我给了int一个2D数组。

事实上,如果我的.npz文件夹包含100npy文件,shape=np.load(f)将产生一组从shape["0"]shape["99"]的二维数组。

我应该如何将.npy文件保存在.npz文件中,以使.npz文件夹可由上述展会的fairseq脚本中的reader_npz(path)函数读取?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 19:33:01

我找到了一种方法来读取the.npy文件中包含数组的.npz文件夹,方法是修改reader_npz函数,如下所示:

代码语言:javascript
复制
def reader_npz(path):
    with open(path, 'rb') as f:
        arrays = np.load(f)
        for key in arrays:
            yield torch.from_numpy(arrays[key])

arrays = np.load(f)将生成文件夹中的文件名列表。由于每个文件都包含一个二维数组,因此可以通过输出arrays[key]进行测试,arrays[key]本身就是二维数组

代码语言:javascript
复制
print(arrays[key])
代码语言:javascript
复制
[[-1.7862251  -0.3740275   0.5878265  ...  0.56670946  0.23715064
   0.28952855]
 [-2.3202019  -0.3106088  -0.5866199  ... -0.57073885 -1.3251289
  -0.05244343]
 [-0.88320863  0.04667355 -1.7014104  ...  1.3024858   1.3273206
   1.1638638 ]
 ...
 [ 0.4545314  -0.93115485 -1.2533125  ...  0.32433906  0.31202883
   0.11585686]
 [ 0.04456866 -1.161861   -1.6719444  ...  1.4855083   0.38237372
   0.26423842]
 [-0.18203917 -0.2660923  -0.66291505 ... -1.3389368  -2.3973744
  -0.84333473]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61816151

复制
相关文章

相似问题

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