如何在 python 中更改正在播放的音频文件的播放速度?

How can I change playback speed of an audio file in python whilst it is playing?

我进行了大量搜索以尝试找到实现此目的的方法,但我找到的解决方案 or

我正在寻找一种在 python 中播放声音的方法(非阻塞),它允许我在播放时实时更改播放速度,没有间隙或切口。

改变音调没问题。音频质量甚至没有那么重要。

大多数解决方案I've found只允许在播放文件之前设置一次播放速度。

我找到了一个解决方案,使用 python-mpv,mpv.io

的包装器
from pynput.keyboard import Key, Listener
import mpv
speed=1

#quick function to change speed via keyboard. 
def on_press(key):

    global speed

    if key.char == 'f' :
        speed=speed-0.1
        player.speed=speed
    if key.char == 'g' :
        speed=speed+0.1
        player.speed=speed

player = mpv.MPV(ytdl=True)
player.play('/Users/regvardy/mediapipe_faceswap-main/test.wav')
with Listener(
        on_press=on_press) as listener:
    listener.join()
while True:
    
    player.speed=speed

我还没有测试它的稳定性。

这感觉像是一种解决方法,而不是我真正找到了解决方法,所以我可能会尝试找到不同的解决方案。

我在我的 python 项目中已经这样做了。我使用 VLC 在 PyQt5 GUI 中呈现 audio/video。 GUI 具有在播放时减慢或加快 A/V 的控件。 https://github.com/ccbogel/QualCoder 用于显示 audio/video 的主要 python 文件位于:view_av.py 并且其中有 Class DialogViewAV 它为 GUI 和 vlc 集成导入了一些额外的模块,如果它能帮助您了解它并提取您需要的代码位的话。

我有一个解释使用软件 A/V 部分的视频,在 45 秒时我提到了播放速度更改选项。 https://www.youtube.com/watch?v=TjOfPvvXh7U&t=0s

如果我有时间,也许,我可以准备一个脚本来做你想要的。