我有一个mp3文件,我想基本上绘制出该音频样本中存在的振幅频谱。我知道如果我们有一个wav文件,我们可以很容易地做到这一点。有很多python软件包可用于处理wav文件格式。但是,我不想将文件转换为wav格式,然后存储然后使用。我要实现的目标是直接获取mp3文件的幅度,即使我必须将其转换为wav格式,脚本也应该在运行时进行广播,而无需实际将文件存储在数据库中。我知道我们可以像下面这样转换文件:
from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")
sound.export("temp.wav", format="wav")
Run Code Online (Sandbox Code Playgroud)
并创建了预期的temp.wav,但是我们可以仅使用内容而不存储实际文件吗?
我试图从.mp3文件中获取原始声音数据。因此,我使用了此处所述的 pydub 模块。我venv为这个项目创建了一个并安装了所有必要的模块。但出于某种原因,pydub 决定给我一个FileNotFoundError:
(venv) Python-IT:LightsDev pythonit$ which python
/Users/pythonit/Documents/Programmieren/Python/LightsDev/venv/bin/python
(venv) Python-IT:LightsDev pythonit$ which pip3
/Users/pythonit/Documents/Programmieren/Python/LightsDev/venv/bin/pip3
(venv) Python-IT:LightsDev pythonit$ pip3 list
------------- -------
ffmpeg 1.4
pip 18.1
pydub 0.23.0
pyee 5.0.0
python-ffmpeg 1.0.5
setuptools 39.0.1
Run Code Online (Sandbox Code Playgroud)
我的确切代码如下所示:
from pydub import AudioSegment
sound = AudioSegment.from_mp3('test.mp3')
raw_data = sound._data
print(raw_data)
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'
Run Code Online (Sandbox Code Playgroud)
与此运行时警告一起:
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not …Run Code Online (Sandbox Code Playgroud)