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

我有一个文本文件看起来像这样 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 来修剪音频呢?

最佳答案

更新的答案

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

#!/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 并再次运行它。如果您不熟悉脚本,请先备份。

https://stackoverflow.com/questions/48100477/

相关文章:

reactjs - 如何将 WebM 格式的音频输入传递给 Google Speech API

javascript - 未知提供者 : $cookies angularjs

javascript - Angular CLI 如何全局定义变量 [window.myVar]

android - ARCore 尺度估计精度

python - 如何绘制带箭头的轴线?

docker - 如何解决 "docker: Error response from daemon:

python - django-crontab 不执行预定作业

c# - Dynamodb : No defined key schema. 必须为所有表定义至少包

postgresql - CDC 更改数据捕获开始时间 - Postgres 复制

react-native - 在 React Native WebView 中启用弹出窗口