我有一个长度为10秒的wav文件,我希望每秒在Matlab中分割10个文件

时间:2017-11-21 09:11:12

标签: matlab

我在Matlab中读了一个长度为10秒的Wav文件。现在我想将音频文件分成10个文件,这些文件应该包含相同的长度。我该怎么办?

1 个答案:

答案 0 :(得分:0)

这将完成这项工作:

[y,Fs] = audioread('orig.wav');

OUTPUT_FOLDER='z:/';
OUTPUT_FILE_PREFIX='wave';
N_SPLIT=10;
y(end+1:end+N_SPLIT-mod(length(y),N_SPLIT),:)=0;%need to be divisible by N_SPLIT, so pad some zeros at end. 
y_parts=reshape(y,[],1,N_SPLIT);%split signal
for i=1:N_SPLIT
    filename=sprintf('%s%02d.wav',OUTPUT_FILE_PREFIX,i);
    filepath=fullfile(OUTPUT_FOLDER,filename);
    y_to_write=y_parts(:,:,i);
    audiowrite(filepath,y_to_write,Fs); %save
end