You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Linux下支持非恒定速率变速且不改变音调的命令行音频工具

Linux命令行实现渐变变速(保音调)的音频方案

针对你需要的线性/动态变速、不改变音调、命令行可用、无需分割片段的需求,推荐使用ffmpeg结合rubberband滤镜的方案——你之前可能只用到了ffmpeg的固定变速参数,其实它支持通过表达式实现随时间变化的动态tempo。

核心实现命令

以下命令可以直接实现从开头100%速率线性增长到结尾150%的效果,同时保持音调不变:

ffmpeg -i input.wav -filter_complex "[0:a]rubberband=tempo='1.0 + 0.5*t/duration':pitch=1.0[aout]" -map "[aout]" output.wav

参数解释

  • tempo='1.0 + 0.5*t/duration':t代表当前处理的音频时间点,duration是输入音频的总时长,这个表达式实现了tempo从1.0(100%)到1.5(150%)的线性增长。
  • pitch=1.0:强制保持原音调,避免变速导致的音调偏移。
  • 支持输入输出格式:wav、mp3、ogg等ffmpeg兼容的所有常见音频格式,只需替换文件名后缀即可。

额外变速模式

除了线性增长,还可以轻松实现其他变速曲线:

  1. 指数增长(速率增长越来越快):
ffmpeg -i input.wav -filter_complex "[0:a]rubberband=tempo='1.0 * pow(1.5, t/duration)':pitch=1.0[aout]" -map "[aout]" output.wav
  1. 分段变速(比如前半段100%,后半段线性增长到150%):
ffmpeg -i input.wav -filter_complex "[0:a]rubberband=tempo='if(lt(t, duration/2), 1.0, 1.0 + 0.5*(t-duration/2)/(duration/2))':pitch=1.0[aout]" -map "[aout]" output.wav

优势说明

  • 无需分割音频片段,一次性处理,效率远高于分段变速方案,音质和rubberband独立工具一致。
  • 完全命令行友好,可直接嵌入Bash脚本执行。

内容的提问来源于stack exchange,提问作者Skab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:35:26