我有一个包含 20 个子文件夹的主文件夹。并且任何子文件夹又有 6 个子文件夹(20 个扬声器,任何扬声器语音(*.wav)分类为 6 类)。
我想读取所有 *.wav 文件和特征提取。特征提取是我的神经网络训练模型的输入。
如何读取所有 .wav 文件并提取特征?
所有类(class)都要一起训练?怎么办?
我从主文件夹读取wav文件的代码如下(但这段代码只读取一个子文件夹):
import os
import scipy.io.wavfile as wav
r_dir = '/my path/'
data = []
rate = []
for root,sub,files in os.walk(r_dir):
files = sorted(files)
for f in files:
s_rate, x = wav.read(os.path.join(root, f))
rate.append(s_rate)
data.append(x)
对于特征提取,我使用此代码(我想为我的所有子文件夹和 wav 文件提取特征):
from python_speech_features import fbank
import scipy.io.wavfile as wav
(rate,sig)=wav.read("/my path for one .wav file")
fbank_feat = fbank(sig,rate)
print(fbank_feat)
我很困惑。请帮助我一步一步地做。
谢谢。
最佳答案
glob
与 pathlib.Path
一起使用时效果更好。
from pathlib import Path
path = Path('D:\\test path').glob('**/*.wav')
wavs = [str(wavf) for wavf in path if wavf.is_file()]
print(wavs)
产量
D:\test path\a..wav
D:\test path\b.wav
D:\test path\sub 1\1a..wav
D:\test path\sub 1\1b.wav
D:\test path\sub 1\nest a\aaa..wav
D:\test path\sub 1\nest a\bbb.wav
D:\test path\sub 2\2a..wav
D:\test path\sub 2\2b.wav
关于python - 我如何读取文件夹和子文件夹 *.wav ;和训练模型输入的特征提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303838/