scikitlearnでの音声認識の方法
解決したいこと
最近プログラミングを始めた初心者です
下記のサイトを参考にして音声認識プログラムを作成しています
「振幅」、「ゼロクロス数」、「メルスペクトログラム」の3つを特徴量として用いたいのですがメルスペクトログラムを使うと下記のようなエラーが起きてしまい困っています
どのように工夫すればよいでしょうか?
アドバイス宜しくお願いします
ちなみに振幅とゼロクロス数のみを用いた場合ではエラーは起きませんでした
発生している問題・エラー
ValueError: setting an array element with a sequence.
該当するソースコード
import glob
import librosa
import numpy as np
import matplotlib.pyplot as plt
from sklearn import preprocessing
# 複数データを読み込み
dataset = []
melspecs = []
for file_name in glob.glob('dir/*.wav'):
y, sr = librosa.load('onsei.wav')
dataset.append(y)
# メルスペクトログラムの計算
melspec = librosa.feature.melspectrogram(y, sr)
melspec = librosa.amplitude_to_db(melspec).flatten()
melspecs.append(melspec.astype(np.float16))
# 各データの振幅の平均値
mean = np.sqrt(np.mean(dataset**2,axis=1))
# 各データのゼロクロス数
zc = np.sum(librosa.zero_crossings(dataset),axis=1)
# 機械train_feature学習データにする
train_feature = pd.DataFrame()
train_feature['mean'] = mean
train_feature['zc'] = zc
train_feature['melspecs'] = melspecs
train_labels = # 正常・異常などを表すラベルを音声データ分入れる
# 上記のfeatureで特徴があれば教師あり学習のアルゴリズムを使い、
# なければ教師なし学習で異常検知を狙うとよい。
# アルゴリズムによっては数値の標準化が必要。
# 機械学習:下記例は教師ありのRandomForestを用いている。
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(train_feature, train_labels)
# 予測
pred = model.predict(test_feature)
0