我想保留音频文件的几个部分,将它们合并在一起,但在连接点处没有任何不连续性(“咔嗒声”)。有一个 SoX 命令可以做到这一点(https://superuser.com/a/677351),但它不进行任何交叉淡入淡出,因此会出现不连续性。有没有办法使用命令行实用程序或库来实现这一点?(除了编写自己的代码——如果有必要,我肯定会这样做)
答案1
事实证明,使用 SoX 完全可以做到这一点,即使只调用一次 SoX,使用trim
和splice
效果。但数字参数并不简单易写。除最后一个修剪区域外,所有修剪区域都必须在末尾包含用于交叉淡入淡出的其他时间,并且拼接的参数还必须指定适当的第一个区域长度(包括额外的时间)、第一次拼接后的第 1 个区域 + 第 2 个区域、第 1 个区域 + 第 2 个区域 + 第 3 个区域等。
我编写了一个可以执行此操作的脚本(使用 Scala 语言),我迟早会发布它。
Sox 有一个缺点,似乎trim
效果不适用于浮点格式,所以最后音频数据会转换为(最多) 24 位整数格式,这可能是可以接受的,也可能不可接受,具体取决于您的使用情况。