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.
44 Answers
SoX, the Swiss Army knife of sound processing programs, can do this without a hitch:
sox --show-progress input.mp3 output.mp3 tempo 1.57
the best:
1You can do this by ffmpeg
ffmpeg -i input.mp3 -filter:a "atempo=1.5" -vn output.mp3atempo 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.mp3The 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 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
}