加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Sox和多个音频文件的音高变化

发布时间:2020-12-13 22:53:40 所属栏目:Linux 来源:网络整理
导读:我想用sox改变每个音乐文件夹中每个mp3的音高.我用bash写的: function pitch_mp3 {for mp3 in /home/mp3s/*/*.mp3 do cd "$(dirname "$mp3")" output=$(basename "$mp3" .mp3)PITCHED.mp3 sox -S "$mp3" -C 192 "$output" pitch 50done} 它将音高添加到例如
我想用sox改变每个音乐文件夹中每个mp3的音高.我用bash写的:

function pitch_mp3 {
for mp3 in /home/mp3s/*/*.mp3 
do 
  cd "$(dirname "$mp3")"
  output=$(basename "$mp3" .mp3)PITCHED.mp3
  sox -S "$mp3" -C 192 "$output" pitch 50
done
}

它将音高添加到例如01song.mp3,输出文件为01songPITCHED.mp3.
但是会发生的事情是sox第一次做这个工作,然后再次循环通过文件夹并添加音调到已经投入的mp3-s,所以他们的文件名被证明是01songPITCHEDPITCHED.mp3.当我注意到时,我停止了它,所以我不知道它是否会第三次添加音高等等.

为什么以及如何解决这个问题?

解决方法

如果您只想跳过任何以PITCHED.mp3结尾的文件,我会使用case语句

case "$mp3" in
  *PITCHED.mp3)
    echo skipping "$mp3"
    ;;
  *)
    #repitch as before
    ;;
esac

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读