我知道现在已经很晚了,但我写了一个程序可以将mp3转换成不同的播放速度。
首先需要将.MP3文件转换成.Wav格式,因为PYRubberBand仅支持.wav格式。然后同时拉长时间和音高以避免花栗鼠效应。
import wave
import sys
from pydub import AudioSegment
sound = AudioSegment.from_mp3(sys.argv[1])
sound.export("file.wav", format="wav")
print(sys.argv[1])
import soundfile as sf
import pyrubberband as pyrb
y, sr = sf.read("file.wav")
y_stretch = pyrb.time_stretch(y, sr, 0.5)
y_shift = pyrb.pitch_shift(y, sr, 0.5)
sf.write("analyzed_filepathX5.wav", y_stretch, sr, format='wav')
sound = AudioSegment.from_wav("analyzed_filepathX5.wav")
sound.export("analyzed_filepathX5.mp3", format="mp3")
y_stretch = pyrb.time_stretch(y, sr, 0.75)
y_shift = pyrb.pitch_shift(y, sr, 0.75)
sf.write("analyzed_filepathX75.wav", y_stretch, sr, format='wav')
sound = AudioSegment.from_wav("analyzed_filepathX75.wav")
sound.export("analyzed_filepathX75.mp3", format="mp3")
y_stretch = pyrb.time_stretch(y, sr, 1.5)
y_shift = pyrb.pitch_shift(y, sr, 1.5)
sf.write("analyzed_filepathX105.wav", y_stretch, sr, format='wav')
sound = AudioSegment.from_wav("analyzed_filepathX105.wav")
sound.export("analyzed_filepathX105.mp3", format="mp3")
y_stretch = pyrb.time_stretch(y, sr, 1)
y_shift = pyrb.pitch_shift(y, sr, 1)
sf.write("analyzed_filepathXnormal.wav", y_stretch, sr, format='wav')
sound = AudioSegment.from_wav("analyzed_filepathXnormal.wav")
sound.export("analyzed_filepathXnormal.mp3", format="mp3")
请确保安装以下内容:
Wave、AudioSegment、FFmpeg、PYRubberBand、Soundfile
使用此运行程序时,请输入以下命令:
python3 文件名.py mp3文件名.mp3
speedup(seg, playback_speed=1.5, chunk_size=150, crossfade=25)
中的参数,特别是chunk_size
和crossfade
。有没有人能够友好地解释一下?谢谢! - itsMe