質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

FileNotFoundError: [Errno 2] No such file or directory

削除済ユーザー
削除済ユーザー

総合スコア0

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

-1評価

0クリップ

7844閲覧

投稿2017/05/20 13:32

編集2022/01/12 10:58

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)

ここの部分が呼ばれると、学習用データが作成されると思っていました。なので、あらかじめファイルを用意する必要はないなと。私の認識が間違っているのでしょうか?私は自動的に学習ファイルが作成されるコードを書きたかったのですが。どこをどう直せば良いのでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。