6

I'm looking for a Windows command-line tool that will allow me to increase the playback speed of MP3 files (podcasts and audiobooks). Preferrably free or open source.

Update: I want to be able to listen to a 1 hour podcast in less than 60 minutes, but it would be nice if the pitch wasn't changed.

If necessary, I can convert the MP3 to WAV first and then back again.

4
  • Increase the speed like make them sound chipmunky and have the file shorter? Jan 2 '10 at 8:46
  • ideally this would be a function built into the player, so you wouldn't have to process audio first, then play it. sadly not all players (software or hardware) include add-on/plugin capabilities. Jan 2 '10 at 9:06
  • Yes, my MP3 player does support faster playback, but it doesn't always work, and I'd like to fine-tune the speed setting. Jan 2 '10 at 9:12
  • 1
    this free web service may be of interest to you: podshifter.com
    – Molly7244
    Jan 2 '10 at 16:32
8

SoX, the Swiss Army knife of sound processing programs, can do this without a hitch:

sox --show-progress input.mp3 output.mp3 tempo 1.5
7
  • Thanks, but it removes all ID3 data after re-encoding. Jan 2 '10 at 9:35
  • SoX doesn't have support for MP3 by default, but there's a build at CodeProject with Lame and Mad built-in: codeproject.com/KB/aspnet/Compiling_SOX_with_Lame.aspx (or follow the build instructions in README.win32.txt) Jan 2 '10 at 16:38
  • Awesome, nice find!
    – John T
    Jan 2 '10 at 16:43
  • 3
    Use the switch "tempo" instead of "speed" and the pitch won't be changed. I ended up converting my MP3s to WAV, running SoX, encoding back to MP3 and re-insert ID3 tags... Jan 2 '10 at 23:12
  • 1
    SoX works much better if you use "tempo" as Christian said. Use "tempo -s 1.5" for even better quality for podcasts. Apr 19 '12 at 8:40
2

the best: mp3-speed.en.softonic.com/

1
  • Gave it a try and the quality of the output of a 1.75x speed-up seemed quite choppy. I'm used to listening at 2x on an iPod and that was much smoother.
    – pettys
    Apr 12 '12 at 0:21
0

You can do this by ffmpeg

ffmpeg -i input.mp3 -filter:a "atempo=1.5" -vn output.mp3

atempo maximum is 2; however, you can use the atempo filter more than once. Eg. to speed it up by 4:

ffmpeg -i input.mp3 -filter:a "atempo=2,atempo=2" -vn output.mp3

The default output bitrate of ffmpeg is 128kb/s. If you have a higher quality MP3 file and want the output to also be high quality use the ab flag Eg. to output with a bitrate of 320kb/s:

ffmpeg -i input.mp3 -filter:a "atempo=2,atempo=2" -ab 320k -vn output.mp3
0

Based on John T's answer I created a PowerShell script to convert all .wav files in a folder.

# Variables
$soxPath = "C:\Program Files (x86)\sox-14-4-2\sox.exe"
$wavFolder = "C:\temp\MyWavFiles"
$generatedFileFolder = $wavFolder + "\MyGeneratedWavFiles"
$tempo = 1.5
$newFileSuffix = "" # Optional

# Program
If(!(test-path $generatedFileFolder))
{
      New-Item -ItemType Directory -Force -Path $generatedFileFolder
}
Get-ChildItem $wavFolder -Filter *.wav | 
Foreach-Object {
    
    $newFile = $generatedFileFolder + "\" + $_.BaseName.ToString() + $newFileSuffix + $_.Extension.ToString()
    & $soxPath $_.FullName $newFile  tempo $tempo
    Write-Host Converted $_.FullName to $newFile
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.