Answers:
如果所有文件都具有相同的参数,例如采样率和通道数,那么您仍然无法对它们进行连接。你必须去除WAV标题。
使用音频文件操作实用程序可能是最简单的sox
,它包含用于连接文件的方法。实际上,它默认情况下会这样做。例如,将三个.wav文件合并为一个长文件:
$ sox short1.wav short2.wav short3.wav long.wav
循环不会按您想要的顺序排列文件。你想要的是对名称进行排序,但用数字对待它们。sort -n
会这样做。
从而:
$ sox $(ls *.wav | sort -n) out.wav
如果sox
无法处理那么多文件,我们就可以分解这样的工作:
$ ls *.wav | sort -n > script
然后我们有一个脚本文件,看起来像:
1.wav
2.wav
...
3999.wav
4000.wav
...
file7500.wav
我们编辑它来创建几个命令行:
# catenate about half the files to temp1.wav
sox \
1.wav \
2.wav \
... \
3999.wav \
temp1.wav
# catenate the remainder to temp2.wav
sox \
4000.wav \
... \
7500.wav \
temp2.wav
# catenate the two halves
sox temp1.wav temp2.wav out.wav ; rm temp1.wav temp2.wav
作为文件列表上的第一个编辑步骤,您可以使用该vi
命令:%s/.*/& \\/
在每行之后添加反斜杠。
ls *.wav | sort -n
到文件中,将列表转换为sox
命令行,然后将其获取。