用于加快MP3文件播放速度的Python模块?
我有一些MP3文件,里面是讲座录音,讲者说话很慢。我想把这些MP3文件的播放速度调快,大约是正常速度的1.5倍。
有没有人能推荐一个好的Python库来实现这个?顺便说一下,我是在Windows上使用Python 2.6。
提前谢谢大家。
5 个回答
0
我也想实现同样的功能,试过了所有推荐的答案。可惜的是,pydub
的创始人给的答案并没有详细说明,我找不到例子,而其他方法最终输出的文件音调都变得很高。
最后,最简单有效的方法确实是使用 pydub
,不过是用一个看起来没有文档说明(或者很难找到)的功能,叫做 speedup
。
这个方法非常简单:
from pydub import AudioSegment
import os
# A couple of var for readability
slow_mp3_path = "/path/to/my/slow.mp3"
fast_mp3_path = "/path/to/my/fast.mp3"
# Get the audiosegment from the file
slow_mp3_obj = AudioSegment.from_file(tmp_path)
# File's in memory, you can safely delete the original file if you want to save disk space now
os.remove(slow_mp3_path)
# Speed it up
speed_update = slow_mp3.speedup(1.5)
# Save the updated mp3
speed_update.export(fast_mp3_path, format="mp3")
就这样,新的文件在 fast_mp3_path 中会比原来快 1.5 倍,而且音调不会改变。
3
我写了一个库,叫做 pydub,主要是用来处理音频的。
如果你对这些东西的工作原理感兴趣,我创建了一个 实验性的时间拉伸算法。
简单来说,你想要丢掉一部分数据,但不能只是让音频播放得更快,因为那样音调会变得很高(就像synthesizerpatel提到的)。相反,你需要丢掉一些小块(人耳能听到的最低频率是20赫兹,所以50毫秒的小块不会造成听得见的频率变化,尽管可能会有其他一些问题)。
附注 - 我得到50毫秒的方式是:
20 Hz == 1 second per 20 cycles
or
1000 ms per 20 cycles
or
1000ms / 20Hz == 50ms per cycle