如何在Mac终端中使用SoX从文本文件中剪切特定时间的音频文件?

问题描述 投票:1回答:1

我有一个文本文件看起来像这个text file,我想使用sox根据文本文件中的时间修剪音频文件,所以我可以有不同的音频剪辑从0.0到6.16,6.16到13.44,13.44到17.54等..

我理解sox trim的基本脚本是*$ sox audio.wav newaudio.wav trim starttime duration* 但是如何从文本文件中获取持续时间并使用sox来修剪音频?

macos terminal sox
1个回答
0
投票

更新的答案

我认为以下代码可能更接近:

#!/bin/bash
index=0
while read this; do
   if [ $index -gt 0 ]; then
      d=$(bc <<< "$this - $start")
      echo sox audio.wav new-$index.wav trim \"$start\" \"$d\"
   fi
   ((index+=1))
   start=$this
done < times.txt

我不使用sox,但这是方法的要点 - 它假设你的时间在一个名为times.txt的文件中:

#!/bin/bash
index=0
while read this; do
   if [ $index -gt 0 ]; then
      echo sox audio.wav new-$index.wav trim $start $this
   fi
   ((index+=1))
   start=$this
done < times.txt

样本输出

sox audio.wav new-1.wav trim 0.0 6.16
sox audio.wav new-2.wav trim 6.16 13.44
sox audio.wav new-3.wav trim 13.44 17.54
sox audio.wav new-4.wav trim 17.54 23.3
sox audio.wav new-5.wav trim 23.3 26.5

因此,您将所有代码保存在名为$HOME/trimmer的文件中,然后启动终端并运行以下命令以使脚本可执行 - 只需一次即可:

chmod +x $HOME/trimmer

然后将目录更改为音频文件所在的位置,例如:

cd path/to/audio/files

然后运行脚本:

$HOME/trimmer

如果您喜欢它的外观,请从脚本中删除单词echo并再次运行它。如果您不熟悉脚本,请先备份。

© www.soinside.com 2019 - 2024. All rights reserved.