我有一个文本文件,如下所示文本文件 https://i.stack.imgur.com/iDm8k.png,我想使用 sox 根据文本文件中的时间修剪音频文件,这样我就可以有从 0.0 到 6.16、6.16 到 13.44、13.44 到 17.54 等不同的音频剪辑。
我了解 sox 修剪的基本脚本是*$ sox audio.wav newaudio.wav trim starttime duration*
但是我如何从文本文件中获取持续时间并使用 sox 来修剪音频?
更新答案
我认为下面的代码可能更接近:
#!/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
然后开始Terminal并运行以下命令使脚本可执行 - 只需一次就足够了:
chmod +x $HOME/trimmer
然后将目录更改为音频文件所在的目录,例如:
cd path/to/audio/files
然后运行脚本:
$HOME/trimmer
如果您喜欢它的外观,请删除该词echo
从脚本中再次运行它。如果您不熟悉脚本编写,请先进行备份。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)