python - 我如何读取文件夹和子文件夹 *.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)
我很混乱。请帮助我,我该怎么做,一步一步。
谢谢。
解决方案
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
推荐阅读
- c - -ffunction-sections -fdata-sections 和 --gc-sections 不起作用吗?
- javascript - 小部件在其 URL 的查询字符串中使用键时的过程是什么?安全吗?
- react-native - 如何并排对齐图标和下拉菜单?
- php - 如何限制特定时间?
- angular - Angular 6,加载 svg 不会出现在 chrome 中
- serverless-framework - Swagger 定义的 API 无法在 Serverless 框架上本地执行
- angular - 所需的角度 IOS 年历,如 [https://github.com/MariemChaabeni/angular-calendar-year-view] 用于 angular6
- node.js - 使用 Mongoose 在 MongoDB 中设置的时间后文档不会过期
- mysql - 当 authentication_string 正确时,用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)
- testing - 如何在 JMeter 的单个线程中调用的循环控制器之间添加计时器