1

我目前正在尝试对音频文件进行采样并将采样中的信息存储到 txt 文件中。

采样是使用librosa完成的。

当我将它保存到文件时会出现问题......数组没有完全保存,我只能查看几个采样点,其余的都是点状的。

例子:

22050.000
[ -8.61534572e-05  -1.64340396e-04  -8.03423245e-05 ...,  -1.40137578e-04
  -3.71412549e-04  -5.04361582e-04]  

这就是我的做法:

import tensorflow as tf
import numpy as np
import librosa
from os import listdir
from os.path import isfile, join
import os



path_train =  "/home/k/kaldi-trunk/egs/start/s5/data/train"
path_test =  "/home/k/kaldi-trunk/egs/start/s5/data/test"
dnn_train = "/home/k/kaldi-trunk/dnn/train/"
dnn_test = "/home/k/kaldi-trunk/dnn/test/"
dnn = "/home/k/kaldi-trunk/dnn/"
path  = "/home/k/kaldi-trunk/egs/start/s5/data/"
train_filelist = path_train+"/wav_train.txt"
test_filelist = path_test+"/wav_test.txt"

    files_train = [f for f in listdir(dnn_train) if isfile(join(dnn_train, f))]
    files_test = [f for f in listdir(dnn_test) if isfile(join(dnn_test, f))]

    os.chdir(dnn_train)
    train = []
    test  = []


    for line in files_train:
        #print dnn_train+line
        y,sr=librosa.core.load(dnn_train+line)
        train.append(y.tolist())

    print "Train done!"

    for line in files_test:
        x,sr=librosa.core.load(dnn_test+line)
        test.append(x.tolist())

    print "Test done!"

    os.chdir(dnn)

    with open('sample_test.txt','wb') as f:
        np.savetxt(f,test)

    with open('sample_train.txt','wb') as f:
        np.savetxt(f,train)

有什么可以解释为什么我不能保存所有样本点而不是几个?

所需的输出是两个单独的文件 [sample_test,sample_train],其中每一行都包含一个列表。列表中的每个条目都应包含尽可能多的小数,这就是为什么将其存储为浮点数或双精度数会很受欢迎的原因。

4

1 回答 1

0

to 的参数np.savetxt应该是一个数组。

test = np.array(test)在保存数据之前添加。

  1. 如果无法将数据转换为数组,这将产生错误。
  2. 您可以打印数组的形状以进行诊断:print test.shape

您的输出表明您的数据中有一个浮点数,然后是一个列表,它们被打印出来,而不是 NumPy 数组的内容。

于 2016-10-02T13:12:18.090 回答