python - 使用python减小音频剪辑的音量时出错
问题描述
我尝试使用 . 降低或提高音频剪辑的音量pydub
。但是当我这样做时,它给出了以下错误。
c:/Users/KalyanDk/vsprojects/Games/playsound.py
C:\Users\KalyanDk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydub\utils.py:165: 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:\Users\KalyanDk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydub\utils.py:179: RuntimeWarning: Couldn't find ffplay or avplay - defaulting to ffplay, but may not work
warn("Couldn't find ffplay or avplay - defaulting to ffplay, but may not work", RuntimeWarning)
Traceback (most recent call last):
File "c:/Users/KalyanDk/vsprojects/Games/playsound.py", line 12, in <module>
play(louder_song)
File "C:\Users\KalyanDk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydub\playback.py", line 71, in play
_play_with_ffplay(audio_segment)
File "C:\Users\KalyanDk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydub\playback.py", line 18, in _play_with_ffplay
seg.export(f.name, "wav")
File "C:\Users\KalyanDk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydub\audio_segment.py", line 780, in export
out_f = _fd_or_path_or_tempfile(out_f, 'wb+')
File "C:\Users\KalyanDk\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydub\utils.py", line 57, in _fd_or_path_or_tempfile
fd = open(fd, mode=mode)
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\KalyanDk\\AppData\\Local\\Temp\\tmposf_nhdb.wav'
我无法理解出了什么问题..这是我的代码
from pydub import AudioSegment
from pydub.playback import play
song = AudioSegment.from_wav("Bounce.wav")
louder_song = song + 6
quieter_song = song - 3
play(louder_song)
louder_song.export("Bounce.wav", format='wav')'''
并且音频文件位于当前 python 文件所在的同一文件夹中。
解决方案
尝试安装 simpleaudio: pip install simpleaudio
PydubNamedTemporaryFile
在整个程序中多次使用,包括在 play() 方法中。NamedTemporaryFile 处理基本文件操作的方式在平台之间存在一些明显的不一致。我相信 simpleaudio 将绕过在 play() 方法中调用 NamedTemporaryFile 的代码,尽管我不清楚这是否解决了 pydub 中所有 NamedTemporaryFile 实例的问题。不过,Simpleaudio 确实为我解决了这个问题 - 无需配置,只需安装即可。
推荐阅读
- apache-spark - 为蒙特卡洛方法尝试 GCP 时出错
- azure - Azure 服务总线中每个实体的最大会话数
- php - 如何在 symfony 中创建一个附加用户的对象
- elasticsearch - Elasticsearch:查询无法返回正确的结果
- angular - 如何在angular4中为每个json数组使用
- microsoft-graph-api - 如何使用 Microsoft graph 获取匿名用户帐户的访问令牌?
- python - 使用 Unix Shell 脚本进行文件解析
- facebook-node-sdk - 广告创意帖子是由处于开发模式的应用创建的。必须在公开场合才能在 Facebook 广告中制作此广告
- r - 将特定列和行求和到 R 中的新矩阵
- python-3.x - 程序不会停止遍历列表