首页 > 解决方案 > 我如何读取文件夹和子文件夹 *.wav ;以及用于训练模型输入的特征提取?

问题描述

我有一个包含 20 个子文件夹的主文件夹。并且任何子文件夹又有 6 个子文件夹(20 个扬声器,任何扬声器语音 (*.wav) 分类为 6 类)。

我想阅读所有 *.wav 文件和特征提取。特征提取是我的神经网络训练模型的输入。

如何读取所有 .wav 文件并进行特征提取?

所有班级必须一起训练吗?如何?

我从主文件夹读取 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)

我很混乱。请帮助我,我该怎么做,一步一步。

谢谢。

标签: python

解决方案


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

推荐阅读