尝试在 python 中播放 AudioSegment 时权限被拒绝

Dim*_*ims 1 audio permissions mp3 python-2.7 audiosegment

我试图通过沉默将 mp3 文件分割成块并获取

  File "C:\Anaconda3\envs\py27\lib\site-packages\pydub\playback.py", line 71, in play
    _play_with_ffplay(audio_segment)
  File "C:\Anaconda3\envs\py27\lib\site-packages\pydub\playback.py", line 18, in _play_with_ffplay
    seg.export(f.name, "wav")
  File "C:\Anaconda3\envs\py27\lib\site-packages\pydub\audio_segment.py", line 780, in export
    out_f = _fd_or_path_or_tempfile(out_f, 'wb+')
  File "C:\Anaconda3\envs\py27\lib\site-packages\pydub\utils.py", line 57, in _fd_or_path_or_tempfile
    fd = open(fd, mode=mode)
IOError: [Errno 13] Permission denied: 'd:\\tmp\\tmpo5dfj5.wav'
Run Code Online (Sandbox Code Playgroud)

当我尝试玩它的时候

        audio = AudioSegment.from_mp3(lessonFilePath)
        chunks = split_on_silence(audio, min_silence_len=2000, silence_thresh=-16)
        ordinalAudio = 0
        chunk = chunks[ordinalAudio]
        play(chunk) # here it is rising
Run Code Online (Sandbox Code Playgroud)

我有权访问该目录并且可以执行

fd = open(fd, mode=mode)
Run Code Online (Sandbox Code Playgroud)

在我自己的单独脚本中。

还可以检查什么?

小智 5

该问题与 pydub 如何管理临时音频文件有关。Pydub 目前有一个错误,它会多次打开临时文件,该错误在 Linux 上工作,但会导致在 Windows 上观察到的错误(可能还有 macOS,我还没有检查)。一种补救措施是pip install simpleaudio安装后它将接管作为 pydub 的默认临时文件管理系统。