###問題
Pythonで以下サイト様を参考に類似楽曲システムを作っている最中です。
http://aidiary.hatenablog.com/entry/20121014/1350211413
このサイトでは指定したディレクトリ直下のmp3フォルダを探索してそれぞれの形式に変換しています。指定したディレクトリの最下層まで探索してくれたら便利だなぁと思ってコードを作り変えているのですが、うまく組み合わせられません。
###やりたいこと
現在のコードでは、こうなります。
↑これを
↑こうしたいです。こうするとmfccファイルとrawファイルが作れます。
コードをどう修正するとmfcc-mp3-raw-...といった感じにできるのでしょう?
###発生している問題・エラーメッセージ
コピー先のパスと保存先のパスが合わないため、.mfcと.rawが作成できない状態です
$ python mp3_to_mfcc.py mp3 mfcc/ raw/ LAME 3.99.5 64bits (http://lame.sf.net) Autoconverting from stereo to mono. Setting encoding to mono mode. Resampling: input 44.1 kHz output 16 kHz . . . sh: raw/mp3/Archive/Benny Green/Jazz at the Bistro/01 Ask Me Now.raw: No such file or directory sh: raw/mp3/Archive/Benny Green/Jazz at the Bistro/01 Ask Me Now.raw: No such file or directory sh: mfcc/mp3/Archive/Benny Green/Jazz at the Bistro/01 Ask Me Now.mfc: No such file or directory
###該当のソースコード
拡張子変換についての関数とかは関係なさそうなので、問題がありそうな部分だけ載せておきます。
Python
1#coding:utf-8 2import os 3import sys 4import shutil 5 6def find_all_files(mp3Dir): 7 for root, dirs, files in os.walk(mp3Dir): 8 yield root 9 for file in files: 10 yield os.path.join(root, file) 11 12 13 14if __name__ == "__main__": 15 if len(sys.argv) != 4: 16 print "usage: python print_mfcc.py [mp3dir] [mfccdir] [rawdir]" 17 sys.exit() 18 19 mp3Dir = sys.argv[1] 20 mfccDir = sys.argv[2] 21 rawDir = sys.argv[3] 22 23 if not os.path.exists(mfccDir): 24 os.mkdir(mfccDir) 25 if not os.path.exists(rawDir): 26 os.mkdir(rawDir) 27 28 shutil.rmtree(mfccDir) 29 shutil.rmtree(rawDir) 30 31 shutil.copytree(mp3Dir, mfccDir, True, ignore = shutil.ignore_patterns('*.mp3')) 32 shutil.copytree(mp3Dir, rawDir, True, ignore = shutil.ignore_patterns('*.mp3')) 33 for file in find_all_files(mp3Dir): 34 if not file.endswith(".mp3"): 35 continue 36 mp3File = file 37 mfccFile = os.path.join(mfccDir, file.replace(".mp3", ".mfc")) 38 rawFile = os.path.join(rawDir, file.replace(".mp3", ".raw")) 39 40 try: 41 mp3ToRaw(mp3File,"temp.raw") 42 extractCenter("temp.raw", rawFile, 15) 43 44 calcMFCC(rawFile,mfccFile) 45 print "%s => %s" % (mp3File, mfccFile) 46 os.remove("temp.raw") 47 48 except: 49 continue
回答1件
あなたの回答
tips
プレビュー