放慢 mp3 音频速度

放慢 mp3 音频速度

我喜欢 VLC 减慢音频播放速度的选项。

现在我想将我的 mp3 文件转移到便携式播放器上并在那里播放。不幸的是,玩家没有减速选项。

如何转换 mp3,使其听起来像是使用 VLC 缓慢播放的?

我更喜欢命令行工具,但也会接受其他适用于 GNU/Linux 的免费软件工具。

答案1

我建议使用索克斯像这样:

sox <input> <output> tempo 0.5

这会将速度减慢<input>2 倍并将结果记录到<output>.

您可以添加选项--show-progress来显示相关信息和进度百分比。

请注意,如果<input>isnormal.wav<output>is half-tempo.ogg,SoX 将自行检测不同的音频编码(有关该部分的更多控制,请阅读man sox)。

tempo算法应该给出与 VLCscaletempo模块类似的结果。但是您可以尝试替代stretch算法:

sox <input> <output> stretch 2

预计结果会更加综合(再次阅读man sox以了解详细信息),并且请注意该参数是给定参数的倒数tempo2而不是0.5在本示例中)。

SoX 通过 和 选项提供了更多时间操纵的可能性speedpitch并且bend可以轻松探索。

要安装 SoX,请使用apt-get

sudo apt-get install sox

要启用额外的编解码器(包括 MP3),请添加此库:

sudo apt-get install libsox-fmt-all

最后一点,我会回到 VLC,因为您可以通过以下方式从命令行放慢速度播放文件:

cvlc --rate 0.5 <input>

因此,可能有一种方法可以要求 VLC 将结果保存到某个文件,或者将音频输出到 JACK,然后使用 JACK 兼容的录音机。

答案2

以下脚本使用 ffmpeg 执行此操作。

#!/bin/sh

# Usage:
#   slow_down.sh infile.mp3 outfile.mp3 0.75
#   Can't slow down more than by a factor of 0.5 (limitation of ffmpeg).

if [ $# -lt 3 ]; then
  echo 1>&2 "$0: not enough arguments"
  exit 2
fi

rm -f $2 temp.mp4
ffmpeg -i $1 -filter_complex "[0:a]atempo=$3[a]" -map "[a]"  -c:a aac temp.mp4
ffmpeg -i temp.mp4 -ar 48000 $2
rm -f temp.mp4

这可能可以简化,但我无法弄清楚如何将两个 ffmpeg 命令合并为一个。

我发现这个方法的输出听起来比 sox 提供的两种算法的结果好得多。对我来说,这听起来与在 YouTube 界面中减慢音频速度的效果一样好。

答案3

ffmpeg -i "audio.mp3" -filter:a "atempo=0.5" "output_audio.mp3"

for %f in (*.mp3) do ffmpeg -i "%f" -filter:a "atempo=0.5" "output\slow_%f"

相关内容