FileNotFoundError: [Errno 2] No such file or directory: 'learning_sample/1_3_8.wav'
とエラーが出ました。
#coding:utf-8 from sklearn import svm from sklearn.metrics import classification_report,accuracy_score import sys from mfcc import * import glob import csv import random import itertools import numpy as np if __name__ =="__main__": bell_nums = range(1,6) pairs = list(itertools.combinations(bell_nums,2)) for pair in pairs: bell_num1=int(pair[0]) bell_num2 = int(pair[1]) train_data = np.empty((0,12),float) train_label = np.array([]) test_data = np.empty((0,12),float) test_label = np.array([]) noise_nums = list(range(1,12)) level_nums = list(range(0,10)) random.shuffle(noise_nums) nfft=2048 # FFTのサンプル数 nceps = 12 # MFCCの次元数 # 鈴の音1 for noise_nums_index in noise_nums[0:10]: random.shuffle(level_nums) files_name = glob.glob("learning_sample/%d_%d_%d.wav" % (bell_num1,noise_nums_index,random.choice(level_nums))) for file_name in files_name: feature = get_feature(files_name,nfft,nceps) if len(train_data) ==0: train_data=feature else: train_data=np.vstack((train_data,feature)) train_label=np.append(train_label,bell_num1) # テストデータを作成 files_name="learning_sample/%d_%d_%d.wav"% (bell_num1,noise_nums_index,level_nums[8]) feature = get_feature(files_name,nfft,nceps) if len(test_data) ==0: test_data=feature else: test_data=np.vstack((test_data,feature)) #テストと結果を合わせる test_label=np.append(test_label,bell_num1) # 鈴の音2 for noise_nums in noise_nums[0:10]: random.shuffle(level_nums) for level_nums in level_nums[0:10]: files_name = glob.glob("learning_sample/%d_%d_%d.wav" % (bell_num2, noise_num, level_num)) for file_name in files_name: feature = get_feature(files_name,nfft,nceps) if len(train_data) == 0: train_data=feature else: train_data=np.vstack((train_data,feature)) train_label=np.append(train_label,bell_num2) file_name = "learning_sample/%d_%d_%d.wav" % (bell_num2, noise_num, level_nums[8]) feature = get_feature(files_name,nfft,nceps) if len(test_data) == 0: test_data=feature else: test_data=np.vstack((test_data,feature)) test_label=np.append(test_label,bell_num2) feature_train_data=np.hstack((train_label.reshape(len(train_label),1),train_data)) feature_test_data=np.hstack((test_label.reshape(len(test_label),1),test_data)) with open("feature_data/train_data.txt","w") as f: writer=csv.writer(f) writer.writerows(feature_train_data) with open("feature_data/test_data.txt","w") as f: writer=csv.writer(f) writer.writerows(feature_train_data) #識別機学習 clf = svm.SVC() clf.fit(train_data,train_label) test_pred =clf.predict(test_data) # print np.hstack((test_label.reshape(len(test_label),1),(test_pred.reshape(len(test_pred),1)))) score=accuracy_score(test_label,test_pred) print(pair,score)
とコードを書いて実行したところ、
Traceback (most recent call last): File "sound.py", line 60, in <module> feature = get_feature(files_name,nfft,nceps) File "/Users/XXX/Desktop/onsei/mfcc.py", line 126, in get_feature wav,fs = wavread(wavfile) File "/Users/XXX/Desktop/onsei/mfcc.py", line 17, in wavread wf = wave.open(filename,"r") File "/Users/XXX/anaconda/envs/py36/lib/python3.6/wave.py", line 499, in open return Wave_read(f) File "/Users/XXX/anaconda/envs/py36/lib/python3.6/wave.py", line 159, in __init__ f = builtins.open(f, 'rb') FileNotFoundError: [Errno 2] No such file or directory: 'learning_sample/1_3_8.wav'
とエラーが出ました。
確かに、test(このアプリケーションの名前)アプリの中のlearning_sampleファイルに1_3_8.wavファイルはありません。しかし、
おそらく以下の部分を実行したときにエラーが出たと思うのですが、
for noise_nums_index in noise_nums[0:10]: random.shuffle(level_nums) # 学習用データを作成 # スライス (記法はリストと同じ、返り値はビュー) # a[start:end:step] files_name = glob.glob("learning_sample/%d_%d_%d.wav" % (bell_num1,noise_nums_index,random.choice(level_nums))) for file_name in files_name: feature = get_feature(files_name,nfft,nceps) #len(train_data) ==0ならtrain_data=feature??? if len(train_data) ==0: train_data=feature else: #train_dataとfeatureを縦で合わせたものがtrain_data train_data=np.vstack((train_data,feature)) train_label=np.append(train_label,bell_num1) # テストデータを作成 files_name="learning_sample/%d_%d_%d.wav"% (bell_num1,noise_nums_index,level_nums[8]) feature = get_feature(files_name,nfft,nceps) if len(test_data) ==0: test_data=feature else: test_data=np.vstack((test_data,feature)) #テストと結果を合わせる test_label=np.append(test_label,bell_num1)
ここの部分が呼ばれると、学習用データが作成されると思っていました。なので、あらかじめファイルを用意する必要はないなと。私の認識が間違っているのでしょうか?私は自動的に学習ファイルが作成されるコードを書きたかったのですが。どこをどう直せば良いのでしょうか?
参考にしたページは
http://webdatareport.hatenablog.com/entry/2016/11/06/161304
です。

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。