matlab - 如何使用audioread读取文件序列,然后将它们合并?

标签 matlab audio

我正在尝试读取文件夹中的所有wav文件,然后合并这些文件。我了解audioread和audiowrite。我正在努力自动执行文件夹中一系列文件的处理,因此我只需要更改dirin名称即可移至下一个文件夹。这里的代码显然不起作用,但是试图演示我想做什么。

DirIn = 'C:\Users\24hr sound analysis\17';

eval(['filelist=dir(''' DirIn '/*.wav'')']);

for i = 1:length(filelist);
[f(i),fs] = audioread(strcat(DirIn,'/',filelist(i).name)); % read in wav file
end

combined = [f1;f(i)]; 

audiowrite('combined.wav',combined, fs)

编辑:我在下面实现了意见,但现在有一个新问题。我合并了6个1分钟的WAV文件,我的输出是6分钟36秒。那多余的26秒从哪里来?
DirIn = 'C:\Users\24hr sound analysis\17';

eval(['filelist=dir(''' DirIn '/*.wav'')']);

cd(DirIn);

combined = [];

fs = 44800

for i = 1:length(filelist);
        Filename = filelist(i).name;
        aud_file = audioread(Filename);
        combined = [combined;aud_file];
end

audiowrite('combined.wav', combined, fs)

最佳答案

您可以执行以下操作,然后在其中插入audioread函数:

dir_name = 'full path to the main folder';
sub_dir_names = dir(fullfile(dir_name,'*'));
N = setdiff({sub_dir_names([sub_dir_names.isdir]).name},{'.','..'}); % list of only subfolders of D.
combined = [];
for ii = 1:numel(N)
    T = dir(fullfile(dir_name,N{ii},'*')); % improve by specifying the file extension.
    C = {T(~[T.isdir]).name}; % files in subfolder.
    for jj = 1:numel(C)
        F = fullfile(dir_name,N{ii},C{jj})
        % do whatever with file F.
        % simple implementation assuming all the files are .wav
        aud_file = audioread(F);
        combined = [combined;aud_file];
    end
end
audiowrite(combined, Fs);

当您进入内部循环时,将使用audioread连接读取的文件。

当您跳出循环时,只需使用audiowrite写入文件;它应该在以后执行任务。

注意

这只是为了向您展示如何遍历目录内所有子目录的逻辑,当然还有更多的方法可以执行您想要的操作。

关于matlab - 如何使用audioread读取文件序列,然后将它们合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58488583/

相关文章:

c - C 中的滚动中位数 - Turlach 实现

matlab - 如何将 MATLAB 变量写入格式如 3.4d3 的文本文件

matlab - 有没有基于 GPU 的 Matlab 深度学习工具箱?

c++ - 检测录音中的不同声音/来源

android - 将视频的配​​乐更改为相同长度的音频文件

c# - 应用程序启动Windows Phone时如何播放声音

matlab - 什么是 Java HashSet 的 MATLAB 等价物?

cocoa-touch - 播放时如何处理ipod库音频文件原始数据

c++ - 使用 sin() 生成的声音中的金属声音

c++ - Matlab Mex 文件构建 : Code change doen't influence the mex file anymore