【深度学习数据预处理1】使用Matlab分割音乐文件
来源:互联网 发布:明教喵哥捏脸数据 编辑:程序博客网 时间:2024/06/05 06:48
这几天在学习使用caffe和tensorflow做深度学习,想要做古典音乐的风格鉴别,要用到大量的音乐片段来生成声谱图。因此多方参考,写了一个Matlab的批量处理程序,可以遍历整个文件夹中所有的wav音乐文件,然后不改变目录结构保存在其他地方。我使用的是MATLAB2015b,windows系统,据说2015是可以支持mp3文件的读取的,但我没有试过,保险起见使用wav做文件输入,我使用的是qq音乐直接批量转换MP3到wav。代码如下,我在注释里会详细解释:
function cut_wavs(file_dir,output_dir,t,t_overlap) %输入有四个,源目录,输出目录,截取时长,不重叠时长 %解释一下不重叠时长,1个55秒的音乐文件,设置截取时长30s,不重叠时长为30s,就只能生成一 %段,0-30s;设置不重叠是15,生成2段,0-30s,15-30s,以此类推;files=dir(file_dir);for i =3:length(files) % 解释一下,从3开始是因为前两个是父目录".."和当前目录"." if ~exist(output_dir) % 判断保存目录是否存在 mkdir(output_dir); % 若不存在,在当前目录中产生一个子目录‘Figure’ end if files(i).isdir % 判断当前文件名对用的是否是文件夹 temp_dir=file_dir; % 是,开始递归,遍历所有 now_dir=strcat(temp_dir,'/',files(i).name); now_output_dir=strcat(output_dir,'/',files(i).name); cut_wavs(now_dir,now_output_dir,t,t_overlap); clear temp_dir; elseif files(i).name(end-2:end)=='wav' % 不是文件夹,判断是否是wav文件 wavfile_name_new = strcat(file_dir,'/', files(i).name); [y,fs]=audioread(wavfile_name_new);% 读取音乐数值与参数,fs是采样率 last_time=length(y)/fs; % 音乐持续时间长度 num=fix((last_time-t)/t_overlap+1);% 切割后音乐的份数 for k=1:num % 对每首音乐进行切割并命名 starttime=(k-1)*t_overlap; endtime=(k-1)*t_overlap+t; y_out=y(starttime*fs+1:endtime*fs+1,:); % 这里解释一下,我的wav文件是双声道的所以数组是nx2的结构,如果你是单声道 % 那么应该是nx1,需要把后面的",:"去掉 filename=strcat(output_dir,'/',num2str(i-2),'-',num2str(k),'.wav'); attentions=strcat('Saving...',filename) audiowrite(filename,y_out,fs); end end endend
如果要使用这个函数,只要在目录下保存成.m文件,然后打开matlab新建脚本,输入:
clear all;dir='path/to/your/source';output='path/to/your/saving/derectory';time_length=xxx;time_not_overlap=xxx;cut_wavs(dir,output,time_length,time_not_overlap);
然后把脚本保存在同一目录即可。
我测试下来基本没有问题,不过不排除bug的存在。
参考:
caffe学习笔记8 实例基于卷积神经网络的声音识别-薛开宇
小崔的博客 matlab 判断文件夹是否存在 并建立文件夹
阅读全文
0 0
- 【深度学习数据预处理1】使用Matlab分割音乐文件
- 【深度学习数据预处理2】使用Matlab批量生成声谱图
- 深度学习-----数据预处理
- 深度学习中的数据预处理
- DeepLearning: 数据预处理3:分割数据集(matlab代码)
- 深度学习笔记8 数据预处理
- 数据预处理练习(深度学习)
- 深度学习中的数据预处理方法
- 使用matlab预处理数据,读取,转置,切分,存储,导入
- 深度学习-----数据预处理是必要的,一些经验化的预处理措施
- 深度学习语义分割
- matlab、sklearn 中的数据预处理
- Matlab 1.矩阵的切割再把得到的矩阵按顺序拼接排列(1维数据按规律转为2维数据方便深度学习使用)
- 使用深度学习技术的图像语义分割最新综述
- MATLAB批量分割txt数据
- 神经网络算法学习---图像数据预处理1
- 机器学习数据预处理
- 【机器学习】数据预处理
- Linux常用命令编辑
- 滚回去刷水题~QAQ
- jsp页面中jstl标签详解 包括< c:choose><c:foreach> <c:when> <c:otherwise>
- input框设置onKeypress事件只能输入数字(兼容火狐和IE9)
- Android端、java端连接到SQL Server ,使用 jdbc 和 jtds ,总结
- 【深度学习数据预处理1】使用Matlab分割音乐文件
- zookeeper中没有hbase的master
- 判断奇数偶数的时候用%而不是/
- 数据迁移:MSSQL脚本文件过大,客户端没有足够的内存继续执行程序
- Qt与SQL Server开发学生成绩管理系统
- Linux磁盘与文件系统管理
- 不使用加减乘除计算数字相加问题
- Android引导页
- Tomcat的conf文件夹中的web.xml文件作用