注:读取路径更改str1,文件名更改str2,3,写入路径更改str4。
clc
clear
for i = 1:5
str1='C:\Users\Shadow\PycharmProjects\untitled5\1\num1_';str2=num2str(i);str3='.wav';
file=[str1,str2,str3];
try
[X,Fs] = audioread(file);
catch
warning(['读取文件 ' file ' 出错,可能不支持该文件格式。']);
end
try
Y = awgn(X,16);
% m=min(Y)
str4='C:\Users\Shadow\PycharmProjects\untitled5\1\num1.';
filename = [str4,str2,str3];
audiowrite(filename,Y,Fs);
catch
warning(['写出文件 ' file ' 出错,写出地址错误。']);
end
end
可能会报错:警告文件写入时候有裁剪,
那是因为audiowrite函数中的数据Y范围在[-1,1]之间,可通过修改awgn中数值大小强行更改上下区间(如果只是加噪声,没有具体要求的话)
如果要获取文件名或者文件夹内文件数,可以参考下面几行代码
files = dir('C:\Users\Shadow\Desktop\audio\1\*.wav');
[k len]=size(files);
folder = 'C:\Users\Shadow\Desktop\audio\1';
files = dir(fullfile(folder,'*.wav'));
filename={files.name};
file =filename{i};