如何批量淡出wav文件?

如何批量淡出wav文件?

我需要对一批 wav 文件(名称中包含空格,例如 C 0 120-127.wav)应用 2 秒的淡出效果。

文件长度各不相同,但无论文件长度如何,我都需要从每个文件末尾淡出 2 秒。

我知道这可以用 sox 来完成,但我检查的教程包括其他操作(淡入或转换)或用于指定输入和输出的单个文件,这很令人困惑(我是 sox 新手)。

我需要文件名保持不变,尽管将输出通过管道传输到另一个文件夹也是可以接受的。

谢谢。

答案1

我不知道如何在袜子中做到这一点,但大胆地找到了一种方法。

我使用以下命令创建了一个宏:选择所有工作室淡出导出 wav(这看起来多余,但否则不起作用)

然后我使用应用宏>调色板>文件功能并选择目录中的所有样本。

注意:首先您需要创建一个宏输出目录并在编辑>首选项>目录中设置默认值

这个过程比红袜队花费的时间要长,但它确实有效。

答案2

您的问题有四个不同的部分

  1. 循环如答案中所示((1),(2))到您之前的问题:

    for wav in *.wav
    do
        echo "Processing: $wav"
        sox "$wav" "processed_$wav" ...
    done
    
  2. 带空格的文件名应加引号。所以"this file.txt"或者'my music.wav'。如果您使用变量,则应将其放在双引号中,例如"$wavfile"

  3. 从最后开始逐渐消失。您可以man sox在自己的机器上使用该命令来阅读有关该sox命令的文档。或者有类似的手册页可用在线的。搜索四到五个“ fade”匹配项并确定声音文件淡入淡出部分的语法。请记住,时间点可以为零或正数(从声音文件的开头开始),也可以为负数(从末尾向后计算)。

  4. 读取/处理文件时不能覆盖文件。相反,您必须写入另一个文件,然后如果写入成功完成,则用修改后的文件替换原始文件。就我个人而言,如果我这样做,我总是将原始文件保存为备份(以防处理过程中出现问题并且我需要恢复它)。这是执行此操作的典型但简化的方法:

    if sox music.wav 'new music.wav'        # Write to "new music.wav"
    then
        # Successful, so replace original with new version
        mv -f music.wav music.wav.bak &&    # Save original - optional
        mv -f 'new music.wav' music.wav     # Rename new as original
        rm -f 'new music.wav'               # Try to remove new version in case mv failed
    fi
    

相关内容