<p>要读取目录和子目录中的所有*.wav文件,可以使用以下命令:</p>
<pre><code>#Read all *.wav files inside dir & sub dir
import xlrd
import os
import scipy.io.wavfile as wav
mydir = (os.getcwd()).replace('\\','/') + '/'
#Get all *wav files include subdir
filelist=[]
for path, subdirs, files in os.walk(mydir):
for file in files:
if (file.endswith('.wav') or file.endswith('.WAV')):
filelist.append(os.path.join(path, file))
number_of_files=len(filelist)
print(filelist)
wav_data=[]
for i in range(number_of_files):
#extract all *.wav files here
samplerate, data = wav.read(filelist[i])
wav_data.append(data)
print(wav_data)
</code></pre>
<p>我的目录:</p>
<p><a href="https://i.stack.imgur.com/Q3Bwc.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Q3Bwc.png" alt=""/></a></p>
<p>输出:</p>
<pre><code>['D:/SOF/answer30/file_example_WAV_5MG.wav', 'D:/SOF/answer30/subdir1\\file_example_WAV_1MG.wav', 'D:/SOF/answer30/subdir2\\file_example_WAV_2MG.wav']
</code></pre>
<p>WAV数据:</p>
<pre><code>[array([[-204, 23],
[-232, 32],
[-192, 34],
...,
[4938, 4256],
[4974, 3977],
[4734, 3798]], dtype=int16), array([[ -114, 23],
[ -241, 3],
[ -285, -29],
...,
[ -772, -1059],
[ -422, -840],
[ -787, -314]], dtype=int16), array([[ -139, 18],
[ -215, 34],
[ -196, 6],
...,
[ -523, -563],
[ -765, -319],
[-1002, -190]], dtype=int16)]
</code></pre>