无法弄清楚为什么 PyDub 不起作用

问题描述

我正在尝试将 pydub 用于音乐项目,但是在尝试使用这段代码播放声音时

from pydub import AudioSegment
from pydub.playback import play
sound = AudioSegment.from_wav("s1.wav")
play(sound)

我收到以下错误

RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg,but may not work
  warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg,but may not work",RuntimeWarning)
C:\Python\python385\lib\site-packages\pydub\utils.py:184: RuntimeWarning: Couldn't find ffplay or avplay - defaulting to ffplay,but may not work
  warn("Couldn't find ffplay or avplay - defaulting to ffplay,RuntimeWarning)
Traceback (most recent call last):
  File "C:/Users/vicen/Desktop/music project/mian.py",line 6,in <module>
    play(s1)
  File "C:\Python\python385\lib\site-packages\pydub\playback.py",line 74,in play
    _play_with_ffplay(audio_segment)
  File "C:\Python\python385\lib\site-packages\pydub\playback.py",line 18,in _play_with_ffplay
    seg.export(f.name,"wav")
  File "C:\Python\python385\lib\site-packages\pydub\audio_segment.py",line 809,in export
    out_f,_ = _fd_or_path_or_tempfile(out_f,'wb+')
  File "C:\Python\python385\lib\site-packages\pydub\utils.py",line 60,in _fd_or_path_or_tempfile
    fd = open(fd,mode=mode)
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\vicen\\AppData\\Local\\Temp\\tmpvwotqts5.wav'

有人明白为什么它不起作用吗?我对 python 相当陌生,所以我不知道。

解决方法

python 脚本遇到了 Permission Error 它正在尝试读取 'C:\\Users\\vicen\\AppData\\Local\\Temp\\tmpvwotqts5.wav' 文件,但没有权限在目录中写入。

更改上述 Temp 文件夹的权限应该可以解决问题。

或者您可以使用 sudo 命令运行您的 python 脚本。由于您使用的是 windows this 应该在这方面有所帮助。

,

轻松修复from here

pip install simpleaudio

Pydub 广泛使用 tempfiles。如建议的 here,您可以添加 TMPDIR 环境变量。