私は現時点では、オーディオファイルをサンプリングし、サンプリングの情報をtxtファイルに保存しようとしています。pythonで完全な配列を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)
何か?
希望する出力は、各行にリストが含まれる2つの別々のファイル[sample_test、sample_train] です。 リストの各エントリには小数点以下が含まれている必要があります。そのため、浮動小数点または倍精度として格納されていることがわかります。
ファイルサイズは出力に影響しますか? –
私は質問を理解しているか分からない。 私はそれを指定していない。 –
'test'変数と' train'変数はどのような形式ですか?私が尋ねる理由は、コードが値の長いリストとして作成するように見えるが、 'np.savetxt()'の呼び出しでは、2つのフォーマット文字列 '%10s'と'%10.3f'を渡す。あなたは、リスト内の各アイテムがそれ自体2つのアイテムのリストであることを期待していますか?他のすべてのコードを削除して、壊れた例を残しておくこともできます(たとえば、適切なディメンションのランダムなリストを作成して保存するなど)。 – kabdulla