最安全的选择是单独加载它们并为每个使用掩码然后保存。例如:
[x1,fs] = audioread('fileName1.wav');
tinit = 1*60 + 34; % In seconds
tend = 2*60 + 4;
ll = floor(tinit*fs) : floor(tend*fs);
x1 = x1(ll); % apply the mask to the segment of audio you want
audiowrite('fileName1edit.wav',x1,fs,'BitsPerSample',24)
但是,如果您有大量文件要处理,一个不太可靠但更舒适的解决方案可能是将所有 wav 文件转储到一个结构中
Files = dir('*.wav');
并让他们打电话
[x,fs] = audioread(Files(idx).name);
在 length(Files) 的 for 循环中,您可以在其中提示一个框对话框,询问开始的分钟和秒以及结束的分钟和秒。例如:
for idx = 1 : length(Files)
[x,fs] = audioread(Files(idx).name);
prompt = {'Min start:','Second start:','Min end:','Second end:'};
T = inputdlg(prompt,'Enter the times',[1,20]);
Ninit = round(fs*(str2num(T{1})*60 + str2num(T{2})));
Nend = round(fs*(str2num(T{3})*60 + str2num(T{4})));
ll = Ninit:Nend;
x = x(ll); % or x = x(Ninit:Nend);
audiowrite(Files(idx).name,...);
end
有关更多示例,请参阅 inputdlg() 的文档。如果您不使用 _edit.mat 或类似的方式编辑 audiowrite() 中输出音频文件的字符串,请在文件夹中备份您的文件,以确保安全。