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? Commented Jan 2, 2010 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. Commented Jan 2, 2010 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. Commented Jan 2, 2010 at 9:12
  • 1
    this free web service may be of interest to you: podshifter.com
    – Molly7244
    Commented Jan 2, 2010 at 16:32

4 Answers 4

10

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. Commented Jan 2, 2010 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) Commented Jan 2, 2010 at 16:38
  • Awesome, nice find!
    – user1931
    Commented Jan 2, 2010 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... Commented Jan 2, 2010 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. Commented Apr 19, 2012 at 8:40
3

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
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
    Commented Apr 12, 2012 at 0:21
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
}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .