前提・実現したいこと
Colaboratory上でPythonを動かしています。
そこで、音声を学習させて、後からテストデータを照合させて正答率を見ることを試みています。
色々参考にしているのですが、以下途中で
ValueError: need at least one array to concatenate
というエラーでつまづいています。
ご教授いただければ幸いです。
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last) <ipython-input-22-69fdddb50088> in <module>() 22 speaker_training.append(label) # speaker_trainingにラベルを追加 23 ---> 24 word_training=numpy.concatenate(word_training) # ndarrayを結合 25 speaker_training=numpy.concatenate(speaker_training) <__array_function__ internals> in concatenate(*args, **kwargs) ValueError: need at least one array to concatenate
該当のソースコード
python
1import scipy.io.wavfile as wav 2from sklearn.svm import SVC 3import numpy 4import librosa 5import os 6 7# ルートディレクトリ 8ROOT_PATH = '/content/drive/My Drive/声優分類' 9 10# 話者の名前(各話者のデータのディレクトリ名になっている) 11speakers=['minase', 'kaori', 'yui'] 12 13word_training=[] # 学習用のFCCの値を格納する配列 14speaker_training=[] # 学習用のラベルを格納する配列 15 16# MFCCを求める関数 17def getMfcc(filename): 18 y, sr = librosa.load(filename) 19 return librosa.feature.mfcc(y=y, sr=sr) 20 21 22# 各ディレクトリごとにデータをロードし、MFCCを求めていく 23for speaker in speakers: 24 # どの話者のデータを読み込んでいるかを表示 25 print('Reading data of %s...' % speaker) 26 27 path = os.path.join(ROOT_PATH + speaker) 28 29 for pathname, dirnames, filenames in os.walk(path): 30 for filename in filenames: 31 if filename.endswith('.wav'): 32 mfcc=getMfcc(os.path.join(pathname, filename)) 33 word_training.append(mfcc.T) # word_trainingにmfccの値を追加 34 label=numpy.full((mfcc.shape[1] ,), 35 speakers.index(speaker), dtype=numpy.int) # labelをspeakersのindexで全て初期化 36 speaker_training.append(label) # speaker_trainingにラベルを追加 37 38word_training=numpy.concatenate(word_training) # ndarrayを結合 39speaker_training=numpy.concatenate(speaker_training)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 22:57