---
title: "Audio Tempo"
description: "Change the speed of an audio clip from 0.5x to 2x with the PITCH PRESERVED (ffmpeg atempo), so a voice line gets faster or slower without turning into a chipmunk. Two modes: Factor (a speed, >1 is faster and shorter) or Target seconds (time-stretch the clip to land on an exact length, for fitting a re-voiced line onto an existing lip-sync take). Speed 1 (or blank) hands the input through untouched. A speed or fit outside 0.5x to 2x is refused with the numbers, never clamped. Outputs the audio and its measured duration. Free: deterministic processing, the output url is content-addressed, so an unchanged re-run reuses the last file."
updated: 2026-09-30
---

# Audio Tempo

**Node type:** `utility:audio_tempo`  
**Category:** `Editing`

## Description

Change the speed of an audio clip from 0.5x to 2x with the PITCH PRESERVED (ffmpeg atempo), so a voice line gets faster or slower without turning into a chipmunk. Two modes: Factor (a speed, >1 is faster and shorter) or Target seconds (time-stretch the clip to land on an exact length, for fitting a re-voiced line onto an existing lip-sync take). Speed 1 (or blank) hands the input through untouched. A speed or fit outside 0.5x to 2x is refused with the numbers, never clamped. Outputs the audio and its measured duration. Free: deterministic processing, the output url is content-addressed, so an unchanged re-run reuses the last file.

## Canvas ports

These appear as port handles on the left side of the node.

| ID      | Label     | Details              |
| ------- | --------- | -------------------- |
| `audio` | **Audio** | `AUDIO` _(required)_ |

## Sidebar config

These render as form fields in the right-side config panel when the node is selected.

| ID              | Label                            | Details                                      |
| --------------- | -------------------------------- | -------------------------------------------- |
| `mode`          | **Mode**                         | `TEXT` · options: `factor`, `target_seconds` |
| `speed`         | **Speed (0.5 to 2; blank = 1x)** | `NUMBER`                                     |
| `targetSeconds` | **Target seconds (Target mode)** | `NUMBER`                                     |
| `format`        | **Format**                       | `TEXT` · options: `mp3`, `wav`               |

## Outputs

| ID         | Label            | Type     |
| ---------- | ---------------- | -------- |
| `audio`    | **Audio**        | `AUDIO`  |
| `duration` | **Duration (s)** | `NUMBER` |

## What it is for

A voice line runs 0.4 seconds long for the shot. Speed it up to 1.1x and it fits,
with the pitch unchanged. ffmpeg's `atempo` retimes without resampling the
voice up, so it sounds faster, not higher.

Re-voicing a reel with a new voice clone? Each new phrase comes out a little
longer or shorter than the lip-sync take it has to land on. Set **Mode** to
Target seconds, type the take's length, and the node measures the phrase and
picks the speed for you (source length / target).

## Settings

- **Mode**: Factor (default) reads Speed. Target seconds reads Target seconds
  and ignores Speed.
- **Speed** is 0.5 to 2, >1 is faster and shorter. Blank or 1 hands the input
  through untouched (no transcode).
- **Target seconds** (Target mode): the length to land on. The speed it needs
  must also be 0.5 to 2, so a 2.2s phrase fits anywhere from 1.1s to 4.4s. The
  source is measured from the file (wav, mp3 and m4a); an unreadable one is
  refused, not guessed.
- **Format** is mp3 (default) or wav. Sample rate and channels are kept from
  the source.

Anything outside the range is refused with the numbers, never clamped.

## Outputs

**Audio** is the retimed clip. **Duration** is its measured length in seconds,
read from the output file, so you can wire it into anything that needs the real
number.

## Free, and why

The node is in the free set: it re-runs whenever something downstream runs, and
it has no Run button. The output file is named by a hash of the input url and
the settings, so an unchanged re-run reuses the last file and invokes nothing.
Change the speed and it makes a new file.

---

_Auto-generated from the Wireflow node registry._

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
