【问题标题】:Taking the left and right channels of two wav files and joining them into one separate stereo file将两个 wav 文件的左右声道合并为一个单独的立体声文件
【发布时间】:2015-09-22 08:55:27
【问题描述】:

我有两个立体声 wav 文件,我想将第一个音频文件的左声道和第二个音频文件的右声道合并到一个新的波形文件中。

这是我正在尝试做的图片。

我知道我可以将文件读入 matlab / octave 并使用以下代码获得单独的左右声道:

[imported_sig_1, fs_rate, nbitsraw] = wavread(strcat('/tmp/01a.wav'));
imported_sig_L=imported_sig_1(:,1)';

[imported_sig_2, fs_rate, nbitsraw] = wavread(strcat('/tmp/02a.wav'));
imported_sig_R=imported_sig_2(:,2)';

然后我可以使用代码编写我想要的新频道

wavwrite([(imported_sig_L)' (imported_sig_R)'] ,fs_rate,16,'newfile.wav'); %

我遇到的问题是导入文件所需的时间和波形文件占用的数组大小。我要导入的文件大约需要 1-4 小时,并且需要一段时间才能导入,并且在阵列中需要大量内存。导入完整文件然后导出它们是否存在?

我在 Ubuntu 14.04 上使用 octave 3.8.1,这类似于 matlab,但我也可以访问 sox

【问题讨论】:

    标签: matlab audio octave sox


    【解决方案1】:

    我认为瓶颈是您的硬盘驱动器,并且您的系统有足够的内存来同时将所有文件保存在内存中。如果是这样,您将不会仅获得一个频道的速读。使用 16 位 wav,您的 HDD 必须跳过 2 个字节,读取 2 个字节,跳过 2 个字节,读取 2 个字节......对于这样的读取操作,将完整文件复制到内存中并删除不需要的通道要快得多然后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多