python - 如何在不改变音高的情况下改变音频速度?

标签 python audio moviepy

我需要在特定时间以特定持续时间将音频应用于视频,但某些音频持续时间比需要的更长(或更短)。如何在不改变音高的情况下改变音频的速度?我尝试更改 fps(通过将所需持续时间乘以除以音频持续时间)但它无法正常工作。

original = VideoFileClip("orig.mp4")
clips = [orig.audio.volumex(0.3)]
subs = [] #some array
i = 0
for sub in subs:
    clip = AudioFileClip("\\temp{}.mp3")
    mult = clip.duration / (sub.end - sub.start)  + 0.00001
    clip = AudioArrayClip(clip.to_soundarray(buffersize=500, fps=24000/mult), fps=24000).set_start(sub.start).set_end(sub.end)
    clips.append(clip)
    i += 1

final = CompositeAudioClip(clips)
final.write_audiofile("final.mp3")

最佳答案

你可以使用 librosa 模块:

from scipy.io import wavfile
import librosa, numpy as np

song, fs = librosa.load("song.wav")

song_2_times_faster = librosa.effects.time_stretch(song, 2)

scipy.io.wavfile.write("song_2_times_faster.wav", fs, song_2_times_faster) # save the song

关于python - 如何在不改变音高的情况下改变音频速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41397111/

相关文章:

python - 为应用程序编写单元测试的模拟 redis

python - 根据多列之间的差异过滤数据框

html - 隐藏并再次显示 iframe 后音频标签不出现?

python - 类型错误 : only size-1 arrays can be converted to Python scalars (matplotlib)

winapi - 如何在MASM32中循环播放声音文件

javascript - jQuery:单击 native 音频元素

python - 属性错误 : 'module' object has no attribute 'audio_fadein'

python-3.x - 连接具有不同分辨率(通常为 1080 或 720)的视频的最佳方法

python - Tkinter 中的 MoviePy/ffmpeg 进度条

python - Python中概率密度函数的更快卷积