質問編集履歴

2

現状図と理想図を加え、要点だけを書き足しました。余計な説明は省きました。

2016/05/10 07:41

投稿

monmi_monmi
monmi_monmi

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,28 @@
1
- ###前提・実現したいこと
1
+ ###問題
2
2
 
3
3
  Pythonで以下サイト様を参考に類似楽曲システムを作っている最中です。
4
4
 
5
5
  http://aidiary.hatenablog.com/entry/20121014/1350211413
6
6
 
7
- このサイトでは指定したディレクトリ直下のmp3フォルダを探索してそれぞれの形式に変換しているのでが、指定したディレクトリの最下層まで探索してくれコードに書きかようとしていすが、うまく組み合わせられません。
7
+ このサイトでは指定したディレクトリ直下のmp3フォルダを探索してそれぞれの形式に変換してい指定したディレクトリの最下層まで探索してくれたら便利だなぁと思ってコードを作り変えているのですが、うまく組み合わせられません。
8
+
9
+
10
+
11
+ ###やりたいこと
12
+
13
+ 現在のコードでは、こうなります。
14
+
15
+ ![現在の状態](6c7af691569aa01b9342b408769ca929.png)
16
+
17
+ ↑これを
18
+
19
+
20
+
21
+ ![理想状態](4f28dde772f354cf363b792d3a230640.png)
22
+
23
+ ↑こうしたいです。こうするとmfccファイルとrawファイルが作れます。
24
+
25
+ コードをどう修正するとmfcc-mp3-raw-...といった感じにできるのでしょう?
8
26
 
9
27
 
10
28
 
@@ -143,59 +161,3 @@
143
161
  continue
144
162
 
145
163
  ```
146
-
147
-
148
-
149
- ###これが問題の原因?
150
-
151
- os.walk()では指定したディレクトリを含めたパスになります。↓
152
-
153
-
154
-
155
- mp3/
156
-
157
- mp3/.DS_Store
158
-
159
- mp3/A
160
-
161
- mp3/A/.DS_Store
162
-
163
- mp3/A/B
164
-
165
- mp3/A/a.mp3
166
-
167
- mp3/A/B/.DS_Store
168
-
169
- mp3/A/B/b.mp3
170
-
171
- mp3/A/B/c.mp3
172
-
173
- mp3/A/B/d.mp3
174
-
175
-
176
-
177
- 一方、shutil.copytree(src,dst)はコピーしたいディレクトリsrcの内容、つまりsrc以下のディレクトリまたはファイルをdstにコピーするので、上のコードの場合
178
-
179
-
180
-
181
- raw/
182
-
183
- raw/.DS_Store
184
-
185
- raw/A
186
-
187
- raw/A/.DS_Store
188
-
189
- raw/A/B
190
-
191
- raw/A/B/.DS_Store
192
-
193
-
194
-
195
- のようになります。
196
-
197
- os.walk()でトップディレクトリをAに変更するか、copytreeでディレクトリのをrawとAの間にmp3というディレクトリを入れることによって解決できると思われます。
198
-
199
- しかしどう実装すれば実現するかが分からないです。
200
-
201
- コードをどう変えればいいのか、わかる方いれば宜しくお願いします。

1

文を修正しました

2016/05/10 07:41

投稿

monmi_monmi
monmi_monmi

スコア12

test CHANGED
@@ -1 +1 @@
1
- Pythonのパス指定について質問です。(探索システム
1
+ Pythonの探索システムで詰まっています
test CHANGED
@@ -1,12 +1,10 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- ここに質問したいことを詳細に書いてください
4
-
5
- (例)Pythonで以下サイト様を参考に類似楽曲システムを作っている最中です。
3
+ Pythonで以下サイト様を参考に類似楽曲システムを作っている最中です。
6
4
 
7
5
  http://aidiary.hatenablog.com/entry/20121014/1350211413
8
6
 
9
- このサイトでは指定したディレクトリ直下のmp3フォルダを探索してそれぞれの形式に変換しているのですが、指定したディレクトリの最下層まで探索してくれるコードに書きかえようとしています。
7
+ このサイトでは指定したディレクトリ直下のmp3フォルダを探索してそれぞれの形式に変換しているのですが、指定したディレクトリの最下層まで探索してくれるコードに書きかえようとしていますが、うまく組み合わせられません
10
8
 
11
9
 
12
10
 
@@ -42,6 +40,8 @@
42
40
 
43
41
  ###該当のソースコード
44
42
 
43
+ 拡張子変換についての関数とかは関係なさそうなので、問題がありそうな部分だけ載せておきます。
44
+
45
45
  ```Python
46
46
 
47
47
  #coding:utf-8
@@ -52,100 +52,6 @@
52
52
 
53
53
  import shutil
54
54
 
55
- from distutils.dir_util import copy_tree
56
-
57
- # mp3_to_mfcc.py
58
-
59
- # MP3からMFCCを抽出
60
-
61
-
62
-
63
- def mp3ToRaw(mp3File, rawFile):
64
-
65
- # mp3を16kHz,32bitでリサンプリング
66
-
67
- os.system("lame --resample 16 -b 32 -a '%s' temp.mp3" % mp3File)
68
-
69
- os.system("lame --decode temp.mp3 temp.wav")
70
-
71
- os.system("sox temp.wav %s" % rawFile)
72
-
73
- os.remove("temp.mp3")
74
-
75
- os.remove("temp.wav")
76
-
77
-
78
-
79
-
80
-
81
- def calcNumSample(rawFile):
82
-
83
- #1サンプルはshort型なので ファイルサイズ / 2 する
84
-
85
- filesize = os.path.getsize("temp.raw")
86
-
87
- numsample = filesize / 2
88
-
89
- return numsample
90
-
91
-
92
-
93
-
94
-
95
- def extractCenter(inFile, outFile, period):
96
-
97
- # 波形のサンプル数を求める
98
-
99
- numSample = calcNumSample(inFile)
100
-
101
- print "DD"
102
-
103
-
104
-
105
- fs = 16000
106
-
107
- center = numSample / 2
108
-
109
- start = center - fs*period
110
-
111
- end = center + fs*period
112
-
113
-
114
-
115
- if start < 0:
116
-
117
- start = 0
118
-
119
- if end > numSample - 1:
120
-
121
- end = numSample - 1
122
-
123
-
124
-
125
- # SPTKのbcutコマンドで切り出す
126
-
127
- os.system(" bcut +s -s %d -e %d < '%s' > '%s' " % (start, end, "temp.raw", rawFile))
128
-
129
-
130
-
131
-
132
-
133
- def calcMFCC(rawFile, MFCCFile):
134
-
135
- #fs = 16000
136
-
137
- #Frames = 400 sample
138
-
139
- #Shift_width = 160 sample
140
-
141
- #Channels = 40
142
-
143
- #MFCC = 19 dimension + Energy
144
-
145
- #
146
-
147
- os.system("x2x +sf < '%s' | frame -l 400 -p 160 | mfcc -l 400 -f 16 -n 40 -m 19 -E > '%s'" % (rawFile, MFCCFile))
148
-
149
55
 
150
56
 
151
57
  def find_all_files(mp3Dir):
@@ -240,7 +146,7 @@
240
146
 
241
147
 
242
148
 
243
- ###原因
149
+ ###これが問題の原因
244
150
 
245
151
  os.walk()では指定したディレクトリを含めたパスになります。↓
246
152
 
@@ -290,6 +196,6 @@
290
196
 
291
197
  os.walk()でトップディレクトリをAに変更するか、copytreeでディレクトリのをrawとAの間にmp3というディレクトリを入れることによって解決できると思われます。
292
198
 
293
-
199
+ しかしどう実装すれば実現するかが分からないです。
294
-
200
+
295
- 宜しくお願いします。
201
+ コードをどう変えればいいのか、わかる方いれば宜しくお願いします。