Change Audio Speed Without Pitch Shift in FFmpeg
This article provides a quick guide on how to change the tempo of an
audio file without altering its pitch using FFmpeg’s atempo
audio filter. You will learn the basic syntax for speeding up or slowing
down audio, as well as how to bypass the filter’s default limits for
extreme speed adjustments by chaining multiple filters together.
The Basic Syntax
To change the speed of an audio file, use the -filter:a
(or -af) flag followed by the atempo filter
and your desired speed multiplier. The value must be a real number
between 0.5 (half speed) and 2.0 (double
speed).
Here is the template command:
ffmpeg -i input.mp3 -filter:a "atempo=MULTIPLIER" output.mp3Examples
To speed up audio by 1.5x (50% faster):
ffmpeg -i input.mp3 -filter:a "atempo=1.5" output.mp3To slow down audio to 0.8x (20% slower):
ffmpeg -i input.mp3 -filter:a "atempo=0.8" output.mp3Going Beyond the Limits (Chaining Filters)
Because the atempo filter only supports values between
0.5 and 2.0, you cannot use a single filter
for speeds outside this range. To achieve faster or slower speeds, you
must chain multiple atempo filters together, separating
them with commas.
To speed up audio to 4x speed (2.0 * 2.0 = 4.0):
ffmpeg -i input.mp3 -filter:a "atempo=2.0,atempo=2.0" output.mp3To slow down audio to 0.25x speed (0.5 * 0.5 = 0.25):
ffmpeg -i input.mp3 -filter:a "atempo=0.5,atempo=0.5" output.mp3Using these configurations, FFmpeg will process the audio tempo while preserving the original pitch of the source file.